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 5F8BB1FF16F for ; Fri, 29 Nov 2024 11:53:43 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 913DF16B5F; Fri, 29 Nov 2024 11:53:45 +0100 (CET) From: Shannon Sterz To: pbs-devel@lists.proxmox.com Date: Fri, 29 Nov 2024 11:53:18 +0100 Message-Id: <20241129105321.143877-1-s.sterz@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.039 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: [pbs-devel] [PATCH proxmox 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" YWRkIHRoZSBgcHJveG1veC1zZW5kbWFpbGAgY3JhdGUgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8g c2VuZCBtYWlscyB2aWEKdGhlIGBzZW5kbWFpbGAgdXRpbGl0eS4gZmVhdHVyZXMgaW5jbHVkZToK Ci0gbXVsdGlwYXJ0L2FsdGVybmF0aXZlIHN1cHBvcnQgZm9yIGh0bWwrcGxhaW4gdGV4dCBtYWls cwotIG11bGl0cGFydC9taXhlZCBzdXBwb3J0IGZvciBtYWlscyB3aXRoIGF0dGFjaG1lbnRzCi0g YXV0b21hdGljIG5lc3Rpbmcgb2YgbXVsdGlwYXJ0L2FsdGVybmF0aXZlIGFuZCBtdWx0aXBhcnQv bWl4ZWQgcGFydHMKLSBtYXNraW5nIHJlY2lwaWVudHMgdG8gYXZvaWQgZGlzY2xvc2luZyB0aGVt IHRvIGV2ZXJ5b25lCi0gZW5jb2RpbmcgU3ViamVjdCwgVG8sIEZyb20sIGFuZCBhdHRhY2htZW50 IGZpbGUgbmFtZXMgY29ycmVjdGx5Ci0gYWRkaW5nIGFuIGBBdXRvLVN1Ym1pdHRlZGAgaGVhZGVy IHRvIGF2b2lkIHRyaWdnZXJpbmcgYXV0b21hdGVkIG1haWxzCgphbHNvIGluY2x1ZGVzIHNldmVy YWwgdGVzdHMgdG8gZW5zdXJlIHRoYXQgbWFpbHMgYXJlIGZvcm1hdHRlZApjb3JyZWN0bHkuCgpT aWduZWQtb2ZmLWJ5OiBTaGFubm9uIFN0ZXJ6IDxzLnN0ZXJ6QHByb3htb3guY29tPgotLS0KIENh cmdvLnRvbWwgICAgICAgICAgICAgICAgICB8ICAgMiArCiBwcm94bW94LXNlbmRtYWlsL0Nhcmdv LnRvbWwgfCAgMTYgKwogcHJveG1veC1zZW5kbWFpbC9zcmMvbGliLnJzIHwgNjY0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2ODIgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2VuZG1haWwvQ2FyZ28udG9tbAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2VuZG1haWwvc3JjL2xpYi5ycwoKZGlmZiAtLWdp dCBhL0NhcmdvLnRvbWwgYi9DYXJnby50b21sCmluZGV4IDg0ZmJlOTc5Li5iNjJmY2Q1MCAxMDA2 NDQKLS0tIGEvQ2FyZ28udG9tbAorKysgYi9DYXJnby50b21sCkBAIC0zMyw2ICszMyw3IEBAIG1l bWJlcnMgPSBbCiAgICAgInByb3htb3gtcnJkLWFwaS10eXBlcyIsCiAgICAgInByb3htb3gtc2No ZW1hIiwKICAgICAicHJveG1veC1zZWN0aW9uLWNvbmZpZyIsCisgICAgInByb3htb3gtc2VuZG1h aWwiLAogICAgICJwcm94bW94LXNlcmRlIiwKICAgICAicHJveG1veC1zaGFyZWQtY2FjaGUiLAog ICAgICJwcm94bW94LXNoYXJlZC1tZW1vcnkiLApAQCAtMTM4LDYgKzEzOSw3IEBAIHByb3htb3gt cmVzdC1zZXJ2ZXIgPSB7IHZlcnNpb24gPSAiMC44LjAiLCBwYXRoID0gInByb3htb3gtcmVzdC1z ZXJ2ZXIiIH0KIHByb3htb3gtcm91dGVyID0geyB2ZXJzaW9uID0gIjMuMC4wIiwgcGF0aCA9ICJw cm94bW94LXJvdXRlciIgfQogcHJveG1veC1zY2hlbWEgPSB7IHZlcnNpb24gPSAiMy4xLjIiLCBw YXRoID0gInByb3htb3gtc2NoZW1hIiB9CiBwcm94bW94LXNlY3Rpb24tY29uZmlnID0geyB2ZXJz aW9uID0gIjIuMS4wIiwgcGF0aCA9ICJwcm94bW94LXNlY3Rpb24tY29uZmlnIiB9Citwcm94bW94 LXNlbmRtYWlsID0geyB2ZXJzaW9uID0gIjAuMS4wIiwgcGF0aCA9ICJwcm94bW94LXNlbmRtYWls IiB9CiBwcm94bW94LXNlcmRlID0geyB2ZXJzaW9uID0gIjAuMS4xIiwgcGF0aCA9ICJwcm94bW94 LXNlcmRlIiwgZmVhdHVyZXMgPSBbICJzZXJkZV9qc29uIiBdIH0KIHByb3htb3gtc2hhcmVkLW1l bW9yeSA9IHsgdmVyc2lvbiA9ICIwLjMuMCIsIHBhdGggPSAicHJveG1veC1zaGFyZWQtbWVtb3J5 IiB9CiBwcm94bW94LXNvcnRhYmxlLW1hY3JvID0geyB2ZXJzaW9uID0gIjAuMS4zIiwgcGF0aCA9 ICJwcm94bW94LXNvcnRhYmxlLW1hY3JvIiB9CmRpZmYgLS1naXQgYS9wcm94bW94LXNlbmRtYWls L0NhcmdvLnRvbWwgYi9wcm94bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAuLjc5MGIzMjRiCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1v eC1zZW5kbWFpbC9DYXJnby50b21sCkBAIC0wLDAgKzEsMTYgQEAKK1twYWNrYWdlXQorbmFtZSA9 ICJwcm94bW94LXNlbmRtYWlsIgordmVyc2lvbiA9ICIwLjEuMCIKK2F1dGhvcnMud29ya3NwYWNl ID0gdHJ1ZQorZWRpdGlvbi53b3Jrc3BhY2UgPSB0cnVlCitsaWNlbnNlLndvcmtzcGFjZSA9IHRy dWUKK3JlcG9zaXRvcnkud29ya3NwYWNlID0gdHJ1ZQoraG9tZXBhZ2Uud29ya3NwYWNlID0gdHJ1 ZQorZXhjbHVkZS53b3Jrc3BhY2UgPSB0cnVlCitydXN0LXZlcnNpb24ud29ya3NwYWNlID0gdHJ1 ZQorCitbZGVwZW5kZW5jaWVzXQorYW55aG93ID0geyB3b3Jrc3BhY2UgPSB0cnVlIH0KK2Jhc2U2 NCA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9CitwZXJjZW50LWVuY29kaW5nID0geyB3b3Jrc3BhY2Ug PSB0cnVlIH0KK3Byb3htb3gtdGltZSA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9CmRpZmYgLS1naXQg YS9wcm94bW94LXNlbmRtYWlsL3NyYy9saWIucnMgYi9wcm94bW94LXNlbmRtYWlsL3NyYy9saWIu cnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmM5N2MzMTg2Ci0tLSAvZGV2 L251bGwKKysrIGIvcHJveG1veC1zZW5kbWFpbC9zcmMvbGliLnJzCkBAIC0wLDAgKzEsNjY0IEBA CisvLyEKKy8vISBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyB0aGUgW2BNYWlsYF0gdHJhaXQgd2hp Y2ggbWFrZXMgaXQgZWFzeSB0byBzZW5kIGVtYWlscyB3aXRoIGF0dGFjaG1lbnRzCisvLyEgYW5k IGFsdGVybmF0aXZlIGh0bWwgcGFydHMgdG8gb25lIG9yIG11bHRpcGxlIHJlY2VpdmVycyB2aWEg YGBzZW5kbWFpbGBgLgorLy8hCisKK3VzZSBzdGQ6OmlvOjpXcml0ZTsKK3VzZSBzdGQ6OnByb2Nl c3M6OntDb21tYW5kLCBTdGRpb307CisKK3VzZSBhbnlob3c6OntiYWlsLCBDb250ZXh0LCBFcnJv cn07Cit1c2UgcGVyY2VudF9lbmNvZGluZzo6e3V0ZjhfcGVyY2VudF9lbmNvZGUsIEFzY2lpU2V0 LCBDT05UUk9MU307CisKKy8vIENoYXJhY3RlcnMgaW4gdGhpcyBzZXQgd2lsbCBiZSBlbmNvZGVk LCBzbyByZXByb2R1Y2UgdGhlIGludmVyc2Ugb2YgdGhlIHNldCBkZXNjcmliZWQgYnkgUkZDNTk4 NworLy8gU2VjdGlvbiAzLjIuMSBgYXR0ci1jaGFyYCwgYXMgdGhhdCBkZXNjcmliZXMgYWxsIGNo YXJhY3RlcnMgdGhhdCAqKmRvbid0KiogbmVlZCBlbmNvZGluZzoKKy8vCisvLyBodHRwczovL2Rh dGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzU5ODcjc2VjdGlvbi0zLjIuMQorLy8KKy8v IGBDT05UUk9MU2AgY29udGFpbnMgYWxsIGNvbnRyb2wgY2hhcmFjdGVycyAweDAwIC0gMHgxZiBh bmQgMHg3ZiBhcyB3ZWxsIGFzIGFsbCBub24tYXNjaWkKKy8vIGNoYXJhY3RlcnMsIHNvIHdlIG5l ZWQgdG8gYWRkIGFsbCBjaGFyYWN0ZXJzIGhlcmUgdGhhdCBhcmVuJ3QgZGVzY3JpYmVkIGluIGBh dHRyLWNoYXJgIHRoYXQgYXJlCisvLyBpbiB0aGUgcmFuZ2UgMHgyMC0weDdlCitjb25zdCBSRkM1 OTg3U0VUOiAmQXNjaWlTZXQgPSAmQ09OVFJPTFMKKyAgICAuYWRkKGInICcpCisgICAgLmFkZChi JyInKQorICAgIC5hZGQoYiclJykKKyAgICAuYWRkKGInJicpCisgICAgLmFkZChiJ1wnJykKKyAg ICAuYWRkKGInKCcpCisgICAgLmFkZChiJyknKQorICAgIC5hZGQoYicqJykKKyAgICAuYWRkKGIn LCcpCisgICAgLmFkZChiJy8nKQorICAgIC5hZGQoYic6JykKKyAgICAuYWRkKGInOycpCisgICAg LmFkZChiJzwnKQorICAgIC5hZGQoYic9JykKKyAgICAuYWRkKGInPicpCisgICAgLmFkZChiJz8n KQorICAgIC5hZGQoYidAJykKKyAgICAuYWRkKGInWycpCisgICAgLmFkZChiJ1xcJykKKyAgICAu YWRkKGInXScpCisgICAgLmFkZChiJ3snKQorICAgIC5hZGQoYid9Jyk7CisKK3N0cnVjdCBSZWNp cGllbnQgeworICAgIG5hbWU6IE9wdGlvbjxTdHJpbmc+LAorICAgIGVtYWlsOiBTdHJpbmcsCit9 CisKK3N0cnVjdCBBdHRhY2htZW50PCdhPiB7CisgICAgZmlsZW5hbWU6IFN0cmluZywKKyAgICBt aW1lOiBTdHJpbmcsCisgICAgY29udGVudDogJidhIFt1OF0sCit9CisKK3B1YiBzdHJ1Y3QgTWFp bDwnYT4geworICAgIG1haWxfYXV0aG9yOiBTdHJpbmcsCisgICAgbWFpbF9mcm9tOiBTdHJpbmcs CisgICAgc3ViamVjdDogU3RyaW5nLAorICAgIHRvOiBWZWM8UmVjaXBpZW50PiwKKyAgICBib2R5 X3R4dDogU3RyaW5nLAorICAgIGJvZHlfaHRtbDogT3B0aW9uPFN0cmluZz4sCisgICAgYXR0YWNo bWVudHM6IFZlYzxBdHRhY2htZW50PCdhPj4sCit9CisKK2ltcGw8J2E+IE1haWw8J2E+IHsKKyAg ICAvLy8gQ3JlYXRlcyBhIG5ldyBtYWlsIHdpdGggYSBtYWlsIGF1dGhvciwgZnJvbSBhZGRyZXNz LCBzdWJqZWN0IGxpbmUgYW5kIGEgcGxhaW4gdGV4dCBib2R5LgorICAgIC8vLworICAgIC8vLyBO b3RlOiBJZiB0aGUgYXV0aG9yJ3MgbmFtZSBvciB0aGUgc3ViamVjdCBsaW5lIGNvbnRhaW5zIFVU Ri04IGNoYXJhY3RlcnMgdGhleSB3aWxsIGJlCisgICAgLy8vIGFwcHJvcHJpYXRlbGx5IGVuY29k ZWQuCisgICAgcHViIGZuIG5ldyhtYWlsX2F1dGhvcjogJnN0ciwgbWFpbF9mcm9tOiAmc3RyLCBz dWJqZWN0OiAmc3RyLCBib2R5X3R4dDogJnN0cikgLT4gU2VsZiB7CisgICAgICAgIFNlbGYgewor ICAgICAgICAgICAgbWFpbF9hdXRob3I6IG1haWxfYXV0aG9yLnRvX3N0cmluZygpLAorICAgICAg ICAgICAgbWFpbF9mcm9tOiBtYWlsX2Zyb20udG9fc3RyaW5nKCksCisgICAgICAgICAgICBzdWJq ZWN0OiBzdWJqZWN0LnRvX3N0cmluZygpLAorICAgICAgICAgICAgdG86IFZlYzo6bmV3KCksCisg ICAgICAgICAgICBib2R5X3R4dDogYm9keV90eHQudG9fc3RyaW5nKCksCisgICAgICAgICAgICBi b2R5X2h0bWw6IE5vbmUsCisgICAgICAgICAgICBhdHRhY2htZW50czogVmVjOjpuZXcoKSwKKyAg ICAgICAgfQorICAgIH0KKworICAgIC8vLyBBZGRzIGEgcmVjaXBpZW50IHRvIHRoZSBtYWlsIHdp dGhvdXQgc3BlY2lmeWluZyBhIG5hbWUgc2VwYXJhdGVseS4KKyAgICAvLy8KKyAgICAvLy8gTm90 ZTogTm8gZm9ybWF0dGluZyBvciBlbmNvZGluZyB3aWxsIGJlIGRvbmUgaGVyZSwgdGhlIHZhbHVl IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgVG86YAorICAgIC8vLyBoZWFkZXIgZGlyZWN0bHkuCisg ICAgcHViIGZuIGFkZF9yZWNpcGllbnQoJm11dCBzZWxmLCBlbWFpbDogJnN0cikgeworICAgICAg ICBzZWxmLnRvLnB1c2goUmVjaXBpZW50IHsKKyAgICAgICAgICAgIG5hbWU6IE5vbmUsCisgICAg ICAgICAgICBlbWFpbDogZW1haWwudG9fc3RyaW5nKCksCisgICAgICAgIH0pOworICAgIH0KKwor ICAgIC8vLyBCdWlsZGVyLXBhdHRlcm4gbWV0aG9kIHRvIGNvbnZlbmllbnRseSBhZGQgYSByZWNp cGllbnQgdG8gYW4gZW1haWwgd2l0aG91dCBzcGVjaWZ5aW5nIGEKKyAgICAvLy8gbmFtZSBzZXBh cmF0ZWx5LgorICAgIC8vLworICAgIC8vLyBOb3RlOiBObyBmb3JtYXR0aW5nIG9yIGVuY29kaW5n IHdpbGwgYmUgZG9uZSBoZXJlLCB0aGUgdmFsdWUgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBUbzpg CisgICAgLy8vIGhlYWRlciBkaXJlY3RseS4KKyAgICBwdWIgZm4gd2l0aF9yZWNpcGllbnQobXV0 IHNlbGYsIGVtYWlsOiAmc3RyKSAtPiBTZWxmIHsKKyAgICAgICAgc2VsZi5hZGRfcmVjaXBpZW50 KGVtYWlsKTsKKyAgICAgICAgc2VsZgorICAgIH0KKworICAgIC8vLyBBZGRzIGEgcmVjaXBpZW50 IHRvIHRoZSBtYWlsIHdpdGggYSBuYW1lLgorICAgIC8vLworICAgIC8vLyBOb3RlczoKKyAgICAv Ly8KKyAgICAvLy8gLSBJZiB0aGUgbmFtZSBjb250YWlucyBVVEYtOCBjaGFyYWN0ZXJzIGl0IHdp bGwgYmUgZW5jb2RlZC4gVGhlbiB0aGUgcG9zc2libHkgZW5jb2RlZCBuYW1lCisgICAgLy8vICAg YW5kIG5vbi1lbmNvZGVkIGVtYWlsIGFkZHJlc3Mgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBUbzpg IGhlYWRlciBpbiB0aGlzIGZvcm1hdDoKKyAgICAvLy8gICBge2VuY29kZWRfbmFtZX0gPHtlbWFp bH0+YAorICAgIC8vLyAtIElmIG11bHRpcGxlIHJlY2VpdmVycyBhcmUgc3BlY2lmaWVkLCB0aGV5 IHdpbGwgYmUgbWFza2VkIHNvIGFzIG5vdCB0byBkaXNjbG9zZSB0aGVtIHRvCisgICAgLy8vICAg b3RoZXIgcmVjZWl2ZXJzLgorICAgIHB1YiBmbiBhZGRfcmVjaXBpZW50X2FuZF9uYW1lKCZtdXQg c2VsZiwgbmFtZTogJnN0ciwgZW1haWw6ICZzdHIpIHsKKyAgICAgICAgc2VsZi50by5wdXNoKFJl Y2lwaWVudCB7CisgICAgICAgICAgICBuYW1lOiBTb21lKG5hbWUudG9fc3RyaW5nKCkpLAorICAg ICAgICAgICAgZW1haWw6IGVtYWlsLnRvX3N0cmluZygpLAorICAgICAgICB9KTsKKyAgICB9CisK KyAgICAvLy8gQnVpbGRlci1zdHlsZSBtZXRob2QgdG8gY29udmVuaWVudGx5IGFkZCBhIHJlY2ll cGllbnQgd2l0aCBhIG5hbWUgdG8gYW4gZW1haWwuCisgICAgLy8vCisgICAgLy8vIE5vdGVzOgor ICAgIC8vLworICAgIC8vLyAtIElmIHRoZSBuYW1lIGNvbnRhaW5zIFVURi04IGNoYXJhY3RlcnMg aXQgd2lsbCBiZSBlbmNvZGVkLiBUaGVuIHRoZSBwb3NzaWJseSBlbmNvZGVkIG5hbWUKKyAgICAv Ly8gICBhbmQgbm9uLWVuY29kZWQgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUg YFRvOmAgaGVhZGVyIGluIHRoaXMgZm9ybWF0OgorICAgIC8vLyAgIGB7ZW5jb2RlZF9uYW1lfSA8 e2VtYWlsfT5gCisgICAgLy8vIC0gSWYgbXVsdGlwbGUgcmVjZWl2ZXJzIGFyZSBzcGVjaWZpZWQs IHRoZXkgd2lsbCBiZSBtYXNrZWQgc28gYXMgbm90IHRvIGRpc2Nsb3NlIHRoZW0gdG8KKyAgICAv Ly8gICBvdGhlciByZWNlaXZlcnMuCisgICAgcHViIGZuIHdpdGhfcmVjaXBpZW50X2FuZF9uYW1l KG11dCBzZWxmLCBuYW1lOiAmc3RyLCBlbWFpbDogJnN0cikgLT4gU2VsZiB7CisgICAgICAgIHNl bGYuYWRkX3JlY2lwaWVudF9hbmRfbmFtZShuYW1lLCBlbWFpbCk7CisgICAgICAgIHNlbGYKKyAg ICB9CisKKyAgICAvLy8gQWRkcyBhbiBhdHRhY2htZW50IHdpdGggYSBzcGVjaWZpZWQgZmlsZSBu YW1lIGFuZCBtaW1lLXR5cGUgdG8gYW4gZW1haWwuCisgICAgLy8vCisgICAgLy8vIE5vdGU6IEFk ZGluZyBhdHRhY2hlbWVudHMgdHJpZ2dlcnMgYG11bHRpcGFydC9taXhlZGAgbW9kZS4KKyAgICBw dWIgZm4gYWRkX2F0dGFjaG1lbnQoJm11dCBzZWxmLCBmaWxlbmFtZTogJnN0ciwgbWltZV90eXBl OiAmc3RyLCBjb250ZW50OiAmJ2EgW3U4XSkgeworICAgICAgICBzZWxmLmF0dGFjaG1lbnRzLnB1 c2goQXR0YWNobWVudCB7CisgICAgICAgICAgICBmaWxlbmFtZTogZmlsZW5hbWUudG9fc3RyaW5n KCksCisgICAgICAgICAgICBtaW1lOiBtaW1lX3R5cGUudG9fc3RyaW5nKCksCisgICAgICAgICAg ICBjb250ZW50LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvLy8gQnVpbGRlci1zdHlsZSBt ZXRob2QgdG8gY29udmVuaWVudGx5IGFkZCBhbiBhdHRhY2htZW50IHdpdGggYSBzcGVjaWZpYyBm aWxlbmFtZSBhbmQKKyAgICAvLy8gbWltZS10eXBlIHRvIGFuIGVtYWlsLgorICAgIC8vLworICAg IC8vLyBOb3RlOiBBZGRpbmcgYXR0YWNoZW1lbnRzIHRyaWdnZXJzIGBtdWx0aXBhcnQvbWl4ZWRg IG1vZGUuCisgICAgcHViIGZuIHdpdGhfYXR0YWNobWVudChtdXQgc2VsZiwgZmlsZW5hbWU6ICZz dHIsIG1pbWVfdHlwZTogJnN0ciwgY29udGVudDogJidhIFt1OF0pIC0+IFNlbGYgeworICAgICAg ICBzZWxmLmFkZF9hdHRhY2htZW50KGZpbGVuYW1lLCBtaW1lX3R5cGUsIGNvbnRlbnQpOworICAg ICAgICBzZWxmCisgICAgfQorCisgICAgLy8vIFNldCBhbiBhbHRlcm5hdGl2ZSBIVE1MIHBhcnQu CisgICAgLy8vCisgICAgLy8vIE5vdGU6IFRoaXMgdHJpZ2dlcnMgYG11bHRpcGFydC9hbHRlcm5h dGl2ZWAgbW9kZS4gSWYgYm90aCBhbiBIVE1MIHBhcnQgYW5kIGF0IGxlYXN0IG9uZQorICAgIC8v LyBhdHRhY2hlbWVudCBhcmUgc3BlY2lmaWVkLCB0aGUgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWAg cGFydCB3aWxsIGJlIG5lc3RlZCB3aXRoaW4gdGhlIGZpcnN0CisgICAgLy8vIGBtdWx0aXBhcnQv bWl4ZWRgIHBhcnQuIFRoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBIVE1MIGlzIGRpc3BsYXll ZCBwcm9wZXJseSBieSBjbGllbnQncworICAgIC8vLyB0aGF0IHByaW9yaXRpemUgaXQgb3ZlciB0 aGUgcGxhaW4gdGV4dCBwYXJ0IChzaG91bGQgYmUgdGhlIGRlZmF1bHQgZm9yIG1vc3QgY2xpZW50 cykgd2hpbGUKKyAgICAvLy8gYWxzbyBwcm9wZXJseSBkaXNwbGF5aW5nIHRoZSBhdHRhY2htZW50 cy4KKyAgICBwdWIgZm4gc2V0X2h0bWxfYWx0KCZtdXQgc2VsZiwgYm9keV9odG1sOiAmc3RyKSB7 CisgICAgICAgIHNlbGYuYm9keV9odG1sLnJlcGxhY2UoYm9keV9odG1sLnRvX3N0cmluZygpKTsK KyAgICB9CisKKyAgICAvLy8gQnVpbGRlci1zdHlsZSBtZXRob2QgdG8gYWRkIGFuIGFsdGVybmF0 aXZlIEhUTUwgcGFydC4KKyAgICAvLy8KKyAgICAvLy8gTm90ZTogVGhpcyB0cmlnZ2VycyBgbXVs dGlwYXJ0L2FsdGVybmF0aXZlYCBtb2RlLiBJZiBib3RoIGFuIEhUTUwgcGFydCBhbmQgYXQgbGVh c3Qgb25lCisgICAgLy8vIGF0dGFjaGVtZW50IGFyZSBzcGVjaWZpZWQsIHRoZSBgbXVsdGlwYXJ0 L2FsdGVybmF0aXZlYCBwYXJ0IHdpbGwgYmUgbmVzdGVkIHdpdGhpbiB0aGUgZmlyc3QKKyAgICAv Ly8gYG11bHRpcGFydC9taXhlZGAgcGFydC4gVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIEhU TUwgaXMgZGlzcGxheWVkIHByb3Blcmx5IGJ5IGNsaWVudCdzCisgICAgLy8vIHRoYXQgcHJpb3Jp dGl6ZSBpdCBvdmVyIHRoZSBwbGFpbiB0ZXh0IHBhcnQgKHNob3VsZCBiZSB0aGUgZGVmYXVsdCBm b3IgbW9zdCBjbGllbnRzKSB3aGlsZQorICAgIC8vLyBhbHNvIHByb3Blcmx5IGRpc3BsYXlpbmcg dGhlIGF0dGFjaG1lbnRzLgorICAgIHB1YiBmbiB3aXRoX2h0bWxfYWx0KG11dCBzZWxmLCBib2R5 X2h0bWw6ICZzdHIpIC0+IFNlbGYgeworICAgICAgICBzZWxmLnNldF9odG1sX2FsdChib2R5X2h0 bWwpOworICAgICAgICBzZWxmCisgICAgfQorCisgICAgLy8vIFNlbmRzIHRoZSBlbWFpbC4gVGhp cyB3aWxsIGZhaWwgaWYgbm8gcmVjaWVwaWVudCdzIGhhdmUgYmVlbiBhZGRlZC4KKyAgICAvLy8K KyAgICAvLy8gTm90ZTogQW4gYEF1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZGAgaGVhZGVy IGlzIGFkZGVkIHRvIGF2b2lkIHRyaWdnZXJpbmcgT09PIGFuZAorICAgIC8vLyBzaW1pbGFyIG1h aWxzLgorICAgIHB1YiBmbiBzZW5kKCZzZWxmKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7CisgICAg ICAgIGlmIHNlbGYudG8uaXNfZW1wdHkoKSB7CisgICAgICAgICAgICBiYWlsISgibm8gcmVjaXBp ZW50cyBwcm92aWRlZCBmb3IgdGhlIG1haWwsIGNhbm5vdCBzZW5kIGl0LiIpOworICAgICAgICB9 CisKKyAgICAgICAgbGV0IG5vdyA9IHByb3htb3hfdGltZTo6ZXBvY2hfaTY0KCk7CisgICAgICAg IGxldCBib2R5ID0gc2VsZi5mb3JtYXRfbWFpbChub3cpPzsKKworICAgICAgICBsZXQgbXV0IHNl bmRtYWlsX3Byb2Nlc3MgPSBDb21tYW5kOjpuZXcoIi91c3Ivc2Jpbi9zZW5kbWFpbCIpCisgICAg ICAgICAgICAuYXJnKCItQiIpCisgICAgICAgICAgICAuYXJnKCI4QklUTUlNRSIpCisgICAgICAg ICAgICAuYXJnKCItZiIpCisgICAgICAgICAgICAuYXJnKCZzZWxmLm1haWxfZnJvbSkKKyAgICAg ICAgICAgIC5hcmcoIi0tIikKKyAgICAgICAgICAgIC5hcmdzKHNlbGYudG8uaXRlcigpLm1hcCh8 cHwgJnAuZW1haWwpLmNvbGxlY3Q6OjxWZWM8JlN0cmluZz4+KCkpCisgICAgICAgICAgICAuc3Rk aW4oU3RkaW86OnBpcGVkKCkpCisgICAgICAgICAgICAuc3Bhd24oKQorICAgICAgICAgICAgLndp dGhfY29udGV4dCh8fCAiY291bGQgbm90IHNwYXduIHNlbmRtYWlsIHByb2Nlc3MiKT87CisKKyAg ICAgICAgc2VuZG1haWxfcHJvY2VzcworICAgICAgICAgICAgLnN0ZGluCisgICAgICAgICAgICAu YXNfcmVmKCkKKyAgICAgICAgICAgIC51bndyYXAoKQorICAgICAgICAgICAgLndyaXRlX2FsbChi b2R5LmFzX2J5dGVzKCkpCisgICAgICAgICAgICAud2l0aF9jb250ZXh0KHx8ICJjb3VsZG4ndCB3 cml0ZSB0byBzZW5kbWFpbCBzdGRpbiIpPzsKKworICAgICAgICBzZW5kbWFpbF9wcm9jZXNzCisg ICAgICAgICAgICAud2FpdCgpCisgICAgICAgICAgICAud2l0aF9jb250ZXh0KHx8ICJzZW5kbWFp bCBkaWQgbm90IGV4aXQgc3VjY2Vzc2Z1bGx5Iik/OworCisgICAgICAgIE9rKCgpKQorICAgIH0K KworICAgIGZuIGZvcm1hdF9tYWlsKCZzZWxmLCBub3c6IGk2NCkgLT4gUmVzdWx0PFN0cmluZywg RXJyb3I+IHsKKyAgICAgICAgbGV0IG11dCBib2R5ID0gU3RyaW5nOjpuZXcoKTsKKyAgICAgICAg bGV0IGZpbGVfYm91bmRhcnkgPSBmb3JtYXQhKCItLS0tXz1fTmV4dFBhcnRfMDAxX3t9Iiwgbm93 KTsKKyAgICAgICAgbGV0IGh0bWxfYm91bmRhcnkgPSBmb3JtYXQhKCItLS0tXz1fTmV4dFBhcnRf MDAyX3t9Iiwgbm93KTsKKworICAgICAgICBsZXQgdG8gPSBpZiBzZWxmLnRvLmxlbigpID4gMSB7 CisgICAgICAgICAgICAvLyBkb24ndCBkaXNjbG9zZSBhbGwgcmVjaXBpZW50cyBpZiB0aGUgbWFp bCBnb2VzIG91dCB0byBtdWx0aXBsZQorICAgICAgICAgICAgJlJlY2lwaWVudCB7CisgICAgICAg ICAgICAgICAgbmFtZTogU29tZSgiVW5kaXNjbG9zZWQiLnRvX3N0cmluZygpKSwKKyAgICAgICAg ICAgICAgICBlbWFpbDogIm5vcmVwbHkiLnRvX3N0cmluZygpLAorICAgICAgICAgICAgfQorICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi50bworICAgICAgICAgICAgICAgIC5maXJz dCgpCisgICAgICAgICAgICAgICAgLmV4cGVjdCgidGhlIGNoZWNrcyBiZWZvcmUgbWFrZSBzdXJl IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSByZWNpcGllbnQiKQorICAgICAgICB9OworCisgICAgICAg IGlmICFzZWxmLmF0dGFjaG1lbnRzLmlzX2VtcHR5KCkgeworICAgICAgICAgICAgYm9keS5wdXNo X3N0cigiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7XG4iKTsKKyAgICAgICAgICAgIGJv ZHkucHVzaF9zdHIoJmZvcm1hdCEoIlx0Ym91bmRhcnk9XCJ7ZmlsZV9ib3VuZGFyeX1cIlxuIikp OworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiTUlNRS1WZXJzaW9uOiAxLjBcbiIpOworICAg ICAgICB9IGVsc2UgaWYgc2VsZi5ib2R5X2h0bWwuaXNfc29tZSgpIHsKKyAgICAgICAgICAgIGJv ZHkucHVzaF9zdHIoIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlO1xuIik7Cisg ICAgICAgICAgICBib2R5LnB1c2hfc3RyKCZmb3JtYXQhKCJcdGJvdW5kYXJ5PVwie2h0bWxfYm91 bmRhcnl9XCJcbiIpKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIk1JTUUtVmVyc2lvbjog MS4wXG4iKTsKKyAgICAgICAgfSBlbHNlIGlmICFzZWxmLnN1YmplY3QuaXNfYXNjaWkoKQorICAg ICAgICAgICAgfHwgIXNlbGYubWFpbF9hdXRob3IuaXNfYXNjaWkoKQorICAgICAgICAgICAgfHwg IXRvLm5hbWUuYXNfcmVmKCkubWFwKHx0fCB0LmlzX2FzY2lpKCkpLnVud3JhcF9vcih0cnVlKQor ICAgICAgICB7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJNSU1FLVZlcnNpb246IDEuMFxu Iik7CisgICAgICAgIH0KKworICAgICAgICBsZXQgc3ViamVjdCA9IGlmICFzZWxmLnN1YmplY3Qu aXNfYXNjaWkoKSB7CisgICAgICAgICAgICBmb3JtYXQhKCJTdWJqZWN0OiA9P3V0Zi04P0I/e30/ PVxuIiwgYmFzZTY0OjplbmNvZGUoJnNlbGYuc3ViamVjdCkpCisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBmb3JtYXQhKCJTdWJqZWN0OiB7fVxuIiwgc2VsZi5zdWJqZWN0KQorICAgICAg ICB9OworCisgICAgICAgIGJvZHkucHVzaF9zdHIoJnN1YmplY3QpOworCisgICAgICAgIGxldCBm cm9tID0gaWYgIXNlbGYubWFpbF9hdXRob3IuaXNfYXNjaWkoKSB7CisgICAgICAgICAgICBmb3Jt YXQhKAorICAgICAgICAgICAgICAgICJGcm9tOiA9P3V0Zi04P0I/e30/PSA8e30+XG4iLAorICAg ICAgICAgICAgICAgIGJhc2U2NDo6ZW5jb2RlKCZzZWxmLm1haWxfYXV0aG9yKSwKKyAgICAgICAg ICAgICAgICBzZWxmLm1haWxfZnJvbQorICAgICAgICAgICAgKQorICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgZm9ybWF0ISgiRnJvbToge30gPHt9PlxuIiwgc2VsZi5tYWlsX2F1dGhvciwg c2VsZi5tYWlsX2Zyb20pCisgICAgICAgIH07CisKKyAgICAgICAgYm9keS5wdXNoX3N0cigmZnJv bSk7CisKKyAgICAgICAgbGV0IHRvID0gaWYgbGV0IFNvbWUobmFtZSkgPSAmdG8ubmFtZSB7Cisg ICAgICAgICAgICBpZiAhbmFtZS5pc19hc2NpaSgpIHsKKyAgICAgICAgICAgICAgICBmb3JtYXQh KCJUbzogPT91dGYtOD9CP3t9Pz0gPHt9PlxuIiwgYmFzZTY0OjplbmNvZGUoJm5hbWUpLCB0by5l bWFpbCkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9ybWF0ISgiVG86 IHt9IDx7fT5cbiIsIG5hbWUsIHRvLmVtYWlsKQorICAgICAgICAgICAgfQorICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgZm9ybWF0ISgiVG86IHt9XG4iLCB0by5lbWFpbCkKKyAgICAgICAg fTsKKworICAgICAgICBib2R5LnB1c2hfc3RyKCZ0byk7CisKKyAgICAgICAgbGV0IHJmYzI4MjJf ZGF0ZSA9IHByb3htb3hfdGltZTo6ZXBvY2hfdG9fcmZjMjgyMihub3cpCisgICAgICAgICAgICAu d2l0aF9jb250ZXh0KHx8ICJjb3VsZCBub3QgY29udmVydCBlcG9jaCB0byByZmMyODIyIGRhdGUi KT87CisgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIkRhdGU6IHtyZmMyODIyX2RhdGV9 XG4iKSk7CisgICAgICAgIGJvZHkucHVzaF9zdHIoIkF1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVy YXRlZDtcbiIpOworCisgICAgICAgIGlmIHNlbGYuYm9keV9odG1sLmlzX3NvbWUoKSAmJiAhc2Vs Zi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIlxu VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC5cbiIpOworICAgICAg ICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtmaWxlX2JvdW5kYXJ5fVxuIikpOwor ICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgKKyAgICAgICAgICAgICAgICAiQ29u dGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5PVwie2h0bWxfYm91bmRh cnl9XCJcbiIKKyAgICAgICAgICAgICkpOworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiTUlN RS1WZXJzaW9uOiAxLjBcbiIpOworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgi XG4tLXtodG1sX2JvdW5kYXJ5fVxuIikpOworICAgICAgICB9IGVsc2UgaWYgc2VsZi5ib2R5X2h0 bWwuaXNfc29tZSgpIHsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIlxuVGhpcyBpcyBhIG11 bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC5cbiIpOworICAgICAgICAgICAgYm9keS5w dXNoX3N0cigmZm9ybWF0ISgiXG4tLXtodG1sX2JvdW5kYXJ5fVxuIikpOworICAgICAgICB9IGVs c2UgaWYgc2VsZi5ib2R5X2h0bWwuaXNfbm9uZSgpICYmICFzZWxmLmF0dGFjaG1lbnRzLmlzX2Vt cHR5KCkgeworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiXG5UaGlzIGlzIGEgbXVsdGktcGFy dCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LlxuIik7CisgICAgICAgICAgICBib2R5LnB1c2hfc3Ry KCZmb3JtYXQhKCJcbi0te2ZpbGVfYm91bmRhcnl9XG4iKSk7CisgICAgICAgIH0KKworICAgICAg ICBib2R5LnB1c2hfc3RyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XG4iKTsKKyAgICAgICAg Ym9keS5wdXNoX3N0cigiXHRjaGFyc2V0PVwiVVRGLThcIlxuIik7CisgICAgICAgIGJvZHkucHVz aF9zdHIoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcblxuIik7CisgICAgICAgIGJv ZHkucHVzaF9zdHIoJnNlbGYuYm9keV90eHQpOworCisgICAgICAgIGlmIGxldCBTb21lKGh0bWwp ID0gJnNlbGYuYm9keV9odG1sIHsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEo IlxuLS17aHRtbF9ib3VuZGFyeX1cbiIpKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIkNv bnRlbnQtVHlwZTogdGV4dC9odG1sO1xuIik7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJc dGNoYXJzZXQ9XCJVVEYtOFwiXG4iKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcblxuIik7CisgICAgICAgICAgICBib2R5LnB1c2hf c3RyKGh0bWwpOworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtodG1s X2JvdW5kYXJ5fS0tIikpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIGF0dGFjaG1lbnQgaW4g JnNlbGYuYXR0YWNobWVudHMgeworICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gJmF0dGFjaG1l bnQuZmlsZW5hbWU7CisKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17 ZmlsZV9ib3VuZGFyeX1cbiIpKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEo CisgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZToge307IG5hbWU9XCJ7ZmlsZW5hbWV9XCJc biIsCisgICAgICAgICAgICAgICAgYXR0YWNobWVudC5taW1lCisgICAgICAgICAgICApKTsKKwor ICAgICAgICAgICAgLy8gYm90aCBgZmlsZW5hbWVgIGFuZCBgZmlsZW5hbWUqYCBhcmUgaW5jbHVk ZWQgZm9yIGFkZGl0aW9uYWwgY29tcGF0YWJpbGl0eQorICAgICAgICAgICAgYm9keS5wdXNoX3N0 cigmZm9ybWF0ISgKKyAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNo bWVudDsgZmlsZW5hbWU9XCJ7ZmlsZW5hbWV9XCI7IGZpbGVuYW1lKj1VVEYtOCcne31cbiIsCisg ICAgICAgICAgICAgICAgdXRmOF9wZXJjZW50X2VuY29kZShmaWxlbmFtZSwgUkZDNTk4N1NFVCkK KyAgICAgICAgICAgICkpOworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigiQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogYmFzZTY0XG5cbiIpOworCisgICAgICAgICAgICAvLyB3cmFwIHRoZSBi YXNlNjQgc3RyaW5nIGV2ZXJ5IDcyIGNoYXJhY3RlcnMuIHRoaXMgaW1wcm92ZXMgY29tcGF0YWJp bGl0eQorICAgICAgICAgICAgbGV0IGJhc2U2NCA9IGJhc2U2NDo6ZW5jb2RlKGF0dGFjaG1lbnQu Y29udGVudCkKKyAgICAgICAgICAgICAgICAuY2hhcnMoKQorICAgICAgICAgICAgICAgIC5lbnVt ZXJhdGUoKQorICAgICAgICAgICAgICAgIC5mbGF0X21hcCh8KGksIGMpfCB7CisgICAgICAgICAg ICAgICAgICAgIGlmIGkgIT0gMCAmJiBpICUgNzIgPT0gMCB7CisgICAgICAgICAgICAgICAgICAg ICAgICBTb21lKCdcbicpCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgLmludG9faXRlcigpCisgICAgICAgICAgICAgICAgICAgIC5jaGFpbihzdGQ6Oml0ZXI6 Om9uY2UoYykpCisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAuY29sbGVjdDo6 PFN0cmluZz4oKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmJhc2U2NCk7CisgICAgICAg IH0KKworICAgICAgICBpZiAhc2VsZi5hdHRhY2htZW50cy5pc19lbXB0eSgpIHsKKyAgICAgICAg ICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17ZmlsZV9ib3VuZGFyeX0tLSIpKTsKKyAg ICAgICAgfQorCisgICAgICAgIE9rKGJvZHkpCisgICAgfQorfQorCisjW2NmZyh0ZXN0KV0KK21v ZCB0ZXN0IHsKKyAgICB1c2Ugc3VwZXI6Oio7CisKKyAgICAjW3Rlc3RdCisgICAgZm4gZW1haWxf d2l0aG91dF9yZWNpcGllbnRzX2ZhaWxzKCkgeworICAgICAgICBsZXQgcmVzdWx0ID0gTWFpbDo6 bmV3KCJTZW5kZXIiLCAibWFpbEBleGFtcGxlLmNvbSIsICJoaSIsICJib2R5Iikuc2VuZCgpOwor ICAgICAgICBhc3NlcnQhKHJlc3VsdC5pc19lcnIoKSk7CisgICAgfQorCisgICAgI1t0ZXN0XQor ICAgIGZuIHNpbXBsZV9hc2NpaV90ZXh0X21haWwoKSB7CisgICAgICAgIGxldCBtYWlsID0gTWFp bDo6bmV3KAorICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKKyAgICAgICAgICAgICJtYWlsZnJv bUBleGFtcGxlLmNvbSIsCisgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKKyAgICAgICAgICAg ICJUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC5cbk5vdGhpbmcgdG9vIHNwZWNpYWwuIiwKKyAgICAg ICAgKQorICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAi cmVjZWl2ZXJAZXhhbXBsZS5jb20iKTsKKworICAgICAgICBsZXQgYm9keSA9IG1haWwuZm9ybWF0 X21haWwoMCkuZXhwZWN0KCJjb3VsZCBub3QgZm9ybWF0IG1haWwiKTsKKworICAgICAgICBhc3Nl cnRfZXEhKAorICAgICAgICAgICAgYm9keSwKKyAgICAgICAgICAgIHIjIlN1YmplY3Q6IFN1Ympl Y3QgTGluZQorRnJvbTogU2VuZGVyIE5hbWUgPG1haWxmcm9tQGV4YW1wbGUuY29tPgorVG86IFJl Y2VpdmVyIE5hbWUgPHJlY2VpdmVyQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1LCAwMSBKYW4gMTk3 MCAwMTowMDowMCArMDEwMAorQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOworQ29udGVu dC1UeXBlOiB0ZXh0L3BsYWluOworCWNoYXJzZXQ9IlVURi04IgorQ29udGVudC1UcmFuc2Zlci1F bmNvZGluZzogOGJpdAorCitUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC4KK05vdGhpbmcgdG9vIHNw ZWNpYWwuIiMKKyAgICAgICAgKQorICAgIH0KKworICAgICNbdGVzdF0KKyAgICBmbiBtdWx0aXBs ZV9yZWNlaXZlcl9yZWRhY3Rpb24oKSB7CisgICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAor ICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKKyAgICAgICAgICAgICJtYWlsZnJvbUBleGFtcGxl LmNvbSIsCisgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKKyAgICAgICAgICAgICJUaGlzIGlz IGp1c3QgYXNjaWkgdGV4dC5cbk5vdGhpbmcgdG9vIHNwZWNpYWwuIiwKKyAgICAgICAgKQorICAg ICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAicmVjZWl2ZXJA ZXhhbXBsZS5jb20iKQorICAgICAgICAud2l0aF9yZWNpcGllbnQoInR3b0BleGFtcGxlLmNvbSIp OworCisgICAgICAgIGxldCBib2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgwKS5leHBlY3QoImNvdWxk IG5vdCBmb3JtYXQgbWFpbCIpOworCisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAgICAgICBi b2R5LAorICAgICAgICAgICAgciMiU3ViamVjdDogU3ViamVjdCBMaW5lCitGcm9tOiBTZW5kZXIg TmFtZSA8bWFpbGZyb21AZXhhbXBsZS5jb20+CitUbzogVW5kaXNjbG9zZWQgPG5vcmVwbHk+CitE YXRlOiBUaHUsIDAxIEphbiAxOTcwIDAxOjAwOjAwICswMTAwCitBdXRvLVN1Ym1pdHRlZDogYXV0 by1nZW5lcmF0ZWQ7CitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47CisJY2hhcnNldD0iVVRGLTgi CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoaXMgaXMganVzdCBhc2NpaSB0 ZXh0LgorTm90aGluZyB0b28gc3BlY2lhbC4iIworICAgICAgICApCisgICAgfQorCisgICAgI1t0 ZXN0XQorICAgIGZuIHNpbXBsZV91dGY4X3RleHRfbWFpbCgpIHsKKyAgICAgICAgbGV0IG1haWwg PSBNYWlsOjpuZXcoCisgICAgICAgICAgICAiVVRGLTggU2VuZGVyIE5hbWUg8J+TpyIsCisgICAg ICAgICAgICAiZGlmZmVyZW50ZnJvbUBleGFtcGxlLmNvbSIsCisgICAgICAgICAgICAiU3ViamVj dCBMaW5lIPCfp5EiLAorICAgICAgICAgICAgIlRoaXMgdXRmLTggZW1haWwgc2hvdWxkIGhhbmRs ZSBlbW9qaXNcbvCfp5Hwn5OnXG5hbmQgd2VpcmQgZ2VybWFuIGNoYXJhY3RlcnM6IMO2w6TDvMOf XG5hbmQgbW9yZS4iLAorICAgICAgICApCisgICAgICAgIC53aXRoX3JlY2lwaWVudF9hbmRfbmFt ZSgiUmVjZWl2ZXIgTmFtZfCfk6kiLCAicmVjZWl2ZXJAZXhhbXBsZS5jb20iKTsKKworICAgICAg ICBsZXQgYm9keSA9IG1haWwuZm9ybWF0X21haWwoMTczMjgwNjI1MSkuZXhwZWN0KCJjb3VsZCBu b3QgZm9ybWF0IG1haWwiKTsKKworICAgICAgICBhc3NlcnRfZXEhKAorICAgICAgICAgICAgYm9k eSwKKyAgICAgICAgICAgIHIjIk1JTUUtVmVyc2lvbjogMS4wCitTdWJqZWN0OiA9P3V0Zi04P0I/ VTNWaWFtVmpkQ0JNYVc1bElQQ2ZwNUU9Pz0KK0Zyb206ID0/dXRmLTg/Qj9WVlJHTFRnZ1UyVnVa R1Z5SUU1aGJXVWc4SitUcHc9PT89IDxkaWZmZXJlbnRmcm9tQGV4YW1wbGUuY29tPgorVG86ID0/ dXRmLTg/Qj9VbVZqWldsMlpYSWdUbUZ0WmZDZms2az0/PSA8cmVjZWl2ZXJAZXhhbXBsZS5jb20+ CitEYXRlOiBUaHUsIDI4IE5vdiAyMDI0IDE2OjA0OjExICswMTAwCitBdXRvLVN1Ym1pdHRlZDog YXV0by1nZW5lcmF0ZWQ7CitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47CisJY2hhcnNldD0iVVRG LTgiCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoaXMgdXRmLTggZW1haWwg c2hvdWxkIGhhbmRsZSBlbW9qaXMKK/Cfp5Hwn5OnCithbmQgd2VpcmQgZ2VybWFuIGNoYXJhY3Rl cnM6IMO2w6TDvMOfCithbmQgbW9yZS4iIworICAgICAgICApCisgICAgfQorCisgICAgI1t0ZXN0 XQorICAgIGZuIG11bHRpcGFydF9odG1sX2FsdGVybmF0aXZlKCkgeworICAgICAgICBsZXQgbWFp bCA9IE1haWw6Om5ldygKKyAgICAgICAgICAgICJTZW5kZXIgTmFtZSIsCisgICAgICAgICAgICAi ZnJvbUBleGFtcGxlLmNvbSIsCisgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKKyAgICAgICAg ICAgICJMb3JlbSBJcHN1bSBEb2xvciBTaXRcbkFtZXQiLAorICAgICAgICApCisgICAgICAgIC53 aXRoX3JlY2lwaWVudCgicmVjZWl2ZXJAZXhhbXBsZS5jb20iKQorICAgICAgICAud2l0aF9odG1s X2FsdCgiPGh0bWwgbGFuZz1cImRlLWF0XCI+PGhlYWQ+PC9oZWFkPjxib2R5PlxuXHQ8cHJlPlxu XHRcdExvcmVtIElwc3VtIERvbG9yIFNpdCBBbWV0XG5cdDwvcHJlPlxuPC9ib2R5PjwvaHRtbD4i KTsKKyAgICAgICAgbGV0IGJvZHkgPSBtYWlsLmZvcm1hdF9tYWlsKDE3MzI4MDYyNTEpLmV4cGVj dCgiY291bGQgbm90IGZvcm1hdCBtYWlsIik7CisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAg ICAgICBib2R5LAorICAgICAgICAgICAgciMiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJu YXRpdmU7CisJYm91bmRhcnk9Ii0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MSIKK01JTUUt VmVyc2lvbjogMS4wCitTdWJqZWN0OiBTdWJqZWN0IExpbmUKK0Zyb206IFNlbmRlciBOYW1lIDxm cm9tQGV4YW1wbGUuY29tPgorVG86IHJlY2VpdmVyQGV4YW1wbGUuY29tCitEYXRlOiBUaHUsIDI4 IE5vdiAyMDI0IDE2OjA0OjExICswMTAwCitBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7 CisKK1RoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCisKKy0tLS0t LV89X05leHRQYXJ0XzAwMl8xNzMyODA2MjUxCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47CisJ Y2hhcnNldD0iVVRGLTgiCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0xvcmVt IElwc3VtIERvbG9yIFNpdAorQW1ldAorLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEK K0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOworCWNoYXJzZXQ9IlVURi04IgorQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAorCis8aHRtbCBsYW5nPSJkZS1hdCI+PGhlYWQ+PC9oZWFkPjxi b2R5PgorCTxwcmU+CisJCUxvcmVtIElwc3VtIERvbG9yIFNpdCBBbWV0CisJPC9wcmU+Cis8L2Jv ZHk+PC9odG1sPgorLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEtLSIjCisgICAgICAg ICkKKyAgICB9CisKKyAgICAjW3Rlc3RdCisgICAgZm4gbXVsdGlwYXJ0X3BsYWluX3RleHRfYXR0 YWNobWVudHNfbWl4ZWQoKSB7CisgICAgICAgIGxldCBiaW46IFt1ODsgNjJdID0gWworICAgICAg ICAgICAgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhk ZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwKKyAgICAgICAgICAgIDB4ZGUsIDB4YWQs IDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4 ZWYsIDB4ZGUsIDB4YWQsCisgICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRl LCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAor ICAgICAgICAgICAgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhl ZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwKKyAgICAgICAgICAgIDB4YmUs IDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsCisgICAgICAgIF07CisKKyAgICAgICAgbGV0 IG1haWwgPSBNYWlsOjpuZXcoCisgICAgICAgICAgICAiU2VuZGVyIE5hbWUiLAorICAgICAgICAg ICAgImZyb21AZXhhbXBsZS5jb20iLAorICAgICAgICAgICAgIlN1YmplY3QgTGluZSIsCisgICAg ICAgICAgICAiTG9yZW0gSXBzdW0gRG9sb3IgU2l0XG5BbWV0IiwKKyAgICAgICAgKQorICAgICAg ICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVyIE5hbWUiLCAicmVjZWl2ZXJAZXhh bXBsZS5jb20iKQorICAgICAgICAud2l0aF9hdHRhY2htZW50KCJkZWFkYmVlZi5iaW4iLCAiYXBw bGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgJmJpbik7CisKKyAgICAgICAgbGV0IGJvZHkgPSBtYWls LmZvcm1hdF9tYWlsKDE3MzI4MDYyNTEpLmV4cGVjdCgiY291bGQgbm90IGZvcm1hdCBtYWlsIik7 CisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAgICAgICBib2R5LAorICAgICAgICAgICAgciMi Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisJYm91bmRhcnk9Ii0tLS1fPV9OZXh0UGFy dF8wMDFfMTczMjgwNjI1MSIKK01JTUUtVmVyc2lvbjogMS4wCitTdWJqZWN0OiBTdWJqZWN0IExp bmUKK0Zyb206IFNlbmRlciBOYW1lIDxmcm9tQGV4YW1wbGUuY29tPgorVG86IFJlY2VpdmVyIE5h bWUgPHJlY2VpdmVyQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAyNCAxNjowNDox MSArMDEwMAorQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOworCitUaGlzIGlzIGEgbXVs dGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LgorCistLS0tLS1fPV9OZXh0UGFydF8wMDFf MTczMjgwNjI1MQorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOworCWNoYXJzZXQ9IlVURi04Igor Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitMb3JlbSBJcHN1bSBEb2xvciBTaXQK K0FtZXQKKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCitDb250ZW50LVR5cGU6IGFw cGxpY2F0aW9uL29jdGV0LXN0cmVhbTsgbmFtZT0iZGVhZGJlZWYuYmluIgorQ29udGVudC1EaXNw b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ImRlYWRiZWVmLmJpbiI7IGZpbGVuYW1lKj1V VEYtOCcnZGVhZGJlZWYuYmluCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKwor M3EyKzc5NnR2dS9lcmI3djNxM2VyYjd2M3EyKzc5NnR2dS9lcmQ2dHZ1L2VyYjd2M3EyKzc5NnQz cTIrNzk2dHZ1L2VyYjd2CiszcTIrNzk2dHZ1OD0KKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMy ODA2MjUxLS0iIworICAgICAgICApCisgICAgfQorCisgICAgI1t0ZXN0XQorICAgIGZuIG11bHRp cGFydF9wbGFpbl90ZXh0X2h0bWxfYWx0ZXJuYXRpdmVfYXR0YWNobWVudHMoKSB7CisgICAgICAg IGxldCBiaW46IFt1ODsgNjJdID0gWworICAgICAgICAgICAgMHhkZSwgMHhhZCwgMHhiZSwgMHhl ZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwg MHhhZCwKKyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4 YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsCisgICAgICAgICAg ICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAw eGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAorICAgICAgICAgICAgMHhkZSwgMHhhZCwgMHhi ZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwg MHhkZSwgMHhhZCwKKyAgICAgICAgICAgIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4 ZWYsCisgICAgICAgIF07CisKKyAgICAgICAgbGV0IG1haWwgPSBNYWlsOjpuZXcoCisgICAgICAg ICAgICAiU2VuZGVyIE5hbWUiLAorICAgICAgICAgICAgImZyb21AZXhhbXBsZS5jb20iLAorICAg ICAgICAgICAgIlN1YmplY3QgTGluZSIsCisgICAgICAgICAgICAiTG9yZW0gSXBzdW0gRG9sb3Ig U2l0XG5BbWV0IiwKKyAgICAgICAgKQorICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUo IlJlY2VpdmVyIE5hbWUiLCAicmVjZWl2ZXJAZXhhbXBsZS5jb20iKQorICAgICAgICAud2l0aF9h dHRhY2htZW50KCJkZWFkYmVlZi5iaW4iLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgJmJp bikKKyAgICAgICAgLndpdGhfYXR0YWNobWVudCgi8J+QhPCfkoAuYmluIiwgImltYWdlL2JtcCIs ICZiaW4pCisgICAgICAgIC53aXRoX2h0bWxfYWx0KCI8aHRtbCBsYW5nPVwiZGUtYXRcIj48aGVh ZD48L2hlYWQ+PGJvZHk+XG5cdDxwcmU+XG5cdFx0TG9yZW0gSXBzdW0gRG9sb3IgU2l0IEFtZXRc blx0PC9wcmU+XG48L2JvZHk+PC9odG1sPiIpOworCisgICAgICAgIGxldCBib2R5ID0gbWFpbC5m b3JtYXRfbWFpbCgxNzMyODA2MjUxKS5leHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOwor CisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAgICAgICBib2R5LAorICAgICAgICAgICAgciMi Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisJYm91bmRhcnk9Ii0tLS1fPV9OZXh0UGFy dF8wMDFfMTczMjgwNjI1MSIKK01JTUUtVmVyc2lvbjogMS4wCitTdWJqZWN0OiBTdWJqZWN0IExp bmUKK0Zyb206IFNlbmRlciBOYW1lIDxmcm9tQGV4YW1wbGUuY29tPgorVG86IFJlY2VpdmVyIE5h bWUgPHJlY2VpdmVyQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAyNCAxNjowNDox MSArMDEwMAorQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOworCitUaGlzIGlzIGEgbXVs dGktcGFydCBtZXNzYWdlIGluIE1JTUUgZm9ybWF0LgorCistLS0tLS1fPV9OZXh0UGFydF8wMDFf MTczMjgwNjI1MQorQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5 PSItLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEiCitNSU1FLVZlcnNpb246IDEuMAorCist LS0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MQorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OworCWNoYXJzZXQ9IlVURi04IgorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitM b3JlbSBJcHN1bSBEb2xvciBTaXQKK0FtZXQKKy0tLS0tLV89X05leHRQYXJ0XzAwMl8xNzMyODA2 MjUxCitDb250ZW50LVR5cGU6IHRleHQvaHRtbDsKKwljaGFyc2V0PSJVVEYtOCIKK0NvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworPGh0bWwgbGFuZz0iZGUtYXQiPjxoZWFkPjwvaGVh ZD48Ym9keT4KKwk8cHJlPgorCQlMb3JlbSBJcHN1bSBEb2xvciBTaXQgQW1ldAorCTwvcHJlPgor PC9ib2R5PjwvaHRtbD4KKy0tLS0tLV89X05leHRQYXJ0XzAwMl8xNzMyODA2MjUxLS0KKy0tLS0t LV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCitDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29j dGV0LXN0cmVhbTsgbmFtZT0iZGVhZGJlZWYuYmluIgorQ29udGVudC1EaXNwb3NpdGlvbjogYXR0 YWNobWVudDsgZmlsZW5hbWU9ImRlYWRiZWVmLmJpbiI7IGZpbGVuYW1lKj1VVEYtOCcnZGVhZGJl ZWYuYmluCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworM3EyKzc5NnR2dS9l cmI3djNxM2VyYjd2M3EyKzc5NnR2dS9lcmQ2dHZ1L2VyYjd2M3EyKzc5NnQzcTIrNzk2dHZ1L2Vy Yjd2CiszcTIrNzk2dHZ1OD0KKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCitDb250 ZW50LVR5cGU6IGltYWdlL2JtcDsgbmFtZT0i8J+QhPCfkoAuYmluIgorQ29udGVudC1EaXNwb3Np dGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IvCfkITwn5KALmJpbiI7IGZpbGVuYW1lKj1VVEYt OCcnJUYwJTlGJTkwJTg0JUYwJTlGJTkyJTgwLmJpbgorQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogYmFzZTY0CisKKzNxMis3OTZ0dnUvZXJiN3YzcTNlcmI3djNxMis3OTZ0dnUvZXJkNnR2dS9l cmI3djNxMis3OTZ0M3EyKzc5NnR2dS9lcmI3dgorM3EyKzc5NnR2dTg9CistLS0tLS1fPV9OZXh0 UGFydF8wMDFfMTczMjgwNjI1MS0tIiMKKyAgICAgICAgKQorICAgIH0KKworICAgICNbdGVzdF0K KyAgICBmbiB0ZXN0X2Zvcm1hdF9tYWlsX211bHRpcGFydCgpIHsKKyAgICAgICAgbGV0IG1haWwg PSBNYWlsOjpuZXcoCisgICAgICAgICAgICAiRnJlZCBPb2JhciIsCisgICAgICAgICAgICAiZm9v YmFyQGV4YW1wbGUuY29tIiwKKyAgICAgICAgICAgICJUaGlzIGlzIHRoZSBzdWJqZWN0IiwKKyAg ICAgICAgICAgICJUaGlzIGlzIHRoZSBwbGFpbiBib2R5IiwKKyAgICAgICAgKQorICAgICAgICAu d2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlRvbnkgRXN0IiwgInRlc3RAZXhhbXBsZS5jb20iKQor ICAgICAgICAud2l0aF9odG1sX2FsdCgiPGJvZHk+VGhpcyBpcyB0aGUgSFRNTCBib2R5PC9ib2R5 PiIpOworCisgICAgICAgIGxldCBib2R5ID0gbWFpbC5mb3JtYXRfbWFpbCgxNzE4OTc3ODUwKS5l eHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIpOworCisgICAgICAgIGFzc2VydF9lcSEoCisg ICAgICAgICAgICBib2R5LAorICAgICAgICAgICAgciMiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQv YWx0ZXJuYXRpdmU7CisJYm91bmRhcnk9Ii0tLS1fPV9OZXh0UGFydF8wMDJfMTcxODk3Nzg1MCIK K01JTUUtVmVyc2lvbjogMS4wCitTdWJqZWN0OiBUaGlzIGlzIHRoZSBzdWJqZWN0CitGcm9tOiBG cmVkIE9vYmFyIDxmb29iYXJAZXhhbXBsZS5jb20+CitUbzogVG9ueSBFc3QgPHRlc3RAZXhhbXBs ZS5jb20+CitEYXRlOiBGcmksIDIxIEp1biAyMDI0IDE1OjUwOjUwICswMjAwCitBdXRvLVN1Ym1p dHRlZDogYXV0by1nZW5lcmF0ZWQ7CisKK1RoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4g TUlNRSBmb3JtYXQuCisKKy0tLS0tLV89X05leHRQYXJ0XzAwMl8xNzE4OTc3ODUwCitDb250ZW50 LVR5cGU6IHRleHQvcGxhaW47CisJY2hhcnNldD0iVVRGLTgiCitDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA4Yml0CisKK1RoaXMgaXMgdGhlIHBsYWluIGJvZHkKKy0tLS0tLV89X05leHRQYXJ0 XzAwMl8xNzE4OTc3ODUwCitDb250ZW50LVR5cGU6IHRleHQvaHRtbDsKKwljaGFyc2V0PSJVVEYt OCIKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworPGJvZHk+VGhpcyBpcyB0aGUg SFRNTCBib2R5PC9ib2R5PgorLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MTg5Nzc4NTAtLSIjCisg ICAgICAgICk7CisgICAgfQorfQotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVs QGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWls bWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=