From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Petr Lautrbach To: git-commits@fedoraproject.org Subject: [tests/selinux] pr775-checkpolicy-revdeps: Common library for selinux-policy component Date: Fri, 11 Sep 2026 13:17:44 GMT Message-ID: <178913266467.1.6483137332602741153.tests-selinux-af33a2c4be8c@fedoraproject.org> List-ID: X-Git-Repo: tests/selinux X-Git-Branch: pr775-checkpolicy-revdeps X-Git-Rev: af33a2c4be8ce7f382cbcdb122226a3c27eb679b ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHRlc3RzL3NlbGludXgKICAgICAgICAgICAgQnJhbmNoIDogcHI3NzUtY2hlY2twb2xp Y3ktcmV2ZGVwcwogICAgICAgICAgICBDb21taXQgOiBhZjMzYTJjNGJlOGNlN2YzODJjYmNkYjEy MjIyNmEzYzI3ZWI2NzliCiAgICAgICAgICAgIEF1dGhvciA6IFBldHIgTGF1dHJiYWNoIDxwbGF1 dHJiYUByZWRoYXQuY29tPgogICAgICAgICAgICBEYXRlICAgOiAyMDIwLTAxLTEzVDEyOjMwOjU2 KzAxOjAwCiAgICAgICAgICAgIFN0YXRzICA6ICsyNDMzLy0wIGluIDQgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy90ZXN0cy9zZWxpbnV4 L2MvYWYzM2EyYzRiZThjZTdmMzgyY2JjZGIxMjIyMjZhM2MyN2ViNjc5Yj9icmFuY2g9cHI3NzUt Y2hlY2twb2xpY3ktcmV2ZGVwcwoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBDb21tb24g bGlicmFyeSBmb3Igc2VsaW51eC1wb2xpY3kgY29tcG9uZW50CgpGb3IgbGlicmFyeSBkb2N1bWVu dGF0aW9uIHJ1bjoKCiAgICAkIHBlcmxkb2Mgc2VsaW51eC1wb2xpY3kvTGlicmFyeS9jb21tb24v bGliLnNoCgotLS0KZGlmZiAtLWdpdCBhL3NlbGludXgtcG9saWN5L0xpYnJhcnkvY29tbW9uL01h a2VmaWxlIGIvc2VsaW51eC1wb2xpY3kvTGlicmFyeS9jb21tb24vTWFrZWZpbGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMDA0ZgotLS0gL2Rldi9udWxsCisrKyBiL3Nl bGludXgtcG9saWN5L0xpYnJhcnkvY29tbW9uL01ha2VmaWxlCkBAIC0wLDAgKzEsNjQgQEAKKyMg fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4KKyMKKyMgICBNYWtlZmlsZSBvZiAvQ29yZU9TL3NlbGludXgtcG9saWN5L0xp YnJhcnkvY29tbW9uCisjICAgRGVzY3JpcHRpb246IFdyYXBwZXIgbGlicmFyeSBmb3IgL0NvcmVP Uy9zZWxpbnV4LXBvbGljeS9jb21tb24KKyMgICBBdXRob3I6IERhdmlkIFNwdXJlayA8ZHNwdXJl a0ByZWRoYXQuY29tPgorIworIyB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIworIyAgIENvcHlyaWdodCAoYykgMjAx MyBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjICAgVGhpcyBjb3B5cmln aHRlZCBtYXRlcmlhbCBpcyBtYWRlIGF2YWlsYWJsZSB0byBhbnlvbmUgd2lzaGluZworIyAgIHRv IHVzZSwgbW9kaWZ5LCBjb3B5LCBvciByZWRpc3RyaWJ1dGUgaXQgc3ViamVjdCB0byB0aGUgdGVy bXMKKyMgICBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUKKyMgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCisjICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyAgIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyMgICBMaWNl bnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisj ICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwKKyMgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMKKyMgfn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K KworZXhwb3J0IFRFU1Q9L0NvcmVPUy9zZWxpbnV4LXBvbGljeS9MaWJyYXJ5L2NvbW1vbgorZXhw b3J0IFRFU1RWRVJTSU9OPTEuMAorCitCVUlMVF9GSUxFUz0KKworRklMRVM9JChNRVRBREFUQSkg bGliLnNoIE1ha2VmaWxlIHJ1bnRlc3Quc2ggbWtjYWNoZS5weQorCisuUEhPTlk6IGFsbCBpbnN0 YWxsIGRvd25sb2FkIGNsZWFuCisKK3J1bjogJChGSUxFUykKKwkuL3J1bnRlc3Quc2gKKworaW5j bHVkZSAvdXNyL3NoYXJlL3JodHMvbGliL3JodHMtbWFrZS5pbmNsdWRlCisKKyQoTUVUQURBVEEp OiBNYWtlZmlsZQorCUBlY2hvICJPd25lcjogICAgICAgICAgIERhdmlkIFNwdXJlayA8ZHNwdXJl a0ByZWRoYXQuY29tPiIgPiAkKE1FVEFEQVRBKQorCUBlY2hvICJOYW1lOiAgICAgICAgICAgICQo VEVTVCkiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIlRlc3RWZXJzaW9uOiAgICAgJChURVNUVkVS U0lPTikiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIlBhdGg6ICAgICAgICAgICAgJChURVNUX0RJ UikiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIkRlc2NyaXB0aW9uOiAgICAgQ29tbW9uIGxpYnJh cnkgZm9yIFNFTGludXgiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIlR5cGU6ICAgICAgICAgICAg TGlicmFyeSIgPj4gJChNRVRBREFUQSkKKwlAZWNobyAiVGVzdFRpbWU6ICAgICAgICAxMjBtIiA+ PiAkKE1FVEFEQVRBKQorCUBlY2hvICJSZXF1aXJlczogICAgICAgIHNldG9vbHMiID4+ICQoTUVU QURBVEEpCisJQGVjaG8gIlJlcXVpcmVzOiAgICAgICAgc2V0b29scy1jb25zb2xlIiA+PiAkKE1F VEFEQVRBKQorCUBlY2hvICJSZXF1aXJlczogICAgICAgIGV4cGVjdCIgPj4gJChNRVRBREFUQSkK KwlAZWNobyAiUmVxdWlyZXM6ICAgICAgICBwb2xpY3ljb3JldXRpbHMiID4+ICQoTUVUQURBVEEp CisJQGVjaG8gIlJlcXVpcmVzOiAgICAgICAgL3Vzci9zYmluL3NlbWFuYWdlIiA+PiAkKE1FVEFE QVRBKQorCUBlY2hvICJSZXF1aXJlczogICAgICAgIHNlbGludXgtcG9saWN5LWRldmVsIiA+PiAk KE1FVEFEQVRBKQorCUBlY2hvICJSZXF1aXJlczogICAgICAgIHl1bS11dGlscyIgPj4gJChNRVRB REFUQSkKKwlAZWNobyAiUmVxdWlyZXM6ICAgICAgICBweXRob24zIHNxbGl0ZSIgPj4gJChNRVRB REFUQSkKKwlAZWNobyAiUHJvdmlkZXM6ICAgICAgICBsaWJyYXJ5KHNlbGludXgtcG9saWN5L2Nv bW1vbikiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIlJodHNSZXF1aXJlczogICAgbGlicmFyeShk aXN0cmlidXRpb24vZXBlbCkiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIkxpY2Vuc2U6ICAgICAg ICAgR1BMdjIiID4+ICQoTUVUQURBVEEpCisJQGVjaG8gIkRlc3RydWN0aXZlOiAgICAgbm8iID4+ ICQoTUVUQURBVEEpCisJQGVjaG8gIkVudmlyb25tZW50OiAgICAgQVZDX0VSUk9SPStub19hdmNf Y2hlY2siID4+ICQoTUVUQURBVEEpCisKKwlyaHRzLWxpbnQgJChNRVRBREFUQSkKKwoKZGlmZiAt LWdpdCBhL3NlbGludXgtcG9saWN5L0xpYnJhcnkvY29tbW9uL2xpYi5zaCBiL3NlbGludXgtcG9s aWN5L0xpYnJhcnkvY29tbW9uL2xpYi5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lMzEyYjlhCi0tLSAvZGV2L251bGwKKysrIGIvc2VsaW51eC1wb2xpY3kvTGlicmFyeS9j b21tb24vbGliLnNoCkBAIC0wLDAgKzEsMTkyOSBAQAorIyEvYmluL2Jhc2gKKyMgdmltOiBkaWN0 PS91c3Ivc2hhcmUvYmVha2VybGliL2RpY3Rpb25hcnkudmltIGNwdD0uLHcsYix1LHQsaSxrCisj IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+CisjCisjICAgbGliLnNoIG9mIC9Db3JlT1Mvc2VsaW51eC1wb2xpY3kvTGli cmFyeS9jb21tb24KKyMgICBEZXNjcmlwdGlvbjogQ29tbW9uIGxpYnJhcnkgZm9yIHNlbGludXgt cG9saWN5IGNvbXBvbmVudAorIyAgIEF1dGhvcnM6IE1pbG9zIE1hbGlrIDxtbWFsaWtAcmVkaGF0 LmNvbT4KKyMgICAgICAgICAgICBNaWNoYWwgVHJ1bmVja2EgPG10cnVuZWNrQHJlZGhhdC5jb20+ CisjICAgICAgICAgICAgRGF2aWQgU3B1cmVrIDxkc3B1cmVrQHJlZGhhdC5jb20+CisjICAgICAg ICAgICAgSmlyaSBKYWJ1cmVrIDxqamFidXJla0ByZWRoYXQuY29tPgorIworIyB+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fgorIworIyAgIENvcHlyaWdodCAoYykgMjAyMCBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisjCisjICAgVGhpcyBjb3B5cmlnaHRlZCBtYXRlcmlhbCBpcyBtYWRlIGF2YWlsYWJs ZSB0byBhbnlvbmUgd2lzaGluZworIyAgIHRvIHVzZSwgbW9kaWZ5LCBjb3B5LCBvciByZWRpc3Ry aWJ1dGUgaXQgc3ViamVjdCB0byB0aGUgdGVybXMKKyMgICBhbmQgY29uZGl0aW9ucyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLgorIworIyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyMgICB1c2VmdWws IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCisjICAg d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor IyAgIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMKKyMgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisjICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyMgICBCb3N0b24sIE1BIDAyMTEwLTEz MDEsIFVTQS4KKyMKKyMgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyMgICBsaWJyYXJ5LXByZWZpeCA9IHJsU0UKKyMg ICBsaWJyYXJ5LXZlcnNpb24gPSA0MAorIyB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCis6IDw8Jz1jdXQnCis9cG9k CisKKz1oZWFkMSBOQU1FCisKK3NlbGludXgtcG9saWN5L2NvbW1vbiAtIEJlYWtlckxpYiBleHRl bnNpb24gZm9yIG1hbmFnaW5nIFNFTGludXgKKworPWN1dAorCisjIH5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+CisjICAgVmFyaWFibGVzCisjIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKzogPDwnPWN1dCcK Kz1wb2QKKworPWhlYWQxIFZBUklBQkxFUworCis9b3ZlcgorCis9aXRlbSBybFNFX0NBQ0hFX0RJ UgorCitVc2VkIGJ5IHNlc2VhcmNoIGNhY2hpbmcgZm9yIHN0b3JpbmcgdGhlIH45ME0gY2FjaGUg ZmlsZS4gRGVmYXVsdHMgdG8KK2Egc3ViZGlyZWN0b3J5IHVuZGVyIC92YXIvdG1wLgorCis9YmFj aworCis9Y3V0CisKK3JsU0VfQ0FDSEVfRElSPSIke3JsU0VfQ0FDSEVfRElSOi0kX19JTlRFUk5B TF9QRVJTSVNURU5UX1RNUC9CRUFLRVJMSUItcmxTRX0iCisKK19fSU5URVJOQUxfcmxTRV9DQUNI RUZJTEU9IiRybFNFX0NBQ0hFX0RJUi9jYWNoZS5kYiIKK19fSU5URVJOQUxfcmxTRV9TVU1GSUxF PSIkcmxTRV9DQUNIRV9ESVIvY2FjaGUucG9saWN5LWNoZWNrc3VtIgorCisKKyMgfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4KKyMgICBGdW5jdGlvbnMKKyMgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwordHJ1 ZSA8PCc9Y3V0JworPXBvZAorCis9aGVhZDEgRlVOQ1RJT05TCisKKz1oZWFkMiBybFNFU2VhcmNo UnVsZQorCitTZWFyY2hlcyBmb3IgZ2l2ZW4gU0VMaW51eCBydWxlLiBDaGVja3MgaWYgdGhlIHJ1 bGUgaXMgaW4gdGhlIGJvb2xlYW4gaWYgZ2l2ZW4uIENoZWNrcyBpZiB0aGUgcnVsZSBpcyBpbiB0 aGUgY3VycmVudCBwb2xpY3ksIGlmIG5vdCBnaXZlbiBvdGhlciAoZS5nLiBtbHMpLgorCitVc2Fn ZToKKyAgICBybFNFU2VhcmNoUnVsZSAiUlVMRSIgW0VYUF9SRVNVTFRdIFtERVNDXQorICAgIHJs U0VTZWFyY2hSdWxlICJSVUxFIFtbQk9PTEVBTl1dIFtQT0xJQ1ldIiBbRVhQX1JFU1VMVF0gW0RF U0NdCisKKz1vdmVyCisKKz1pdGVtIEVYUF9SRVNVTFQKKworTm9ybWFsbHkgZXhwZWN0ZWQgaXMg JzAnIGJ1dCB5b3UgY2FuIHRoZSBuZWdhdGlvbiB1c2luZyAnMScuCisKKz1pdGVtIERFU0MKKwor CisKKz1iYWNrCisKK0V4YW1wbGVzOgorICAgIHJsU0VTZWFyY2hSdWxlICJkb250YXVkaXQgc21i ZF90IGV0Y19jb25mX3Q6ZGlyIHsgZ2V0YXR0ciBvcGVuIH0iCisgICAgcmxTRVNlYXJjaFJ1bGUg ImRvbnRhdWRpdCBzbWJkX3QgZXRjX2NvbmZfdDpkaXIgeyBnZXRhdHRyIG9wZW4gfSBbXSIKKyAg ICBybFNFU2VhcmNoUnVsZSAiYWxsb3cgZnRwZF90IHB1YmxpY19jb250ZW50X3J3X3Q6IGRpciB3 cml0ZSBbIGFsbG93X2Z0cGRfYW5vbl93cml0ZSBdIgorICAgIHJsU0VTZWFyY2hSdWxlICJhbGxv dyBmdHBkX3QgcHVibGljX2NvbnRlbnRfcndfdDogZGlyIHdyaXRlIFsgYWxsb3dfZnRwZF9hbm9u X3dyaXRlIF0gbWxzIgorICAgIHJsU0VTZWFyY2hSdWxlICJ0eXBlYXR0cmlidXRlIGh0dHBkX3N5 c19zY3JpcHRfZXhlY190IGZpbGVfdHlwZSwgZXhlY190eXBlIgorICAgIHJsU0VTZWFyY2hSdWxl ICJ0eXBlX3RyYW5zaXRpb24gaW5pdHJjX3Qga2R1bXBndWlfZXhlY190IDogcHJvY2VzcyBrZHVt cGd1aV90IgorICAgIHJsU0VTZWFyY2hSdWxlICJ0eXBlX3RyYW5zaXRpb24gYXV0aGNvbmZpZ190 IGV0Y190IDogZmlsZSBib290bG9hZGVyX2V0Y190IHppcGwuY29uZiIKKyAgICBybFNFU2VhcmNo UnVsZSAidHlwZV90cmFuc2l0aW9uIGF1dGhjb25maWdfdCBldGNfdCA6IGZpbGUgYm9vdGxvYWRl cl9ldGNfdCBbXSB6aXBsLmNvbmYgbWxzIgorCis9Y3V0CisKK3JsU0VMb2dWYXIoKSB7CisgIFtb IC1uICIkREVCVUciIF1dICYmIHsKKyAgICBlY2hvIC1uICdldmFsICcKKyAgICB3aGlsZSBbWyAt biAiJDEiIF1dOyBkbworICAgICAgZWNobyAtbiAicmxMb2dEZWJ1ZyBcIlwkRlVOQ05BTUUoKTog XCQoc2V0IHwgZ3JlcCAtUCAnXiQxPScpXCI7IgorICAgICAgc2hpZnQKKyAgICBkb25lCisgIH0K K30KKworcmxTRVNlYXJjaFJ1bGUoKSB7CisKKyAgaWYgWyAtZSAvdmFyL3J1bi9ub3Nlc2VhcmNo IF07IHRoZW4KKyAgICAgZWNobyAicmxTRVNlYXJjaFJ1bGUgZGlzYWJsZWQgYnkgL3Zhci9ydW4v bm9zZXNlYXJjaCIKKyAgICAgcmV0dXJuIDAKKyAgZmkKKworICBsb2NhbCBMRj0iCisiCisgIGxv Y2FsIHJlc3VsdD0wCisgIGxvY2FsIFJVTEU9IiQoZWNobyAiJDEiIHwgdHIgJyw6JjsnICcgICAg JyB8IHRyIC1zICcgJykiCisgIGxvY2FsIGV4cGVjdGVkX3Jlc3VsdD0iJHsyOi0wfSIKKyAgbG9j YWwgY29tbWVudD0iJDMiCisgICMgVE9ETzogdGFrZXMgfjEgc2Vjb25kLCBhYnN0cmFjdCB0byBh IHNlcGFyYXRlIGZ1bmN0aW9uIHRoYXQgcmVtZW1iZXJzCisgICMgICAgICAgdGhlIHZlcnNpb24g aW4gc29tZSBfX0lOVEVSTkFMX3JsU0VfKiB2YXJpYWJsZQorICBpZiBzZXNlYXJjaCAtLXZlcnNp b24gMj4mMSB8IGdyZXAgLXEgJzMuWzAxMjNdJyA7IHRoZW4KKyAgICBsb2NhbCBTRVRPT0xTX1ZF Uj0zCisgICAgbG9jYWwgU0VTRUFSQ0hfT1BUUz0nLUMnCisgIGVsc2UgIyBzZXRvb2xzIHYuNAor ICAgIGxvY2FsIFNFVE9PTFNfVkVSPTQKKyAgICBsb2NhbCBTRVNFQVJDSF9PUFRTPScnCisgIGZp CisgIHJsSXNSSEVMICc8NicgJiYgU0VTRUFSQ0hfT1BUUz0iLWkgLW4gJFNFU0VBUkNIX09QVFMi CisKKyAgcmxMb2dJbmZvICIkRlVOQ05BTUU6ICR7Y29tbWVudDotImNoZWNraW5nIHJ1bGUgJyQx JyJ9IgorCisgIGBybFNFTG9nVmFyICdSVUxFJ2AKKyAgIyBnZXQgcG9saWN5IHR5cGUKKyAgbG9j YWwgUE9MSUNZPSIkX19JTlRFUk5BTF9QT0xJQ1lfTkFNRSIKKyAgbG9jYWwgUE9MSUNZX1BBVEg9 JycKKyAgW1sgIiRSVUxFIiA9fiAkKGVjaG8gJyguKilccysobWxzfHRhcmdldGVkfG1pbmltdW18 c3RyaWN0KScpIF1dICYmIHsKKyAgICBybExvZ0RlYnVnICIkRlVOQ05BTUU6IFBPTElDWSBQQVJT RSI7IGBybFNFTG9nVmFyICdCQVNIX1JFTUFUQ0gnYAorICAgIFBPTElDWT0iJHtCQVNIX1JFTUFU Q0hbMl19IgorICAgIFJVTEU9IiR7QkFTSF9SRU1BVENIWzFdfSIKKyAgICBgcmxTRUxvZ1ZhciAn UlVMRSdgCisgICAgUE9MSUNZX1BBVEg9IiRfX0lOVEVSTkFMX1BPTElDWV9ST09ULyRQT0xJQ1kv cG9saWN5L3BvbGljeS4kKGxzIC0xIC1kICRfX0lOVEVSTkFMX1BPTElDWV9ST09ULyRQT0xJQ1kv cG9saWN5L3BvbGljeS4qIHwgc2VkIC1yICdzL1teLl0qXC4vLycgfCBzb3J0IC1uciB8IGhlYWQg LW4gMSkiCisgIH0KKyAgYHJsU0VMb2dWYXIgJ1BPTElDWScgJ1BPTElDWV9QQVRIJyBSVUxFYAor CisgICMgY2hlY2sgdHlwZWF0dHJpYnV0ZSBydWxlCisgICAgICAgICAgICAgICAgICMgIC0gICB0 eXBlYXR0cmlidXRlICBUWVBFICAgICAgQVRUUiAuLi4KKyAgW1sgIiRSVUxFIiA9fiAkKGVjaG8g J3R5cGVhdHRyaWJ1dGVccysoXFMrKVxzKyhcUysuKiknKSBdXSAmJiB7CisgICAgcmxMb2dEZWJ1 ZyAiJEZVTkNOQU1FKCk6IHR5cGVhdHRyaWJ1dGUgUEFSU0UiOyBgcmxTRUxvZ1ZhciAnQkFTSF9S RU1BVENIJ2AKKyAgICBsb2NhbCBUWVBFPSIke0JBU0hfUkVNQVRDSFsxXX0iCisgICAgbG9jYWwg QVRUUklCVVRFPSggJHtCQVNIX1JFTUFUQ0hbMl19ICkKKyAgICBgcmxTRUxvZ1ZhciAnVFlQRScg J0FUVFJJQlVURSdgCisgICAgbG9jYWwgc2VpbmZvX291dAorICAgIHdoaWxlIFtbIC1uICIkQVRU UklCVVRFIiBdXTsgZG8KKyAgICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBFWEVDVVRJTkcg c2VpbmZvX291dD1cIlwkKHNlaW5mbyAteGEkQVRUUklCVVRFICRQT0xJQ1lfUEFUSClcIiIKKyAg ICAgIHNlaW5mb19vdXQ9IiQoc2VpbmZvIC14YSRBVFRSSUJVVEUgJFBPTElDWV9QQVRIKSIKKyAg ICAgIGlmIFtbICQ/IC1uZSAwIF1dIDsgdGhlbgorICAgICAgICBybExvZ0Vycm9yICIkRlVOQ05B TUU6IHNlaW5mbyBmYWlsZWQiCisgICAgICAgIHJsTG9nRXJyb3IgIiRGVU5DTkFNRTogJHNlaW5m b19vdXQiCisgICAgICAgIGxldCByZXN1bHQrKworICAgICAgZmkKKyAgICAgIHJsTG9nRGVidWcg IiRGVU5DTkFNRSgpOiBFWEVDVVRJTkcgZWNobyBcIlwkc2VpbmZvX291dFwiIHwgZ3JlcCAtcSBc Ilw8JHtUWVBFfVw+XCIiCisgICAgICBlY2hvICIkc2VpbmZvX291dCIgfCBncmVwIC1xICJcPCR7 VFlQRX1cPiIKKyAgICAgIHJsQXNzZXJ0RXF1YWxzICIke2NvbW1lbnQ6LSJjaGVjayBpZiB0eXBl ICckVFlQRScgaXMgcHJlc2VudCBpbiBhdHRyaWJ1dGUgJyRBVFRSSUJVVEUnIGluIHBvbGljeSAn JFBPTElDWScifSIgJD8gJGV4cGVjdGVkX3Jlc3VsdCB8fCBsZXQgcmVzdWx0KysKKyAgICAgIEFU VFJJQlVURT0oICIke0FUVFJJQlVURVtAXToxfSIgKQorICAgIGRvbmUKKyAgICByZXR1cm4gJHJl c3VsdAorICB9CisKKyAgIyBjaGVjayBvdGhlciBydWxlcyAoYWxsb3csIGRvbnRhdWRpdCwgdHlw ZV90cmFuc2l0aW9uKQorCisgICMgbG9vayBmb3IgY29uZGl0aW9uYWwgYm9vbGVhbgorICBsb2Nh bCBCT09MRUFOPScuKicKKyAgW1sgIiRSVUxFIiA9fiAkKGVjaG8gJyguKikoXHMrXFsoLiopXF0p KC4qKScpIF1dICYmIHsKKyAgICBybExvZ0RlYnVnICIkRlVOQ05BTUUoKTogQk9PTEVBTiBQQVJT RSI7IGBybFNFTG9nVmFyICdCQVNIX1JFTUFUQ0gnYAorICAgIEJPT0xFQU49KCAke0JBU0hfUkVN QVRDSFszXX0gKQorICAgIFJVTEU9IiR7QkFTSF9SRU1BVENIWzFdfSR7QkFTSF9SRU1BVENIWzRd fSIKKyAgfQorICBgcmxTRUxvZ1ZhciAnQk9PTEVBTicgUlVMRWAKKworICAjIGFjdHVhbGx5IGNo ZWNrIHRoZSBydWxlcworICAgICMgVC9GICBSVUxFVFlQRSAgICAgICBTQ09OVEVYVCAgVENPTlRF WFQgIENMQVNTICAgIDxQRVJNfHsgUFJFTXMgfT4KKyAgW1sgIiRSVUxFIiA9fiAkKGVjaG8gJygo VHxGKVxzKyk/KFxTKylccysoXFMrKVxzKyhcUyspXHMrKFxTKylccysoLiopJykgXV0gJiYgewor ICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBSVUxFIFBBUlNFIjsgYHJsU0VMb2dWYXIgJ0JB U0hfUkVNQVRDSCdgCisgICAgbG9jYWwgVEY9IiR7QkFTSF9SRU1BVENIWzJdfSIKKyAgICBsb2Nh bCBSVUxFVFlQRT0iJHtCQVNIX1JFTUFUQ0hbM119IgorICAgIGxvY2FsIFNDT05URVhUPSIke0JB U0hfUkVNQVRDSFs0XX0iCisgICAgbG9jYWwgVENPTlRFWFQ9IiR7QkFTSF9SRU1BVENIWzVdfSIK KyAgICBsb2NhbCBDTEFTUz0iJHtCQVNIX1JFTUFUQ0hbNl19IgorICAgIGxvY2FsIFBFUk09IiR7 QkFTSF9SRU1BVENIWzddfSIKKyAgICBsb2NhbCBUUkFOU19GSUxFPScnCisgICAgaWYgcmxJc1JI RUwgJzw2JzsgdGhlbgorICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBSVUxFIFBBUlNFIjsg YHJsU0VMb2dWYXIgJ0JBU0hfUkVNQVRDSCdgCisgICAgICBybExvZ0RlYnVnICIkRlVOQ05BTUUo KTogZXhjbHVkaW5nIHBlcm1pc3Npb24gJ29wZW4nIgorICAgICAgIyBmb3IgUkhFTCA8IDYgaWdu b3JlIG9wZW4gcGVybWlzc2lvbiBhcyBpdCBpc25vdCBkZWZpbmVkIHRoZXJlCisgICAgICBsb2Nh bCBQRVJNPSggJChlY2hvICIke1BFUk19IiB8IHRyIC1kICd7fScgfCBzZWQgLXIgJ3MvXDxvcGVu XD4vL2cnKSApCisgICAgZWxzZQorICAgICAgbG9jYWwgUEVSTT0oICQoZWNobyAiJHtQRVJNfSIg fCB0ciAtZCAne30nKSApCisgICAgZmkKKworICAgIGxvY2FsIFNFQVJDSF9SVUxFVFlQRT0iJFJV TEVUWVBFIgorICAgIFtbICIkUlVMRVRZUEUiID09ICJkb250YXVkaXQiIF1dICYmIHJsSXNSSEVM ICc8NicgJiYgU0VBUkNIX1JVTEVUWVBFPSJhdWRpdCIgIyBkb250YXVkaXQgcnVsZXMgYXJlIGlu IC0tYXVkaXQgcnVsZSB0eXBlCisgICAgaWYgW1sgIiRSVUxFVFlQRSIgPT0gInR5cGVfdHJhbnNp dGlvbiIgXV07IHRoZW4KKyAgICAgIGlmIFtbICR7U0VUT09MU19WRVJ9ID09ICIzIiBdXTsgdGhl bgorICAgICAgICBTRUFSQ0hfUlVMRVRZUEU9InR5cGUiICMgdHlwZV90cmFuc2l0aW9uIHJ1bGVz IGFyZSBpbiAtLXR5cGUgcnVsZSB0eXBlCisgICAgICBlbHNlICMgc2V0b29scyB2LjQKKyAgICAg ICAgU0VBUkNIX1JVTEVUWVBFPSJ0eXBlX3RyYW5zIiAjIHR5cGVfdHJhbnNpdGlvbiBydWxlcyBh cmUgaW4gLS10eXBlX3RyYW5zIHJ1bGUgdHlwZQorICAgICAgZmkKKyAgICAgIGlmIFtbIC1uICIk e1BFUk1bMV19IiBdXSA7IHRoZW4KKyAgICAgICAgYHJsU0VMb2dWYXIgJ1BFUk0nYAorICAgICAg ICBUUkFOU19GSUxFPSIke1BFUk1bMV19IgorICAgICAgICB1bnNldCBQRVJNWzFdCisgICAgICBm aQorICAgIGZpCisgICAgIyBzZXNlYXJjaCB2LjMgLS10eXBlIGNvdmVycyB0eXBlX3RyYW5zLCB0 eXBlX21lbWJlciwgdHlwZV9jaGFuZ2UKKyAgICAjIHNlc2VhcmNoIHYuNCByZWNvZ25pemVzIDMg ZGlmZmVyZW50IG9wdGlvbnMgZm9yIF5eXgorICAgIGlmIFtbICIkUlVMRVRZUEUiID09ICJ0eXBl X2NoYW5nZSIgXV07IHRoZW4KKyAgICAgIGlmIFtbICR7U0VUT09MU19WRVJ9ID09ICIzIiBdXTsg dGhlbgorICAgICAgICBTRUFSQ0hfUlVMRVRZUEU9InR5cGUiCisgICAgICBlbHNlICMgc2V0b29s cyB2LjQKKyAgICAgICAgU0VBUkNIX1JVTEVUWVBFPSJ0eXBlX2NoYW5nZSIKKyAgICAgIGZpCisg ICAgICBpZiBbWyAtbiAiJHtQRVJNWzFdfSIgXV0gOyB0aGVuCisgICAgICAgIGBybFNFTG9nVmFy ICdQRVJNJ2AKKyAgICAgICAgVFJBTlNfRklMRT0iJHtQRVJNWzFdfSIKKyAgICAgICAgdW5zZXQg UEVSTVsxXQorICAgICAgZmkKKyAgICBmaQorCisgICAgIyByZXBsYWNlICdzZWxmJyB0YXJnZXQg Y29udGV4dCBieSBzb3VyY2UgY29udGV4dAorICAgIFtbICIkVENPTlRFWFQiID09ICJzZWxmIiBd XSAmJiBUQ09OVEVYVD0iJFNDT05URVhUIgorICAgIGBybFNFTG9nVmFyICdURicgJ1JVTEVUWVBF JyAnU0NPTlRFWFQnICdUQ09OVEVYVCcgJ0NMQVNTJyAnUEVSTScgJ1RSQU5TX0ZJTEUnICdTRUFS Q0hfUlVMRVRZUEUnYAorCisgICAgIyBnZXQgcnVsZXMgZnJvbSBzZXNlYXJjaAorICAgIGxvY2Fs IHNzZWFyY2g9InNlc2VhcmNoICRTRVNFQVJDSF9PUFRTIC0tJFNFQVJDSF9SVUxFVFlQRSAtcyAk U0NPTlRFWFQgLXQgJFRDT05URVhUIC1jICRDTEFTUyAkUE9MSUNZX1BBVEgiCisgICAgYHJsU0VM b2dWYXIgc3NlYXJjaGAKKyAgICBsb2NhbCBSVUxFUz0kKGV2YWwgJHNzZWFyY2gpIHx8IGxldCBy ZXN1bHQrKworICAgIFtbIC1uICIkREVCVUciIF1dICYmIGVjaG8gIkFMTCBSVUxFUyR7TEZ9JFJV TEVTIgorCisgICAgIyBmaWx0ZXIgcnVsZXMgc3BlY2lmaWNseSBmb3IgdHlwZV90cmFuc2l0aW9u CisgICAgaWYgW1sgLW4gIiRUUkFOU19GSUxFIiBdXTsgdGhlbgorICAgICAgIyBUT0RPOiBzZXRv b2xzIHY0LjEgcXVvdGVzIGFsbCBmaWxlbmFtZXMsIHY0LjIgb25seSB0aG9zZSB3aXRoIHNwYWNl cworICAgICAgUlVMRVM9JChlY2hvICIkUlVMRVMiIHwgZ3JlcCAtRSAiXDwke1RSQU5TX0ZJTEV9 XD4iKQorICAgIGZpCisKKyAgICAjIGZpbHRlciBydWxlcyBhY2NvcmRpbmcgdG8gQk9PTEVBTgor ICAgIGlmIFtbICIkQk9PTEVBTiIgPT0gIiIgXV07IHRoZW4KKyAgICAgICMgZmlsdGVyIG91dCBh bGwgcnVsZXMgZGVwZW5kaW5nIG9uIGJvb2xlYW5zCisgICAgICBybExvZ0RlYnVnICIkRlVOQ05B TUUoKTogZXhjbHVkaW5nIGNvbmRpdGlvbmFsIHJ1bGVzIgorICAgICAgcmxMb2dEZWJ1ZyAiJEZV TkNOQU1FKCk6IEVYRUNVVElORyBlY2hvIFwiXCRSVUxFU1wiIHwgZ3JlcCAtdiAnXFsnIgorICAg ICAgUlVMRVM9JChlY2hvICIkUlVMRVMiIHwgZ3JlcCAtdiAnXFsnKQorICAgICAgcmxMb2dEZWJ1 ZyAiJEZVTkNOQU1FKCk6IFJVTEVTJHtMRn0kUlVMRVMiCisgICAgZWxpZiBbWyAiJEJPT0xFQU4i ICE9ICIuKiIgXV07IHRoZW4KKyAgICAgICMgZmlsdGVyIG91dCBydWxlcyB3aXRob3V0IGJvb2xl YW4gJEJPT0xFQU4KKyAgICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBwaWNrIG9ubHkgY29u ZGl0aW9uYWwgcnVsZXMgdXNpbmcgJyRCT09MRUFOJyIKKyAgICAgIHdoaWxlIFtbIC1uICIkQk9P TEVBTiIgXV07IGRvCisgICAgICAgIEJPT0xFQU49IiQocmxTRVRyYW5zbGF0ZUJvb2xlYW4gIiRC T09MRUFOIikiCisgICAgICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBFWEVDVVRJTkcgZWNo byBcIlwkUlVMRVNcIiB8IGdyZXAgLUUgXCJcWy4qXDwke0JPT0xFQU59XD4uKlxdXCIiCisgICAg ICAgIFJVTEVTPSQoZWNobyAiJFJVTEVTIiB8IGdyZXAgLUUgIlxbLipcPCR7Qk9PTEVBTn1cPi4q XF0iKQorICAgICAgICBCT09MRUFOPSggIiR7Qk9PTEVBTltAXToxfSIgKQorICAgICAgZG9uZQor ICAgICAgcmxMb2dEZWJ1ZyAiJEZVTkNOQU1FKCk6IFJVTEVTJHtMRn0kUlVMRVMiCisgICAgICBb WyAtbiAiJFRGIiBdXSAmJiB7CisgICAgICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBwaWNr IG9ubHkgJFRGIHJ1bGVzIgorICAgICAgICBybExvZ0RlYnVnICIkRlVOQ05BTUUoKTogRVhFQ1VU SU5HIGVjaG8gXCJcJFJVTEVTXCIgfCBncmVwIC1QIFwiXltFRF0kVEZcIiIKKyAgICAgICAgUlVM RVM9JChlY2hvICIkUlVMRVMiIHwgZ3JlcCAtUCAiXltFRF0kVEYiKQorICAgICAgICBybExvZ0Rl YnVnICIkRlVOQ05BTUUoKTogUlVMRVMke0xGfSRSVUxFUyIKKyAgICAgIH0KKyAgICBmaQorICAg IGVjaG8gIkZJTFRFUkVEIFJVTEVTJHtMRn0kUlVMRVMiCisKKyAgICAjIGxvb3Agb3ZlciBwZXJt aXNzaW9ucworICAgIHdoaWxlIFtbIC1uICIkUEVSTSIgXV07IGRvCisgICAgICBsb2NhbCBTRUFS Q0hGT1I9Ilw8JHtSVUxFVFlQRX1cPi4rXDwke0NMQVNTfVw+LitcPCR7UEVSTX1cPiIKKyAgICAg IGBybFNFTG9nVmFyIFNFQVJDSEZPUmAKKyAgICAgIGVjaG8gIiRSVUxFUyIgfCBncmVwIC1FcSAi JFNFQVJDSEZPUiIKKyAgICAgIHJsQXNzZXJ0RXF1YWxzICIgIGNoZWNrIHBlcm1pc3Npb24gJyRQ RVJNJyBpcyBwcmVzZW50IiAkPyAkZXhwZWN0ZWRfcmVzdWx0IHx8IGxldCByZXN1bHQrKworICAg ICAgUEVSTT0oICIke1BFUk1bQF06MX0iICkKKyAgICBkb25lCisgICAgcmV0dXJuICRyZXN1bHQK KyAgfQorCit9CisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQyIHJsU0VNYXRjaFBhdGhD b24KKworUnVucyBtYXRjaHBhdGhjb24gYW5kIGNoZWNrcyBpZiBtYXRjaHBhdGhjb24gY2FsbGVk IG9uIFBBVEggcmV0dXJucyBjb250ZXh0IHdoaWNoCitjb250YWlucyB0aGUgU1RSSU5HIHByZWNl ZWRlZCBieSBjb2xvbi4gVGhlIGZ1bmN0aW9uIHByaW50cyB0aGUgcmVzdWx0IG9mIG1hdGNocGF0 aGNvbgorYW55d2F5LgorCitJZiB2YXJpYWJsZSBDT0xMRUNUSU9OUyBleGlzdHMsIHRoZSBmdW5j dGlvbiB3aWxsIHRlc3QgYWxsIGNvbGxlY3Rpb24gcGF0aHMKK2NvbnRhaW5pbmcgcmVxdWVzdGVk IHBhdGguCisKKyAgICBybFNFTWF0Y2hQYXRoQ29uICIvdmFyL3d3dy9odG1sIiAiaHR0cF9zeXNf Y29udGVudF90IgorCis9Y3V0CisKKworZnVuY3Rpb24gcmxTRU1hdGNoUGF0aENvbigpIHsKKwor ICAgIGlmIFsgLWUgL3Zhci9ydW4vbm9tYXRjaHBhdGhjb24gXTsgdGhlbgorICAgICAgICBlY2hv ICJybFNFTWF0Y2hQYXRoQ29uIGRpc2FibGVkIGJ5IC92YXIvcnVuL25vbWF0Y2hwYXRoY29uIgor ICAgICAgICByZXR1cm4KKyAgICBmaQorCisgICAgbG9jYWwgRklMRV9QQVRICisgICAgbG9jYWwg TElOS19QQVRICisgICAgbG9jYWwgUkVBTF9UWVBFPWBybFNFVHJhbnNsYXRlQWxpYXMgJDJgCisK KyAgICBGSUxFX1BBVEg9JDEKKyAgICBpZiAhIHJsSXNSSEVMICc8Nic7IHRoZW4KKyAgICAgICAg bG9jYWwgQ0w9KCAkQ09MTEVDVElPTlMgKQorICAgICAgICB3aGlsZSBbWyAtbiAiJENMIiBdXTsg ZG8KKyAgICAgICAgICAgbG9jYWwgcD0iL29wdC9yaC8ke0NMfS9yb290JDEiCisgICAgICAgICAg IFtbIC1lICIkcCIgXV0gJiYgRklMRV9QQVRIPSggIiR7RklMRV9QQVRIW0BdfSIgIiRwIiApCisg ICAgICAgICAgIENMPSggIiR7Q0xbQF06MX0iICkKKyAgICAgICAgZG9uZQorICAgIGZpCisKKyAg ICBsb2NhbCBlYz0wCisgICAgd2hpbGUgW1sgLW4gIiRGSUxFX1BBVEgiIF1dOyBkbworICAgICAg ICBpZiBbIC1MICR7RklMRV9QQVRIfSBdIDsgdGhlbgorICAgICAgICAgICAgTElOS19QQVRIPWBy ZWFkbGluayAtZiAke0ZJTEVfUEFUSH1gCisgICAgICAgICAgICBtYXRjaHBhdGhjb24gJHtGSUxF X1BBVEh9ICR7TElOS19QQVRIfQorICAgICAgICAgICAgbWF0Y2hwYXRoY29uICR7RklMRV9QQVRI fSAke0xJTktfUEFUSH0gfCBncmVwIDoke1JFQUxfVFlQRX0gPiAvZGV2L251bGwKKyAgICAgICAg ICAgIHJsQXNzZXJ0MCAiUmVzdWx0cyBvZiBtYXRjaHBhdGhjb24gJHtGSUxFX1BBVEh9ICR7TElO S19QQVRIfSBzaG91bGQgY29udGFpbiAke1JFQUxfVFlQRX0iICQ/IHx8IGVjPTEKKyAgICAgICAg ZWxzZQorICAgICAgICAgICAgbWF0Y2hwYXRoY29uICR7RklMRV9QQVRIfQorICAgICAgICAgICAg bWF0Y2hwYXRoY29uICR7RklMRV9QQVRIfSB8IGdyZXAgOiR7UkVBTF9UWVBFfSA+IC9kZXYvbnVs bAorICAgICAgICAgICAgcmxBc3NlcnQwICJSZXN1bHQgb2YgbWF0Y2hwYXRoY29uICR7RklMRV9Q QVRIfSBzaG91bGQgY29udGFpbiAke1JFQUxfVFlQRX0iICQ/IHx8IGVjPTEKKyAgICAgICAgZmkK KyAgICAgICAgRklMRV9QQVRIPSggIiR7RklMRV9QQVRIW0BdOjF9IiApCisgICAgZG9uZQorCisg ICAgcmV0dXJuICRlYworfQorCitfX0lOVEVSTkFMX3JsU0VnZXRzZWJvb2woKSB7CisgIGdldHNl Ym9vbCAkKHJsU0VUcmFuc2xhdGVCb29sZWFuICR7MX0pCit9CisKKworX19JTlRFUk5BTF9ybFNF R2V0Qm9vbGVhbk5hbWUoKSB7CisgIF9fSU5URVJOQUxfcmxTRWdldHNlYm9vbCAkezF9IHwgY3V0 IC1kICcgJyAtZiAxCit9CisKKworIyAgICAgIGJvb2xlYW4gbmFtZSAgY3VycmVudCAgcGVyc2lz dGVudAorIyByZXR1cm5zIDxCT09MRUFOPiA8b258b2ZmPiA8b258b2ZmPgorX19JTlRFUk5BTF9y bFNFQm9vbGVhblN0YXRlKCkgeworICBsb2NhbCB0bXA9JycKKyAgbG9jYWwgdG1wMj0nJworICBs b2NhbCBib29sZWFuPSIkKHJsU0VUcmFuc2xhdGVCb29sZWFuICIkMSIpIgorICB0bXA9IiQocGFz dGUgPChnZXRzZWJvb2wgJHtib29sZWFuOi0tYX0gfCBzb3J0KSA8KHNlaW5mbyAtYiRib29sZWFu IC14ICRfX0lOVEVSTkFMX1BPTElDWV9GSUxFIDI+L2Rldi9udWxsIHwgZ3JlcCAtaUUgJ3RydWV8 ZmFsc2UnIHwgdHIgJ0EtWicgJ2EteicgfCBzZWQgLXIgJ3MvXDxmYWxzZVw+L29mZi9nO3MvXDx0 cnVlXD4vb24vZycgfCBzb3J0KSkiCisgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiAkdG1wIgor ICB0bXAyPSIkKGVjaG8gIiR0bXAiIHwgc2VkIC1yICdzL14oXFMrKS4qXDwob258b2ZmKVw+Lipc PChvbnxvZmYpXD4uKi9cMSBcMiBcMy8nKSIKKyAgcmxMb2dEZWJ1ZyAiJEZVTkNOQU1FKCk6ICR0 bXAyIgorICB3aGlsZSByZWFkIC1yIGxpbmU7IGRvCisgICAgW1sgIiRsaW5lIiA9fiBeW2EtekEt Wl8wLTldK1wgKyhvbnxvZmYpXCArKG9ufG9mZikkIF1dIHx8IHsKKyAgICAgIHJsTG9nRXJyb3Ig ImVycm9yIHBhcnNpbmcgYm9vbGVhbiBpbmZvICckbGluZScsIGV4cGVjdGVkIGZvcm1hdCBpcyBC T09MRUFOIChvbnxvZmYpIChvbnxvZmYpIgorICAgICAgcmxMb2dFcnJvciAiICBmaXJzdCBzdGF0 ZSBpcyBhIGN1cnJlbnQgc3RhdGUgZ290IGZyb20gZ2V0c2Vib29sLCBzZWNvbmQgc3RhdGUgaXMg YSBwZXJzaXN0ZW50IHN0YXRlIGdvdCBmcm9tIHNlaW5mbyIKKworICAgIH0KKyAgZG9uZSA8PDwg IiR0bXAyIgorICBlY2hvICIkdG1wMiIKK30KKworCit0cnVlIDw8Jz1jdXQnCis9cG9kCisKKz1o ZWFkMiBybFNFQm9vbGVhbkJhY2t1cAorCitUaGUgZnVuY3Rpb24gdG8gYmFja3VwIGJvdGggY3Vy cmVudCBhbmQgZGVmYXVsdCBzdGF0ZSBvZiBhbGwgb3Igc3BlY2lmaWVkIHRoZQorU0VMaW51eCBi b29sZWFucywgd2hpY2ggaXMgdGhlbiByZXN0b3JlZCBieSBybFNFQm9vbGVhblJlc3RvcmUgZnVu Y3Rpb24uCisKKyAgICBybFNFQm9vbGVhbkJhY2t1cCBbLS1uYW1lc3BhY2UgTkFNRVNQQUNFXSBb Qk9PTEVBTiAuLi5dCisKKz1jdXQKKworIyBVc2FnZTogcmxTRUJvb2xlYW5CYWNrdXAKK2Z1bmN0 aW9uIHJsU0VCb29sZWFuQmFja3VwKCkgeworICAgIGxvY2FsIE5BTUVTUEFDRT0iJF9fSU5URVJO QUxfcmxTRV9OQU1FU1BBQ0UiCisKKyAgICB3aGlsZSBbWyAiJHsxOjA6MX0iID09ICItIiBdXTsg ZG8KKyAgICAgICAgY2FzZSAkMSBpbgorICAgICAgICAgIC0tbmFtZXNwYWNlKQorICAgICAgICAg ICAgICBzaGlmdAorICAgICAgICAgICAgICBOQU1FU1BBQ0U9IiQxIgorICAgICAgICAgICAgOzsK KyAgICAgICAgZXNhYworICAgICAgICBzaGlmdAorICAgIGRvbmUKKworICAgIGxvY2FsIFNUQVRV U0ZJTEU9IiRCRUFLRVJMSUJfRElSL3NlYm9vbGVhbnMke05BTUVTUEFDRX0iCisgICAgbG9jYWwg cmVzPTAKKyAgICBpZiBbWyAteiAiJDEiIF1dOyB0aGVuCisgICAgICBpZiBbIC1mICRTVEFUVVNG SUxFIF07IHRoZW4KKyAgICAgICAgcmxMb2dFcnJvciAiJEZVTkNOQU1FOiBCYWNrdXAgZmlsZSBh bHJlYWR5IGV4aXN0cy4gQmFja2luZyB1cCBhbGwgdGhlIGJvb2xlYW5zIHdvdWxkIGVyYXNlIHRo ZSBjdXJyZW50IGJhY2t1cC4iCisgICAgICAgIHJldHVybiAzMworICAgICAgZmkKKyAgICAgIHRv dWNoICRTVEFUVVNGSUxFCisgICAgICBybExvZyAiJEZVTkNOQU1FOiBCYWNraW5nIHVwIHRoZSBj dXJyZW50IHN0YXRlIG9mIGFsbCB0aGUgU0VMaW51eCBib29sZWFucyIKKyAgICAgIF9fSU5URVJO QUxfcmxTRUJvb2xlYW5TdGF0ZSA+ICRTVEFUVVNGSUxFCisgICAgICByZXM9JD8KKyAgICBlbHNl CisgICAgICAjIGlmIHdlIGRpZG4ndCBzYXZlIHRoZSBzdGF0dXMgeWV0LCBzYXZlIGl0IG5vdwor ICAgICAgbG9jYWwgQk9PTEVBTgorICAgICAgd2hpbGUgW1sgLW4gIiQxIiBdXTsgZG8KKyAgICAg ICAgQk9PTEVBTj0iJDEiCisgICAgICAgIHRvdWNoICIkU1RBVFVTRklMRSIKKyAgICAgICAgaWYg ISBncmVwIC1xICJeJEJPT0xFQU4gIiAiJFNUQVRVU0ZJTEUiOyB0aGVuCisgICAgICAgICAgbG9j YWwgdG1wPSIkKF9fSU5URVJOQUxfcmxTRUJvb2xlYW5TdGF0ZSAkQk9PTEVBTikiCisgICAgICAg ICAgW1sgLW4gIiR0bXAiIF1dICYmIGVjaG8gIiR0bXAiID4+ICIkU1RBVFVTRklMRSIgfHwgbGV0 IHJlcysrCisgICAgICAgIGZpCisgICAgICAgIHNoaWZ0CisgICAgICBkb25lCisgICAgZmkKKyAg ICByZXR1cm4gJHJlcworfQorCisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQyIHJsU0VC b29sZWFuT24sIHJsU0VCb29sZWFuT2ZmCisKK1RoZSBmdW5jdGlvbnMgdG8gc3dpdGNoIFNFTGlu dXggYm9vbGVhbnMgKGN1cnJlbnQgb3IgZGVmYXVsdCB2YWx1ZSB1c2luZyAtUCkgb24vb2ZmLiBX aGVuIGV4ZWN1dGVkIGZvciB0aGUgZmlyc3QgdGltZSwgaXQgcmVtZW1iZXJzIHRoZSBpbml0aWFs IHN0YXR1cyB3aGljaCBpcyByZXN0b3JlZCBsYXRlciBvbiBieSBybFNFQm9vbGVhblJlc3RvcmUu CisKKyAgICBybFNFQm9vbGVhbk9uIFstLW5hbWVzcGFjZSBOQU1FU1BBQ0VdIFstUF0gYm9vbGVh bjEgW2Jvb2xlYW4yIC4uLl0KKyAgICBybFNFQm9vbGVhbk9mZiBbLS1uYW1lc3BhY2UgTkFNRVNQ QUNFXSBbLVBdIGJvb2xlYW4xIFtib29sZWFuMiAuLi5dCisKKz1jdXQKKworcmxTRUJvb2xlYW5P bigpIHsKKwlpZiBbIC16ICIkMSIgXTsgdGhlbgorCQlybExvZ0Vycm9yICIkRlVOQ05BTUU6IE1p c3NpbmcgYXJndW1lbnRzIgorCQlyZXR1cm4gMQorCWZpCisKKyAgICBsb2NhbCBQRVJNQU5FTlQ9 JycKKyAgICBsb2NhbCBQRVJNQU5FTlRfTVNHPScnCisgICAgd2hpbGUgW1sgIiR7MTowOjF9IiA9 PSAiLSIgXV07IGRvCisgICAgICAgIGNhc2UgJDEgaW4KKyAgICAgICAgICAtLW5hbWVzcGFjZSkK KyAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgbG9jYWwgX19JTlRFUk5BTF9ybFNF X05BTUVTUEFDRT0iJDEiCisgICAgICAgICAgICA7OworICAgICAgICAgIC1QKQorICAgICAgICAg ICAgICBQRVJNQU5FTlQ9JyAtUCAnCisgICAgICAgICAgICAgIFBFUk1BTkVOVF9NU0c9IiBwZXJt YW5lbnRseSIKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgc2hpZnQKKyAg ICBkb25lCisKKwlpZiBbIC16ICIkMSIgXTsgdGhlbgorCQlybExvZ0Vycm9yICIkRlVOQ05BTUU6 IE1pc3NpbmcgYXJndW1lbnRzIgorCQlyZXR1cm4gMQorCWZpCisKKwlsb2NhbCBuZXdfc3RhdGVz PScnCisKKwlsb2NhbCBGQUlMVVJFUz0wCisJcmxMb2cgIiRGVU5DTkFNRTogU2V0dGluZyBTRUxp bnV4IGJvb2xlYW5zJFBFUk1BTkVOVF9NU0cgb246ICQqIgorCXdoaWxlIFsgLW4gIiQxIiBdOyBk bworCQlsb2NhbCBCT09MRUFOPSQoX19JTlRFUk5BTF9ybFNFR2V0Qm9vbGVhbk5hbWUgIiQxIikK KwkJW1sgLXogIiRCT09MRUFOIiBdXSAmJiB7CisJCQlybExvZ0Vycm9yICIkRlVOQ05BTUU6IGJv b2xlYW4gbmFtZSAnJDEnIG5vdCBmb3VuZC4iCisJCQlGQUlMVVJFUz0kKCggJEZBSUxVUkVTICsg MSApKQorCQkJc2hpZnQKKwkJCWNvbnRpbnVlCisJCX0KKwkJW1sgIiQxIiAhPSAiJEJPT0xFQU4i IF1dICYmIHsKKwkJCXJsTG9nSW5mbyAiJEZVTkNOQU1FOiB1c2luZyBib29sZWFuIG5hbWUgJyRC T09MRUFOJyBpbnN0ZWFkIG9mICckMSciCisJCX0KKwkJIyBiYWNrdXAgY3VycmVudCBzdGF0ZQor CQlpZiAhIHJsU0VCb29sZWFuQmFja3VwICIkQk9PTEVBTiI7IHRoZW4KKwkJCUZBSUxVUkVTPSQo KCAkRkFJTFVSRVMgKyAxICkpCisJCQlybExvZ0Vycm9yICIkRlVOQ05BTUU6IEJhY2tpbmcgdXAg dGhlICRCT09MRUFOIGJvb2xlYW4gZmFpbGVkIgorCQlmaQorCisJCW5ld19zdGF0ZXMrPSIkQk9P TEVBTj1vbiAiCisJCXNoaWZ0CisJZG9uZQorCisJW1sgLW4gIiRuZXdfc3RhdGVzIiBdXSAmJiB7 CisJICBzZXRzZWJvb2wgJFBFUk1BTkVOVCAkbmV3X3N0YXRlcyB8fCB7CisJCUZBSUxVUkVTPSQo KCAkRkFJTFVSRVMgKyAxICkpCisJCXJsTG9nRXJyb3IgIiRGVU5DTkFNRTogU2V0dGluZyBib29s ZWFuKHMpIHRvIHRydWUgZmFpbGVkIgorCSAgfQorCX0KKwlyZXR1cm4gJEZBSUxVUkVTCit9CisK K3JsU0VCb29sZWFuT2ZmKCkgeworCWlmIFsgLXogIiQxIiBdOyB0aGVuCisJCXJsTG9nRXJyb3Ig IiRGVU5DTkFNRTogTWlzc2luZyBhcmd1bWVudHMiCisJCXJldHVybiAxCisJZmkKKworICAgIGxv Y2FsIFBFUk1BTkVOVD0nJworICAgIGxvY2FsIFBFUk1BTkVOVF9NU0c9JycKKyAgICB3aGlsZSBb WyAiJHsxOjA6MX0iID09ICItIiBdXTsgZG8KKyAgICAgICAgY2FzZSAkMSBpbgorICAgICAgICAg IC0tbmFtZXNwYWNlKQorICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICBsb2NhbCBf X0lOVEVSTkFMX3JsU0VfTkFNRVNQQUNFPSIkMSIKKyAgICAgICAgICAgIDs7CisgICAgICAgICAg LVApCisgICAgICAgICAgICAgIFBFUk1BTkVOVD0nIC1QICcKKyAgICAgICAgICAgICAgUEVSTUFO RU5UX01TRz0iIHBlcm1hbmVudGx5IgorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAg ICAgICBzaGlmdAorICAgIGRvbmUKKworCisJaWYgWyAteiAiJDEiIF07IHRoZW4KKwkJcmxMb2dF cnJvciAiJEZVTkNOQU1FOiBNaXNzaW5nIGFyZ3VtZW50cyIKKwkJcmV0dXJuIDEKKwlmaQorCisJ bG9jYWwgbmV3X3N0YXRlcz0nJworCisJbG9jYWwgRkFJTFVSRVM9MAorCXJsTG9nICIkRlVOQ05B TUU6IFNldHRpbmcgU0VMaW51eCBib29sZWFucyRQRVJNQU5FTlRfTVNHIG9mZjogJCoiCisKKwl3 aGlsZSBbIC1uICIkMSIgXTsgZG8KKworCQlsb2NhbCBCT09MRUFOPSQoX19JTlRFUk5BTF9ybFNF R2V0Qm9vbGVhbk5hbWUgIiQxIikKKwkJW1sgLXogIiRCT09MRUFOIiBdXSAmJiB7CisJCQlybExv Z0Vycm9yICIkRlVOQ05BTUU6IGJvb2xlYW4gbmFtZSAnJDEnIG5vdCBmb3VuZC4iCisJCQlGQUlM VVJFUz0kKCggJEZBSUxVUkVTICsgMSApKQorCQkJc2hpZnQKKwkJCWNvbnRpbnVlCisJCX0KKwkJ W1sgIiQxIiAhPSAiJEJPT0xFQU4iIF1dICYmIHsKKwkJCXJsTG9nSW5mbyAiJEZVTkNOQU1FOiB1 c2luZyBib29sZWFuIG5hbWUgJyRCT09MRUFOJyBpbnN0ZWFkIG9mICckMSciCisJCX0KKwkJIyBi YWNrdXAgY3VycmVudCBzdGF0ZQorCQlpZiAhIHJsU0VCb29sZWFuQmFja3VwICIkQk9PTEVBTiI7 IHRoZW4KKwkJCUZBSUxVUkVTPSQoKCAkRkFJTFVSRVMgKyAxICkpCisJCQlybExvZ0Vycm9yICIk RlVOQ05BTUU6IEJhY2tpbmcgdXAgdGhlICRCT09MRUFOIGJvb2xlYW4gZmFpbGVkIgorCQlmaQor CisJCW5ld19zdGF0ZXMrPSIkQk9PTEVBTj1vZmYgIgorCQlzaGlmdAorCWRvbmUKKworCVtbIC1u ICIkbmV3X3N0YXRlcyIgXV0gJiYgeworCSAgc2V0c2Vib29sICRQRVJNQU5FTlQgJG5ld19zdGF0 ZXMgfHwgeworCQlGQUlMVVJFUz0kKCggJEZBSUxVUkVTICsgMSApKQorCQlybExvZ0Vycm9yICIk RlVOQ05BTUU6IFNldHRpbmcgYm9vbGVhbihzKSB0byBmYWxzZSBmYWlsZWQiCisJICB9CisJfQor CXJldHVybiAkRkFJTFVSRVMKK30KKworCit0cnVlIDw8Jz1jdXQnCis9cG9kCisKKz1oZWFkMiBy bFNFQm9vbGVhblJlc3RvcmUKKworUmVzdG9yZXMgdGhlIG9yaWdpbmFsIHN0YXRlIG9mIFNFTGlu dXggYm9vbGVhbihzKSBiYWNrZWQgdXAgYnkgcmxTRUJvb2xlYW5Pbi9PZmYKK29yIHJsU0VCb29s ZWFuQmFja3VwIC0gYWxsIGJhY2tlZCB1cCBib29sZWFucyBpZiBub25lIHNwZWNpZmllZC4KK0lm IHRoZXJlIHdhcyBubyBib29sZWFuIGJhY2tlZCB1cDsgZWl0aGVyIGJ5IHJsU0VCb29sZWFuT24v T2ZmIG9yCitybFNFQm9vbGVhbkJhY2t1cCB0aGUgZnVuY3Rpb24gbG9ncyBhbiBlcnJvciBhbmQg cmV0dXJucyBjb2RlIDk5LgorCisgICAgcmxTRUJvb2xlYW5SZXN0b3JlIFstLW5hbWVzcGFjZSBO QU1FU1BBQ0VdIFtib29sZWFuMSAuLi5dCisKKz1jdXQKKworZnVuY3Rpb24gcmxTRUJvb2xlYW5S ZXN0b3JlKCkgeworICAgIGxvY2FsIE5BTUVTUEFDRT0nJyB0bXAKKyAgICB3aGlsZSBbWyAiJHsx OjA6MX0iID09ICItIiBdXTsgZG8KKyAgICAgICAgY2FzZSAkMSBpbgorICAgICAgICAgIC0tbmFt ZXNwYWNlKQorICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICBOQU1FU1BBQ0U9IiQx IgorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBzaGlmdAorICAgIGRvbmUK KworCWxvY2FsIEZBSUxVUkVTPTAKKyAgICBpZiBbICEgLWYgJEJFQUtFUkxJQl9ESVIvc2Vib29s ZWFucyR7TkFNRVNQQUNFfSBdOyB0aGVuCisgICAgICAgIHJsTG9nRXJyb3IgIiRGVU5DTkFNRTog Y2Fubm90IHJlc3RvcmUgU0VMaW51eCBib29sZWFucywgc2F2ZWQgc3RhdGVzIGFyZSBub3QgYXZh aWxhYmxlIgorICAgICAgICByZXR1cm4gOTkKKyAgICBmaQorCisgICAgbG9jYWwgU1RBVFVTRklM RT0iJChjYXQgJEJFQUtFUkxJQl9ESVIvc2Vib29sZWFucyR7TkFNRVNQQUNFfSkiCisKKyAgICBs b2NhbCBDSEFOR0VEX0JPT0xFQU5TPScnCisgICAgbG9jYWwgQ1VSUkVOVF9TVEFURVM9JycKKyAg ICBsb2NhbCBwZXJzaXN0ZW50X3N0YXRlcz0nJworICAgIGxvY2FsIGN1cnJlbnRfc3RhdGVzPScn CisgICAgbG9jYWwgQk9PTEVBTgorCisgICAgIyBwb3B1bGF0ZSBib29sZWFucyBsaXN0IGFuZCBj dXJyZW50IHN0YXRlcworICAgIGlmIFsgLXogIiQxIiBdOyB0aGVuICMgbm8gYm9vbGVhbnMgc3Bl Y2lmaWVkLCByZXN0b3JpbmcgYWxsIGJvb2xlYW5zCisgICAgICAgIHJsTG9nICIkRlVOQ05BTUU6 IHJlc3RvcmluZyBhbGwgYmFja2VkIHVwIFNFTGludXggYm9vbGVhbnMiCisgICAgICAgIENVUlJF TlRfU1RBVEVTPSIkKF9fSU5URVJOQUxfcmxTRUJvb2xlYW5TdGF0ZSkiCisgICAgICAgIENIQU5H RURfQk9PTEVBTlM9IiQoZGlmZiA8KCBlY2hvICIkU1RBVFVTRklMRSIgKSA8KCBlY2hvICIkQ1VS UkVOVF9TVEFURVMiICkgfCBncmVwICc8JyB8IHNlZCAncy88IC8vJyB8IGF3ayAneyBwcmludCAk MSB9JykiCisgICAgZWxzZSAgICAgICMgcmVzdG9yaW5nIG9ubHkgc3BlY2lmaWVkIGJvb2xlYW5z CisgICAgICAgIHJsTG9nICIkRlVOQ05BTUU6IHJlc3RvcmluZyBvcmlnaW5hbCBzdGF0dXMgb2Yg U0VMaW51eCBib29sZWFuczogJCoiCisgICAgICAgIHdoaWxlIFsgLW4gIiQxIiBdOyBkbyAjIHBy b2Nlc3MgYWxsIHBhc3NlZCBib29sZWFucworICAgICAgICAgICAgQk9PTEVBTj0kKF9fSU5URVJO QUxfcmxTRUdldEJvb2xlYW5OYW1lICIkMSIpCisgICAgICAgICAgICBbWyAteiAiJEJPT0xFQU4i IF1dICYmIHsKKyAgICAgICAgICAgICAgbGV0IEZBSUxVUkVTKysKKyAgICAgICAgICAgICAgcmxM b2dFcnJvciAiJEZVTkNOQU1FOiBjYW5ub3QgcmVzdG9yZSBTRUxpbnV4IGJvb2xlYW4gJDEsIHdo aWNoIGRvZXMgbm90IGV4aXN0ISIKKyAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAg Y29udGludWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJsTG9nRGVidWcgIiRGVU5DTkFN RSgpOiB1c2luZyBhY3R1YWwgYm9vbGVhbiBuYW1lICckQk9PTEVBTiciCisgICAgICAgICAgICBD VVJSRU5UX1NUQVRFUys9IiQoX19JTlRFUk5BTF9ybFNFQm9vbGVhblN0YXRlICRCT09MRUFOKSIk J1xuJworICAgICAgICAgICAgQ0hBTkdFRF9CT09MRUFOUys9IiRCT09MRUFOIiQnXG4nCisgICAg ICAgICAgICBzaGlmdAorICAgICAgICBkb25lCisgICAgZmkKKworICAgICMgY3JlYXRlIGxpc3Rz IG9mIHBlc2lzdGVudCBhbmQgY3VycmVudCBzdGF0ZXMgdG8gcmVzdG9yZQorICAgIHdoaWxlIHJl YWQgQk9PTEVBTjsgZG8KKyAgICAgICAgW1sgLXogIiRCT09MRUFOIiBdXSAmJiBjb250aW51ZQor ICAgICAgICBgcmxTRUxvZ1ZhciBCT09MRUFOYAorICAgICAgICB0bXA9Ilw8JHtCT09MRUFOfSAo XFMrKSAoXFMrKSIKKyAgICAgICAgaWYgISBbWyAiJFNUQVRVU0ZJTEUiID1+ICR0bXAgXV07IHRo ZW4KKyAgICAgICAgICBsZXQgRkFJTFVSRVMrKworICAgICAgICAgIHJsTG9nRXJyb3IgIiRGVU5D TkFNRTogY2Fubm90IHJlc3RvcmUgU0VMaW51eCBib29sZWFuICRCT09MRUFOLCBvcmlnaW5hbCBz dGF0ZSB3YXMgbm90IHNhdmVkIgorICAgICAgICAgIHNoaWZ0CisgICAgICAgICAgY29udGludWUK KyAgICAgICAgZmkKKyAgICAgICAgQkFDS1VQX1NUQVRFPSIke0JBU0hfUkVNQVRDSFsxXX0iCisg ICAgICAgIEJBQ0tVUF9ERUZBVUxUX1NUQVRFPSIke0JBU0hfUkVNQVRDSFsyXX0iCisgICAgICAg IGBybFNFTG9nVmFyIEJBU0hfUkVNQVRDSCBCQUNLVVBfU1RBVEUgQkFDS1VQX0RFRkFVTFRfU1RB VEVgCisgICAgICAgIGlmICEgW1sgIiRDVVJSRU5UX1NUQVRFUyIgPX4gJHRtcCBdXTsgdGhlbgor ICAgICAgICAgIGxldCBGQUlMVVJFUysrCisgICAgICAgICAgcmxMb2dFcnJvciAiJEZVTkNOQU1F OiBjYW5ub3QgcmVzdG9yZSBTRUxpbnV4IGJvb2xlYW4gJEJPT0xFQU4sIGN1cnJlbnQgc3RhdGUg bm90IGF2YWlsYWJsZSIKKyAgICAgICAgICBzaGlmdAorICAgICAgICAgIGNvbnRpbnVlCisgICAg ICAgIGZpCisgICAgICAgIENVUlJFTlRfU1RBVEU9IiR7QkFTSF9SRU1BVENIWzFdfSIKKyAgICAg ICAgQ1VSUkVOVF9ERUZBVUxUX1NUQVRFPSIke0JBU0hfUkVNQVRDSFsyXX0iCisgICAgICAgIGBy bFNFTG9nVmFyIEJBU0hfUkVNQVRDSCBDVVJSRU5UX1NUQVRFIENVUlJFTlRfREVGQVVMVF9TVEFU RWAKKworICAgICAgICBpZiBbWyAiJENVUlJFTlRfREVGQVVMVF9TVEFURSIgIT0gIiRCQUNLVVBf REVGQVVMVF9TVEFURSIgXV07IHRoZW4KKyAgICAgICAgICBwZXJzaXN0ZW50X3N0YXRlcys9IiRC T09MRUFOPSRCQUNLVVBfREVGQVVMVF9TVEFURSAiCisgICAgICAgICAgY3VycmVudF9zdGF0ZXMr PSIkQk9PTEVBTj0kQkFDS1VQX1NUQVRFICIKKyAgICAgICAgICBDVVJSRU5UX1NUQVRFPSRCQUNL VVBfREVGQVVMVF9TVEFURQorICAgICAgICBmaQorICAgICAgICBpZiBbWyAiJENVUlJFTlRfU1RB VEUiICE9ICIkQkFDS1VQX1NUQVRFIiBdXTsgdGhlbgorICAgICAgICAgIGN1cnJlbnRfc3RhdGVz Kz0iJEJPT0xFQU49JEJBQ0tVUF9TVEFURSAiCisgICAgICAgIGZpCisgICAgZG9uZSA8PDwgIiRD SEFOR0VEX0JPT0xFQU5TIgorCisgICAgIyBkbyB0aGUgYWN0dWFsIHJlc3RvcmF0aW9uCisgICAg W1sgLW4gIiRwZXJzaXN0ZW50X3N0YXRlcyIgXV0gJiYgeworICAgICAgcmxMb2dJbmZvICIkRlVO Q05BTUU6IHJlc3RvcmluZyBib29sZWFuIHBlcnNpc3RlbnQgc3RhdGVzIgorICAgICAgcmxMb2dE ZWJ1ZyAiJEZVTkNOQU1FKCk6ICRwZXJzaXN0ZW50X3N0YXRlcyIKKyAgICAgIHNldHNlYm9vbCAt UCAkcGVyc2lzdGVudF9zdGF0ZXMgfHwgeworICAgICAgICBsZXQgRkFJTFVSRVMrKworICAgICAg ICBybExvZ0Vycm9yICIkRlVOQ05BTUU6IHNldHRpbmcgYm9vbGVhbihzKSBmYWlsZWQiCisgICAg ICB9CisgICAgfQorICAgIFtbIC1uICIkY3VycmVudF9zdGF0ZXMiIF1dICYmIHsKKyAgICAgIHJs TG9nSW5mbyAiJEZVTkNOQU1FOiByZXN0b3JpbmcgYm9vbGVhbiBjdXJyZW50IHN0YXRlcyIKKyAg ICAgIHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiAkY3VycmVudF9zdGF0ZXMiCisgICAgICBzZXRz ZWJvb2wgJGN1cnJlbnRfc3RhdGVzIHx8IHsKKyAgICAgICAgbGV0IEZBSUxVUkVTKysKKyAgICAg ICAgcmxMb2dFcnJvciAiJEZVTkNOQU1FOiBzZXR0aW5nIGJvb2xlYW4ocykgZmFpbGVkIgorICAg ICAgfQorICAgIH0KKyAgICByZXR1cm4gJEZBSUxVUkVTCit9CisKK3RydWUgPDwnPWN1dCcKKz1w b2QKKworPWhlYWQyIHJsU0VNYXRjaFBvcnRDb24KKworUnVucyBzZWluZm8gYW5kIGNoZWNrcyBp ZiBhIFNFTGludXggcG9ydCBvZiB0eXBlICQxICh0Y3AvdWRwKSBhbmQgb2YgbnVtYmVyICQyIGlz IGtub3duIHVuZGVyIGNvbnRleHQgdHlwZSAkMy4gIFJlcXVpcmVkIHBhcmFtZXRlcnMgYW5kIHRo ZWlyIG9yZGVyOiBwb3J0IHR5cGUsIHBvcnQgbnVtYmVyLCBTRUxpbnV4IGNvbnRleHQgdHlwZS4K KworICAgIHJsU0VNYXRjaFBvcnRDb24gUFJPVE8gTlVNQkVSIFRZUEUKKyAgICBybFNFTWF0Y2hQ b3J0Q29uIHRjcCA4MCAiaHR0cF9wb3J0X3QiCisKKz1jdXQKKworCitmdW5jdGlvbiBybFNFTWF0 Y2hQb3J0Q29uKCkgeworCisgICAgaWYgWyAtZSAvdmFyL3J1bi9ub21hdGNocG9ydGNvbiBdOyB0 aGVuCisgICAgICAgIGVjaG8gInJsU0VNYXRjaFBvcnRDb24gZGlzYWJsZWQgYnkgL3Zhci9ydW4v bm9tYXRjaHBvcnRjb24iCisgICAgICAgIHJldHVybgorICAgIGZpCisKKyAgICBpZiAhIHNlaW5m byAtLXZlcnNpb24gfCBncmVwIC1xICczLlswMTIzXScgOyB0aGVuCisgICAgICAgICMgc2V0b29s cyB2LjQKKyAgICAgICAgcmxSdW4gInNlaW5mbyAtLXBvcnRjb249JDIgfCBncmVwIFwicG9ydGNv biAkMSAuKjokM1wiIgorICAgIGVsaWYgcmxJc1JIRUwgNSA7IHRoZW4KKyAgICAgICAgcmxSdW4g InNlaW5mbyAtbCQxIC1wJDIgfCBncmVwIFwicG9ydGNvbi4qOiQzXCIiCisgICAgZWxzZQorICAg ICAgICBybFJ1biAic2VpbmZvIC0tcHJvdG9jb2w9JDEgLS1wb3J0Y29uPSQyIHwgZ3JlcCBcInBv cnRjb24uKjokM1wiIgorICAgIGZpCit9CisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQy IHJsU0VQb3J0QWRkCisKKyMgQWRkIGNvbnRleHQgdHlwZSB0byBnaXZlbiBwb3J0IGlmIG5vdCBp biB0aGUgY3VycmVudCBwb2xpY3kuIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwb3J0IGNvbnRl eHRzIGlzIGJhY2tlZCB1cCBhbmQgY2FuIGJlIHJlc3RvcmVkIGJ5IHJsU0VQb3J0UmVzdG9yZS4K KworICAgIHJsU0VQb3J0QWRkIFBST1RPIE5VTUJFUiBDT05URVhUX1RZUEUKKworPWN1dAorCitm dW5jdGlvbiBybFNFUG9ydEFkZCgpIHsKKyAgICBsb2NhbCBSRVMKKyAgICBsb2NhbCBOQU1FU1BB Q0U9JycKKyAgICB3aGlsZSBbWyAiJHsxOjA6MX0iID09ICItIiBdXTsgZG8KKyAgICAgICAgY2Fz ZSAkMSBpbgorICAgICAgICAgIC0tbmFtZXNwYWNlKQorICAgICAgICAgICAgICBzaGlmdAorICAg ICAgICAgICAgICBOQU1FU1BBQ0U9Il8kMSIKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMK KyAgICAgICAgc2hpZnQKKyAgICBkb25lCisKKyAgICBpZiAhIHNlaW5mbyAtLXZlcnNpb24gfCBn cmVwIC1xICczLlswMTIzXScgOyB0aGVuCisgICAgICAgICMgc2V0b29scyB2LjQKKyAgICAgICAg c2VpbmZvIC0tcG9ydGNvbj0kMiB8IGdyZXAgInBvcnRjb24gJDEgLio6JDMiCisgICAgICAgIFJF Uz0kPworICAgIGVsaWYgcmxJc1JIRUwgNSA7IHRoZW4KKyAgICAgICAgc2VpbmZvIC1sJDEgLXAk MiB8IGdyZXAgInBvcnRjb24gJDEgJDIgLio6JDMiCisgICAgICAgIFJFUz0kPworICAgIGVsc2UK KyAgICAgICAgc2VpbmZvIC0tcHJvdG9jb2w9JDEgLS1wb3J0Y29uPSQyIHwgZ3JlcCAicG9ydGNv biAkMSAuKiQyLio6JDMiCisgICAgICAgIFJFUz0kPworICAgIGZpCisKKyAgICBpZiBbICRSRVMg LWVxIDAgXTsgdGhlbgorICAgICAgICBybExvZyAiJEZVTkNOQU1FOiBUaGUgdHlwZSAkMyBvZiAk MSBwb3J0ICQyIGFscmVhZHkgaW4gcG9saWN5IgorICAgIGVsc2UKKworICAgICAgICBpZiAhIHNl aW5mbyAtLXZlcnNpb24gfCBncmVwIC1xICczLlswMTIzXScgOyB0aGVuCisgICAgICAgICAgICAj IHNldG9vbHMgdi40CisgICAgICAgICAgICBzZWluZm8gLS1wb3J0Y29uPSQyIHwgZ3JlcCAicG9y dGNvbiAkMSBcPCQyXD4iCisgICAgICAgICAgICBSRVM9JD8KKyAgICAgICAgZWxpZiBybElzUkhF TCA1IDsgdGhlbgorICAgICAgICAgICAgc2VpbmZvIC1sJDEgLXAkMiB8IGdyZXAgJ3BvcnRjb24g JDEgXDwkMlw+JworICAgICAgICAgICAgUkVTPSQ/CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg IHNlaW5mbyAtLXByb3RvY29sPSQxIC0tcG9ydGNvbj0kMiB8IGdyZXAgInBvcnRjb24gJDEgXDwk Mlw+IgorICAgICAgICAgICAgUkVTPSQ/CisgICAgICAgIGZpCisKKyAgICAgICAgbG9jYWwgQ0hB TkdFRF9QT1JUX0NPTlRFWFRTPSIkKF9fSU5URVJOQUxfU1RfR0VUICR7TkFNRVNQQUNFOistLW5h bWVzcGFjZSAiJE5BTUVTUEFDRSJ9IHJsU0VfQ0hBTkdFRF9QT1JUX0NPTlRFWFRTKSIKKworICAg ICAgICBpZiBbICRSRVMgLWVxIDAgXTsgdGhlbgorICAgICAgICAgICAgcmxMb2cgIiRGVU5DTkFN RTogU2V0dGluZyBjb250ZXh0IHR5cGUgJDMgdG8gJDEgcG9ydCAkMiIKKyAgICAgICAgICAgIHJs UnVuICJzZW1hbmFnZSBwb3J0IC1tIC10ICQzIC1wICQxICQyIgorICAgICAgICAgICAgaWYgWyAk PyAtZXEgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgQ0hBTkdFRF9QT1JUX0NPTlRFWFRTPSIk Q0hBTkdFRF9QT1JUX0NPTlRFWFRTICQxOiQyOiQzIgorICAgICAgICAgICAgZmkKKyAgICAgICAg ZWxzZQorICAgICAgICAgICAgcmxMb2cgIiRGVU5DTkFNRTogU2V0dGluZyBjb250ZXh0IHR5cGUg JDMgdG8gJDEgcG9ydCAkMiIKKyAgICAgICAgICAgIHJsUnVuICJzZW1hbmFnZSBwb3J0IC1hIC10 ICQzIC1wICQxICQyIgorICAgICAgICAgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgICAgICAg ICAgICAgICAgQ0hBTkdFRF9QT1JUX0NPTlRFWFRTPSIkQ0hBTkdFRF9QT1JUX0NPTlRFWFRTICQx OiQyOiQzIgorICAgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgX19JTlRFUk5BTF9T VF9QVVQgJHtOQU1FU1BBQ0U6Ky0tbmFtZXNwYWNlICIkTkFNRVNQQUNFIn0gcmxTRV9DSEFOR0VE X1BPUlRfQ09OVEVYVFMgIiRDSEFOR0VEX1BPUlRfQ09OVEVYVFMiCisgICAgZmkKK30KKwordHJ1 ZSA8PCc9Y3V0JworPXBvZAorCis9aGVhZDIgcmxTRVBvcnRSZXN0b3JlCisKKyMgUm9sbGJhY2tz IHBvcnQgY29udGV4dHMgc2V0IGJ5IHJsU0VQb3J0QWRkIGZ1bmN0aW9uLiBSZXN0b3JlIGFsbCBp ZiBub3Qgc3BlY2lmaWVkLgorCisgICAgcmxTRVBvcnRSZXN0b3JlCisKKz1jdXQKKworZnVuY3Rp b24gcmxTRVBvcnRSZXN0b3JlKCkgeworICAgIGxvY2FsIElURU0KKyAgICBsb2NhbCBUWVBFCisg ICAgbG9jYWwgUFJPVE8KKyAgICBsb2NhbCBQT1JUCisgICAgbG9jYWwgTkVXTElTVAorICAgIGxv Y2FsIE5BTUVTUEFDRT0nJworICAgIHdoaWxlIFtbICIkezE6MDoxfSIgPT0gIi0iIF1dOyBkbwor ICAgICAgICBjYXNlICQxIGluCisgICAgICAgICAgLS1uYW1lc3BhY2UpCisgICAgICAgICAgICAg IHNoaWZ0CisgICAgICAgICAgICAgIE5BTUVTUEFDRT0iXyQxIgorICAgICAgICAgICAgOzsKKyAg ICAgICAgZXNhYworICAgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBsb2NhbCBDSEFOR0VEX1BP UlRfQ09OVEVYVFM9JChfX0lOVEVSTkFMX1NUX0dFVCAke05BTUVTUEFDRTorLS1uYW1lc3BhY2Ug IiROQU1FU1BBQ0UifSBybFNFX0NIQU5HRURfUE9SVF9DT05URVhUUykKKworICAgIGlmIFsgISAk IyAtbHQgMSBdOyB0aGVuCisgICAgICAgIE5FV0xJU1Q9IiIKKyAgICAgICAgZm9yIElURU0gaW4g JENIQU5HRURfUE9SVF9DT05URVhUUzsgZG8KKyAgICAgICAgICAgIGlmIFsgJElURU0gPT0gIiQx OiQyOiQzIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgcmxMb2cgIiRGVU5DTkFNRTogUmVtb3Zp bmcgY29udGV4dCB0eXBlICQzIHRvICQxIHBvcnQgJDIiCisgICAgICAgICAgICAgICAgcmxSdW4g InNlbWFuYWdlIHBvcnQgLWQgLXQgJDMgLXAgJDEgJDIiCisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgTkVXTElTVD0iJE5FV0xJU1QgJElURU0iCisgICAgICAgICAgICBmaQorICAg ICAgICBkb25lCisgICAgICAgIENIQU5HRURfUE9SVF9DT05URVhUUz0kTkVXTElTVAorCisgICAg ZWxzZQorCisgICAgICAgIGZvciBJVEVNIGluICRDSEFOR0VEX1BPUlRfQ09OVEVYVFM7IGRvCisg ICAgICAgICAgICBUWVBFPWBlY2hvICRJVEVNIHwgY3V0IC1mIDMgLWQgJzonYAorICAgICAgICAg ICAgUFJPVE89YGVjaG8gJElURU0gfCBjdXQgLWYgMSAtZCAnOidgCisgICAgICAgICAgICBQT1JU PWBlY2hvICRJVEVNIHwgY3V0IC1mIDIgLWQgJzonYAorICAgICAgICAgICAgcmxMb2cgIiRGVU5D TkFNRTogUmVtb3ZpbmcgY29udGV4dCB0eXBlICRUWVBFIHRvICRQUk9UTyBwb3J0ICRQT1JUIgor ICAgICAgICAgICAgcmxSdW4gInNlbWFuYWdlIHBvcnQgLWQgLXQgJFRZUEUgLXAgJFBST1RPICRQ T1JUIgorCisgICAgICAgIGRvbmUKKyAgICAgICAgQ0hBTkdFRF9QT1JUX0NPTlRFWFRTPSIiCisg ICAgZmkKKyAgICBfX0lOVEVSTkFMX1NUX1BVVCAke05BTUVTUEFDRTorLS1uYW1lc3BhY2UgIiRO QU1FU1BBQ0UifSBybFNFX0NIQU5HRURfUE9SVF9DT05URVhUUyAiJENIQU5HRURfUE9SVF9DT05U RVhUUyIKK30KKworCisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQyIHJsU0VTZXRUaW1l c3RhbXAsIHJsU0VDaGVja0FWQywgcmxTRUFWQ0NoZWNrCisKK1BhaXIgZnVuY3Rpb25zIHRvIGNo ZWNrIEFWQyBtZXNzYWdlcyBmcm9tIHRoZSBnaXZlbiBtb21lbnQuIFRoZSBzdGFydGluZyB0aW1l c3RhbXBzIGNhbiBiZSBuYW1lZCB0byBiZSBhYmxlIHRvIG1hcmsgbW9yZSB0aGFuIG9uZSBtb21l bnQuCisKKyAgICAjIEJlZ2lubmluZyBvZiB0aGUgcGhhc2UvdGVzdDoKKyAgICBybFNFU2V0VGlt ZXN0YW1wIFt0aW1lc3RhbXBfbmFtZV0KKworICAgICMgRW5kIG9mIHRoZSBwaGFzZS90ZXN0LCBj b3VudCBvbmx5IHVuaWdub3JlZCBBVkNzL0VSUk9SczoKKyAgICBybFNFQ2hlY2tBVkMgWy0tbm8t aWdub3JlXSBbLS1pZ25vcmUgUkVHX0VYUCBbLS1pZ25vcmUgUkVHX0VYUF1dIFt0aW1lc3RhbXBf bmFtZV0KKworICAgICMgb3IgY2hlY2sgd2l0aG91dCBhc3NlcnQsIHByaW50cyBudW1iZXIgb2Yg dW5pZ25vcmVkIGFuZCB1bmV4cGVjdGVkIEFWQ3MvRVJST1JzLCByZXR1cm5zIDAgaWYgbm8gdW5p Z25vcmVkIEFWQy9FUlJPUiBmb3VuZDoKKyAgICBybFNFQVZDQ2hlY2sgWy0tbm8taWdub3JlXSBb LS1pZ25vcmUgUkVHX0VYUCBbLS1pZ25vcmUgUkVHX0VYUF1dIFstLWV4cGVjdCBSRUdfRVhQIFst LWV4cGVjdCBSRUdfRVhQXV0gW3RpbWVzdGFtcF9uYW1lXQorCis9Y3V0CisKK2Z1bmN0aW9uIHJs U0VTZXRUaW1lc3RhbXAoKSB7CisKKyAgICBsb2NhbCBTVEFNUD1gZGF0ZSAiKyVtLyVkLyVZICVU ImAKKyAgICBsb2NhbCBOQU1FPSJUSU1FU1RBTVAiCisKKyAgICBbIC16ICIkMSIgXSB8fCBOQU1F PSIke05BTUV9XyQxIgorICAgIGV2YWwgImV4cG9ydCBfX0lOVEVSTkFMX3JsU0VfJE5BTUU9JyRT VEFNUCciCisgICAgcmxMb2cgIiRGVU5DTkFNRTogU2V0dGluZyB0aW1lc3RhbXAgJyROQU1FJyBb JFNUQU1QXSIKKworfQorCitmdW5jdGlvbiBybFNFQ2hlY2tBVkMoKSB7CisKKyAgICBybFNFQVZD Q2hlY2sgIiRAIiA+IC9kZXYvbnVsbAorICAgIHJsQXNzZXJ0MCAnQ2hlY2sgdGhlcmUgYXJlIG5v IHVuZXhwZWN0ZWQgQVZDcy9FUlJPUnMnICQ/CisKK30KKworZnVuY3Rpb24gcmxTRUFWQ0NoZWNr KCkgeworICAgIGxvY2FsIE5BTUU9IlRJTUVTVEFNUCIKKyAgICBsb2NhbCBpZ25vcmU9KCd0eXBl PVVTRVJfQVZDLipyZWNlaXZlZCAocG9saWN5bG9hZHxzZXRlbmZvcmNlKSBub3RpY2UnKQorICAg IGxvY2FsIGlnbm9yZV9pbnRlcm5hbD0ndHlwZT0oU1lTQ0FMTHxQQVRIfENXRHxQUk9DVElUTEV8 U09DS0VUQ0FMTHxPQkpfUElEfFNPQ0tBRERSKScKKyAgICBsb2NhbCBleHBlY3QKKyAgICBybExv Z0RlYnVnICIkRlVOQ05BTUUoKTogcHJvY2VzcyBvcHRpb25zIgorICAgIGxvY2FsIEdFVE9QVD0k KGdldG9wdCAtcSAtbyBuaTplOiAtbCBuby1pZ25vcmUsaWdub3JlOixleHBlY3Q6LGV4cGVjdGVk OiAtLSAiJEAiKQorICAgIGV2YWwgc2V0IC0tICIkR0VUT1BUIgorICAgIHdoaWxlIFtbIC1uICIk QCIgXV07IGRvCisgICAgICBjYXNlICQxIGluCisgICAgICAtLSkKKyAgICAgICAgc2hpZnQ7IGJy ZWFrCisgICAgICAgIDs7CisgICAgICAtbnwtLW5vLWlnbm9yZSkKKyAgICAgICAgaWdub3JlPSgp CisgICAgICAgIDs7CisgICAgICAtaXwtLWlnbm9yZSkKKyAgICAgICAgc2hpZnQKKyAgICAgICAg aWdub3JlKz0oIiQxIikKKyAgICAgICAgOzsKKyAgICAgIC1lfC0tZXhwZWN0fC0tZXhwZWN0ZWQp CisgICAgICAgIHNoaWZ0CisgICAgICAgIGV4cGVjdCs9KCIkMSIpCisgICAgICAgIDs7CisgICAg ICAqKQorICAgICAgICBlY2hvICJ1bmtub3duIG9wdGlvbiAnJDEnIgorICAgICAgICByZXR1cm4g MQorICAgICAgICA7OworICAgICAgZXNhYworICAgICAgc2hpZnQ7CisgICAgZG9uZQorCisgICAg WyAteiAiJDEiIF0gfHwgTkFNRT0iJHtOQU1FfV8kMSIKKworICAgIGxvY2FsIFNUQU1QCisgICAg ZXZhbCAiU1RBTVA9XCJcJF9fSU5URVJOQUxfcmxTRV8kTkFNRVwiIgorICAgIGBybFNFTG9nVmFy IGV4cGVjdCBpZ25vcmUgaWdub3JlX2ludGVybmFsIFNUQU1QYAorICAgIGlmIFsgLXogIiRTVEFN UCIgXTsgdGhlbgorICAgICAgICBybExvZ0Vycm9yICIkRlVOQ05BTUU6IFRpbWVzdGFtcCAkTkFN RSBpcyBub3QgZGVmaW5lZCIKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbHNlCisgICAgICAgIHJs TG9nICIkRlVOQ05BTUU6IFNlYXJjaCBmb3IgQVZDcywgVVNFUl9BVkNzLCBTRUxJTlVYX0VSUnMs IGFuZCBVU0VSX1NFTElOVVhfRVJScyBzaW5jZSB0aW1lc3RhbXAgJyROQU1FJyBbJFNUQU1QXSIK KyAgICAgICAgbG9jYWwgYXVzZWFyY2hfb3V0cHV0PSQoTENfVElNRT0nZW5fVVMuVVRGLTgnIGF1 c2VhcmNoIC1pIC1tIEFWQyAtbSBVU0VSX0FWQyAtbSBTRUxJTlVYX0VSUiAtbSBVU0VSX1NFTElO VVhfRVJSIC10cyAkU1RBTVAgMj4mMSkKKyAgICAgICAgZWNobyAiJGF1c2VhcmNoX291dHB1dCIg PiYyCisgICAgICAgIGxvY2FsIHJlcz0wCisgICAgICAgICMgZmlsdGVyIG91dCBpZ25vcmVkIHBh dHRlcm5zCisgICAgICAgIFtbIC1uICIke2lnbm9yZVsqXX0iIF1dICYmIHsKKyAgICAgICAgICBy bExvZ0luZm8gIiRGVU5DTkFNRTogaWdub3JpbmcgcGF0dGVybnM6IgorICAgICAgICAgIGxvY2Fs IGkKKyAgICAgICAgICBmb3IgaSBpbiAiJHtpZ25vcmVbQF19IjsgZG8KKyAgICAgICAgICAgIHJs TG9nSW5mbyAiJEZVTkNOQU1FOiAgICAgJGkiCisgICAgICAgICAgICBpZ25vcmVfaW50ZXJuYWw9 IiRpZ25vcmVfaW50ZXJuYWx8JGkiCisgICAgICAgICAgZG9uZQorICAgICAgICB9CisgICAgICAg IHJsTG9nRGVidWcgIiRGVU5DTkFNRSgpOiBmaWx0ZXIgb3V0IGlnbm9yZWQgcGF0dGVybnMiCisg ICAgICAgIGF1c2VhcmNoX291dHB1dD0iJChlY2hvICIkYXVzZWFyY2hfb3V0cHV0IiB8IGdyZXAg LVBpICdedHlwZT0nIHwgZ3JlcCAtdlAgIiRpZ25vcmVfaW50ZXJuYWwiKSIKKyAgICAgICAgYHJs U0VMb2dWYXIgYXVzZWFyY2hfb3V0cHV0YAorICAgICAgICAjIGZpbmQgZXhwZWN0ZWQgYW5kIGZp bHRlciB0aGVuIG91dDsgaWYgbm90IGZvdW5kLCBjb3VudCB0aGVtCisgICAgICAgIGxvY2FsIGV4 cAorICAgICAgICBbWyAtbiAiJHtleHBlY3RbKl19IiBdXSAmJiBybExvZ0luZm8gIiRGVU5DTkFN RTogbG9va2luZyBmb3IgZXhwZWN0ZWQgcGF0dGVybnM6IgorICAgICAgICBmb3IgZXhwIGluICIk e2V4cGVjdFtAXX0iIDsgZG8KKyAgICAgICAgICBpZiBlY2hvICIkYXVzZWFyY2hfb3V0cHV0IiB8 IGdyZXAgLXFQICIkZXhwIiA7IHRoZW4KKyAgICAgICAgICAgIHJsTG9nSW5mbyAgICAiJEZVTkNO QU1FOiAgICAgb2sgICAuLi4gJGV4cCIKKyAgICAgICAgICAgIGF1c2VhcmNoX291dHB1dD0iJChl Y2hvICIkYXVzZWFyY2hfb3V0cHV0IiB8IGdyZXAgLXZQICIkZXhwIikiCisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgcmxMb2dXYXJuaW5nICIkRlVOQ05BTUU6ICAgICBmYWlsIC4uLiAkZXhw IgorICAgICAgICAgICAgbGV0IHJlcysrCisgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAg ICAgICBgcmxTRUxvZ1ZhciByZXMgYXVzZWFyY2hfb3V0cHV0YAorICAgICAgICAjIGNvdW50IHRo ZSByZXN0CisgICAgICAgIGlmIFtbIC1uICIkYXVzZWFyY2hfb3V0cHV0IiBdXSA7IHRoZW4KKyAg ICAgICAgICBsZXQgcmVzKz0kKGVjaG8gIiRhdXNlYXJjaF9vdXRwdXQiIHwgd2MgLWwpCisgICAg ICAgICAgZWNobyAiLS0tPT09PT09PT09PT09PT0tLS0iID4mMgorICAgICAgICAgIGVjaG8gIlVO RVhQRUNURUQgTUVTU0FHRVM6IiA+JjIKKyAgICAgICAgICBlY2hvICIkYXVzZWFyY2hfb3V0cHV0 IiA+JjIKKyAgICAgICAgICBlY2hvICItLS09PT09PT09PT09PT09PS0tLSIgPiYyCisgICAgICAg IGZpCisgICAgICAgIGBybFNFTG9nVmFyIHJlc2AKKworICAgICAgICBlY2hvICIkcmVzIgorICAg ICAgICBbWyAiJHJlcyIgLWVxIDAgXV0KKyAgICAgICAgcmV0dXJuICQ/CisgICAgZmkKKworfQor CisKKworCit0cnVlIDw8Jz1jdXQnCis9cG9kCisKKz1oZWFkMiBybFNFSXNNTFMsIHJsU0VJc1Rh cmdldGVkLCBybFNFSXNTdHJpY3QsIHJsU0VJc01pbmltdW0KKworVGhlIGZ1bmN0aW9ucyB0byBj aGVjayBpZiBkZXNpcmVkIHBvbGljeSBpcyBhY3RpdmUgYXQgdGhlIG1vbWVudC4gUmV0dXJucyAw IGlmIHRydWUuCisKKz1jdXQKKworCisjIHRlc3RzIHdoZXRoZXIgTUxTIHBvbGljeSBpcyB1c2Vk CitmdW5jdGlvbiBybFNFSXNNTFMoKSB7CisgICAgc2VzdGF0dXMgfCBncmVwIC1xaSBtbHMkCit9 CisKKworIyB0ZXN0cyB3aGV0aGVyIHRhcmdldGVkIHBvbGljeSBpcyB1c2VkCitmdW5jdGlvbiBy bFNFSXNUYXJnZXRlZCgpIHsKKyAgICBzZXN0YXR1cyB8IGdyZXAgLXFpIHRhcmdldGVkJAorfQor CisKKyMgdGVzdHMgd2hldGhlciBzdHJpY3QgcG9saWN5IGlzIHVzZWQKK2Z1bmN0aW9uIHJsU0VJ c1N0cmljdCgpIHsKKyAgICBzZXN0YXR1cyB8IGdyZXAgLXFpIHN0cmljdCQKK30KKworCisjIHRl c3RzIHdoZXRoZXIgbWluaW11bSBwb2xpY3kgaXMgdXNlZAorZnVuY3Rpb24gcmxTRUlzTWluaW11 bSgpIHsKKyAgICBzZXN0YXR1cyB8IGdyZXAgLXFpIG1pbmltdW0kCit9CisKK3RydWUgPDwnPWN1 dCcKKz1wb2QKKworPWhlYWQyIHJsU0VEZWZpbmVkCisKK1RoZSBmdW5jdGlvbnMgdG8gY2hlY2sg aWYgZ2l2ZW4gdHlwZXMgZXhpc3QgaW4gdGhlIGN1cnJlbnQgcG9saWN5IGFuZCByZXR1cm5zIDAg aWYgdHJ1ZS4KKworICAgIHJsU0VEZWZpbmVkIGh0dHBkX3Qgc25tcGRfdAorPWN1dAorCisKKyMg U2VhcmNoZXMgZm9yIGFsbCB0aGUgdHlwZXMgZ2l2ZW4gaW4gdGhlIGFyZ3VtZW50IGFuZCByZXR1 cm5zIDAgaWYgYWxsCisjIG9mIHRoZW0gZXhpc3QuIFJldHVybnMgMSBvdGhlcndpc2UuCitmdW5j dGlvbiBybFNFRGVmaW5lZCgpIHsKKyAgICBsb2NhbCBSRVRfVkFMPTAKKyAgICBsb2NhbCBUWVBF CisKKyAgICBmb3IgVFlQRSBpbiAkMSA7IGRvCisgICAgICAgICMgdGhlcmUgYXJlIGFsc28gdHlw ZSBhbGlhc2VzIGluIFJIRUwtNworICAgICAgICBpZiBzZWluZm8gLXQkVFlQRSAyPiYxIHwgZ3Jl cCAtcWkgLWUgZXJyb3IgLWUgJ3R5cGVzOiAwJyA7IHRoZW4KKyAgICAgICAgICAgIGVjaG8gIiRU WVBFIGlzIE5PVCBkZWZpbmVkIgorICAgICAgICAgICAgUkVUX1ZBTD0xCisgICAgICAgIGVsc2UK KyAgICAgICAgICAgIGVjaG8gIiRUWVBFIGlzIGRlZmluZWQiCisgICAgICAgIGZpCisgICAgZG9u ZQorCisgICAgcmV0dXJuICRSRVRfVkFMOworfQorCisKKwordHJ1ZSA8PCc9Y3V0JworPXBvZAor Cis9aGVhZDIgcmxTRVN0YXR1cworCitQcmludHMgdmFyaW91cyBTRUxpbnV4IGluZm9ybWF0aW9u CisKKyAgIHJsU0VTdGF0dXMgICAgICAgICAgICAgICAgICMgcHJpbnRzIHNlc3RhdHVzIHJlc3Vs dHMKKyAgIHJsU0VTdGF0dXMgLWIgW3JlZ2V4cF0gICAgICMgcHJpbnRzIGFsbC9zZWxlY3RlZCBi b29sZWFucyAoZnJvbSBnZXRzZWJvb2wpCisgICBybFNFU3RhdHVzIC1wIFtyZWdleHBdICAgICAj IHByaW50cyBhbGwvc2VsZWN0ZWQgcG9ydHMgKGZyb20gc2VtYW5hZ2UgcG9ydCAtbCkKKyAgIHJs U0VTdGF0dXMgLW0gW3JlZ2V4cF0gICAgICMgcHJpbnRzIGFsbC9zZWxlY3RlZCBzZWxpbnV4IG1v ZHVsZXMgKGZyb20gc2Vtb2R1bGUgLWwpCisgICBybFNFU3RhdHVzIC1lbSBbcmVnZXhwXSAgICAj IHByaW50cyBhbGwvc2VsZWN0ZWQgZW5hYmxlZCBzZWxpbnV4IG1vZHVsZXMKKyAgIHJsU0VTdGF0 dXMgLWRtIFtyZWdleHBdICAgICMgcHJpbnRzIGFsbC9zZWxlY3RlZCBkaXNhYmxlZCBzZWxpbnV4 IG1vZHVsZXMKKyAgIHJsU0VTdGF0dXMgLXQgW3JlZ2V4cF0gICAgICMgcHJpbnRzIGFsbC9zZWxl Y3RlZCBjb250ZXh0IHR5cGVzIChmcm9tIHNlaW5mbyAtdCkKKworPWN1dAorCitmdW5jdGlvbiBy bFNFU3RhdHVzKCkgeworCisgICAgIyAtYiBwYXJhbWV0ZXIgLSBwcmludCBib29sZWFucworICAg IGlmIFsgIiQxIiA9ICItYiIgXTsgdGhlbgorICAgICAgICBybFJ1biAiZ2V0c2Vib29sIC1hIHwg Z3JlcCBcIiQyXCIiCisgICAgICAgIHJldHVybjsKKyAgICBmaQorCisgICAgIyAtcCBwYXJhbWV0 ZXIgLSBwcmludCBwb3J0cworICAgIGlmIFsgIiQxIiA9ICItcCIgXTsgdGhlbgorICAgICAgICBy bFJ1biAic2VtYW5hZ2UgcG9ydCAtbCB8IGdyZXAgXCIkMlwiIgorICAgICAgICByZXR1cm47Cisg ICAgZmkKKworICAgICMgLW0gcGFyYW1ldGVyIC0gcHJpbnQgc2VsaW51eCBtb2R1bGVzCisgICAg aWYgWyAiJDEiID0gIi1tIiBdOyB0aGVuCisgICAgICAgIHJsUnVuICJzZW1vZHVsZSAtbCB8IGdy ZXAgXCIkMlwiIgorICAgICAgICByZXR1cm47CisgICAgZmkKKworICAgICMgLWVtIHBhcmFtZXRl ciAtIHByaW50IGVuYWJsZWQgc2VsaW51eCBtb2R1bGVzCisgICAgaWYgWyAiJDEiID0gIi1lbSIg XTsgdGhlbgorICAgICAgICBybFJ1biAic2Vtb2R1bGUgLWwgfCBncmVwIC12IC1pIGRpc2FibGVk IHwgZ3JlcCBcIiQyXCIiCisgICAgICAgIHJldHVybjsKKyAgICBmaQorCisgICAgIyAtZG0gcGFy YW1ldGVyIC0gcHJpbnQgZGlzYWJsZWQgc2VsaW51eCBtb2R1bGVzCisgICAgaWYgWyAiJDEiID0g Ii1kbSIgXTsgdGhlbgorICAgICAgICBybFJ1biAic2Vtb2R1bGUgLWwgfCBncmVwIC1pIGRpc2Fi bGVkIHwgZ3JlcCBcIiQyXCIiCisgICAgICAgIHJldHVybjsKKyAgICBmaQorCisgICAgIyAtdCBw YXJhbWV0ZXIgLSBwcmludCB0eXBlcworICAgIGlmIFsgIiQxIiA9ICItdCIgXTsgdGhlbgorICAg ICAgICBybFJ1biAic2VpbmZvIC10IHwgZ3JlcCBcIiQyXCIiCisgICAgICAgIHJldHVybjsKKyAg ICBmaQorCisgICAgIyBXaXRob3V0IGFueSBwYXJhbXMgLSBydW4gc2VzdGF0dXMKKyAgICBybFJ1 biAiaWQgLVoiCisgICAgcmxSdW4gInNlc3RhdHVzIgorICAgIGlmIHNlbW9kdWxlIC0taGVscCB8 IGdyZXAgLXFpICJsaXN0LW1vZHVsZXMuKmtpbmQiIDsgdGhlbgorICAgICAgICBybFJ1biAic2Vt b2R1bGUgLS1saXN0LW1vZHVsZXM9ZnVsbCB8IGdyZXAgLWkgZGlzYWJsZWQiIDAsMQorICAgIGVs c2UKKyAgICAgICAgcmxSdW4gInNlbW9kdWxlIC1sIHwgZ3JlcCAtaSBkaXNhYmxlZCIgMCwxCisg ICAgZmkKK30KKworCisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQyIHJsU0VSdW5XaXRo UGFzc3dvcmQKKworVGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGdpdmVuIGNvbW1hbmQgYW5kIHByb3Zp ZGVzIHRoZSBwYXNzd29yZCB3aGVuZXZlciBwcm9tcHRlZCBmb3IgcGFzc3dvcmQuCitUaGUgcGFz c3dvcmQgY2FuIGJlIGVpdGhlciBzdG9yZWQgaW4gUEFTU1dPUkQgZ2xvYmFsIHZhcmlhYmxlIG9y IHNwZWNpZmllZCB1c2luZyAtcCBwYXJhbWV0ZXIuCisKKyAgICBybFNFUnVuV2l0aFBhc3N3b3Jk IFsgLXAgUEFTU1dPUkQgXSBDT01NQU5ECisKKz1jdXQKKworZnVuY3Rpb24gcmxTRVJ1bldpdGhQ YXNzd29yZCgpIHsKKworICBsb2NhbCBQQVNTPSIkUEFTU1dPUkQiCisgICMgcmVhZCBwYXNzd29y ZCBwYXJhbWV0ZXIKKyAgaWYgWyAiJDEiID0gIi1wIiBdOyB0aGVuCisgICAgICBQQVNTPSIkMiIK KyAgICAgIHNoaWZ0IDIKKyAgZmkKKworICBjYXQgPDxFT0YgfCBleHBlY3QgLQorc2V0IHRpbWVv dXQgNQorc3Bhd24gJCoKK2V4cGVjdCB7CisgIC1yZSAiYXNzd29yZDoiIHsgc2VuZCAiJFBBU1Nc ciI7IGV4cF9jb250aW51ZSB9Cit9CitFT0YKKworfQorCit0cnVlIDw8Jz1jdXQnCis9cG9kCisK Kz1oZWFkMiBybFNFU2VydmljZQorCitSdW5zIGdpdmVuIHNlcnZpY2UgdXNpbmcgcnVuX2luaXQg dG9vbCBhbmQgY2hlY2tzIHRoZSBjb250ZXh0IG9mIHRoZSBydW5uaW5nIHByb2Nlc3MuCisKK1Vz YWdlOgorICAgIHJsU0VTZXJ2aWNlICR7Uk9PVF9QQVNTV09SRH0gJHtTRVJWSUNFX05BTUV9ICR7 UFJPQ0VTU19OQU1FfSAke1BST0NFU1NfQ09OVEVYVH0gJHtPUEVSQVRJT05TfQorCitFeGFtcGxl OgorICAgIHJsU0VTZXJ2aWNlICJyb290X3Bhc3N3ZCIgImh0dHBkIiAiaHR0cGQiICJodHRwZF90 IiAic3RhcnQgc3RhdHVzIHN0b3Agc3RhdHVzIgorCis9Y3V0CisKKworZnVuY3Rpb24gcmxTRVNl cnZpY2UoKSB7CisgICAgbG9jYWwgT1BFUkFUSU9OCisgICAgbG9jYWwgUkVUX1ZBTAorICAgIGxv Y2FsIFJFQUxfVFlQRQorCisgICAgZm9yIE9QRVJBVElPTiBpbiAkNTsgZG8KKworICAgICAgICAj IFNldCB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAgICMgU2VydmljZSBzdGF0dXMgY2FuIHJldHVy biBib3RoIDAgYW5kIDMKKyAgICAgICAgaWYgZWNobyAkT1BFUkFUSU9OIHwgZ3JlcCAtcSBzdGF0 dXM7IHRoZW4KKyAgICAgICAgICAgIFJFVF9WQUw9MCwxLDMKKyAgICAgICAgZWxzZQorICAgICAg ICAgICAgUkVUX1ZBTD0wCisgICAgICAgIGZpCisKKyAgICAgICAgIyBSdW4gdGhlIHNlcnZpY2Ug dXNpbmcgcnVuX2luaXQgdG9vbAorICAgICAgICAjcmxSdW4gImVjaG8gJDEgfCBydW5faW5pdCBz ZXJ2aWNlICQyICRPUEVSQVRJT04iICRSRVRfVkFMCisgICAgICAgIGlmIHJsSXNSSEVMIDUgNiA7 IHRoZW4KKyAgICAgICAgICAgIGlmIHJsU0VJc01MUyA7IHRoZW4KKyAgICAgICAgICAgICAgICBy bFJ1biAicmxTRVJ1bldpdGhQYXNzd29yZCAtcCAkMSBydW5faW5pdCBzZXJ2aWNlICQyICRPUEVS QVRJT04iICRSRVRfVkFMCisgICAgICAgICAgICBlbGlmIHJsU0VJc1N0cmljdCA7IHRoZW4KKyAg ICAgICAgICAgICAgICBybFJ1biAicmxTRVJ1bldpdGhQYXNzd29yZCAtcCAkMSBydW5faW5pdCBz ZXJ2aWNlICQyICRPUEVSQVRJT04iICRSRVRfVkFMCisgICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICAgICAgcmxSdW4gInNlcnZpY2UgJDIgJE9QRVJBVElPTiIgJFJFVF9WQUwKKyAgICAgICAg ICAgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJsUnVuICJzZXJ2aWNlICQyICRPUEVS QVRJT04iICRSRVRfVkFMCisgICAgICAgIGZpCisKKyAgICAgICAgUkVBTF9UWVBFPWBybFNFVHJh bnNsYXRlQWxpYXMgJDRgCisgICAgICAgICMgQ2hlY2sgY29udGV4dCBvZiB0aGUgc2VydmljZSBw cm9jZXNzCisgICAgICAgIGlmIGVjaG8gJE9QRVJBVElPTiB8IGdyZXAgLXEgLWUgc3RhcnQgLWUg cmVsb2FkIDsgdGhlbgorICAgICAgICAgICAgc2xlZXAgJDYKKyAgICAgICAgICAgIGlmIFsgIiQz IiAhPSAiLSIgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICBybFJ1biAicHMgLWVmWiB8IGdyZXAg LXYgXCIgZ3JlcCBcIiB8IGdyZXAgLUUgXCIkM1wiIgorICAgICAgICAgICAgICAgIHJsUnVuICJw cyAtZWZaIHwgZ3JlcCAtdiBcIiBncmVwIFwiIHwgZ3JlcCAtRSBcIiR7UkVBTF9UWVBFfS4qJDNc IiIKKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisKKyAgICAgICAgIyBXYWl0IGdpdmVuIG51 bWJlciBvZiBzZWNvbmRzCisgICAgICAgIGlmIFsgISAteiAkNiBdOyB0aGVuCisgICAgICAgICAg ICBzbGVlcCAkNgorICAgICAgICBmaQorCisgICAgZG9uZQorfQorCisKK2Z1bmN0aW9uIHJsU0VU cmFuc0FuZFJ1bigpIHsKKyAgbG9jYWwgVE1QRElSCisgIGxvY2FsIFNFTElOVVhfVFlQRQorICBs b2NhbCBDVVJSRU5UX0NPTlRFWFQKKworICBpZiBbIC1mIHRlc3Rwb2xpY3kudGUgXSA7IHRoZW4K KyAgICBybExvZyAiJEZVTkNOQU1FOiB1c2luZyBhIHByZWRlZmluZWQgbG9jYWwgcG9saWN5IGZv ciB0aGUgdGVzdCIKKyAgICBybFJ1biAibHMgLWwgdGVzdHBvbGljeS4qIgorICAgIHJsUnVuICJt YWtlIC1mIC91c3Ivc2hhcmUvc2VsaW51eC9kZXZlbC9NYWtlZmlsZSB0ZXN0cG9saWN5LnBwIgor ICAgIHJsUnVuICJzZW1vZHVsZSAtaSB0ZXN0cG9saWN5LnBwIgorICAgIHJtIC1yZiB0bXAgIyBi eS1wcm9kdWN0IG9mIHRoZSBsb2NhbCBwb2xpY3kgbW9kdWxlIGNvbXBpbGF0aW9uCisgIGVsc2UK KyAgICBUTVBESVI9YG1rdGVtcCAtZGAKKyAgICBTRUxJTlVYX1RZUEU9YGVjaG8gJDEgfCBjdXQg LWQgOiAtZiAzYAorICAgIENVUlJFTlRfQ09OVEVYVD1gaWQgLVpgCisgICAgcmxMb2cgIiRGVU5D TkFNRTogcHJlcGFyaW5nIGEgbG9jYWwgcG9saWN5IHdoaWNoIGFsbG93cyB0cmFuc2l0aW9uIGZy b20gJENVUlJFTlRfQ09OVEVYVCB0byAkMSIKKyAgICBwdXNoZCAke1RNUERJUn0KKyAgICBlY2hv IC1lICJwb2xpY3lfbW9kdWxlKHRlc3Rwb2xpY3ksMS4wKVxuXG5yZXF1aXJlIHtcbiAgdHlwZSB1 bmNvbmZpbmVkX3Q7ICB0eXBlICRTRUxJTlVYX1RZUEU7XG4gIGNsYXNzIHByb2Nlc3MgeyB0cmFu c2l0aW9uIH07XG59XG5cbmFsbG93IHVuY29uZmluZWRfdCAkU0VMSU5VWF9UWVBFIDogcHJvY2Vz cyB7IHRyYW5zaXRpb24gfTtcbiIgPiB0ZXN0cG9saWN5LnRlCisgICAgcmxSdW4gIm1ha2UgLWYg L3Vzci9zaGFyZS9zZWxpbnV4L2RldmVsL01ha2VmaWxlIgorICAgIHJsUnVuICJzZW1vZHVsZSAt aSB0ZXN0cG9saWN5LnBwIgorICAgIHBvcGQKKyAgICBybSAtcmYgJHtUTVBESVJ9CisgIGZpCisg IHJsUnVuICJydW5jb24gJDEgYmFzaCAtYyBcIiQyXCIiCisgIHJsUnVuICJzZW1vZHVsZSAtciB0 ZXN0cG9saWN5IgorfQorCisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQyIHJsU0VSdW5X aXRoQ29udGV4dAorCitFeGVjdXRlcyBjb21tYW5kIHdpdGggYSBnaXZlbiBjb250ZXh0LiBUaGVy ZSBoYXMgdG8gYmUgdHJhbnNpdGlvbiBhbGxvd2VkIGZyb20gaW5pdHJjX2V4ZWNfdCB0byBhIGRl c2lyZWQgY29udGV4dCBhdmFpbGFibGUuCisKKyAgICBybFNFUnVuV2l0aENvbnRleHQgWy11IFVT RVJdIFstciBST0xFXSBbLXQgVFlQRV0gY21kCisgICAgZS5nLiBybFJ1biAicmxTRVJ1bldpdGhD b250ZXh0IC10IHNtYmRfZXhlY190IHN0YXQgJFRtcERpci90ZXN0bW91bnQiCisKKz1jdXQKKwor CisjIE9QVElPTlMgYXJlIHN1cHBvc2VkIHRvIGJlIHBhc3NlZCB0byBjaGNvbiBjb21tYW5kCitm dW5jdGlvbiBybFNFUnVuV2l0aENvbnRleHQoKSB7CisgICAgbG9jYWwgVE1QRElSCisgICAgbG9j YWwgT1BUSU9OUworICAgIGxvY2FsIENPTU1BTkQKKyAgICBsb2NhbCBSRVRDT0RFCisKKyAgICAj cmVhZCBhbmQgc3RvcmUgb3B0aW9ucworICAgIHdoaWxlIFsgIiR7MTowOjF9IiA9ICItIiBdOyBk bworICAgICAgICBPUFRJT05TKz0iICQxICQyIgorICAgICAgICBzaGlmdCAyCisgICAgZG9uZQor ICAgIGlmIFsgLXogIiQxIiBdOyB0aGVuCisgICAgICAgIHJsTG9nRXJyb3IgIiRGVU5DTkFNRTog Tm8gY29tbWFuZCBwYXNzZWQgdG8gcmxSdW5XaXRoU0VMaW51eENvbnRleHQiCisgICAgICAgIHJl dHVybiA5OQorICAgIGVsc2UKKyAgICAgICAgQ09NTUFORD0kQCAjIHN0b3JlIGNvbW1hbmQgd2l0 aCBhcmd1bWVudHMKKyAgICBmaQorCisgICAgVE1QRElSPWBta3RlbXAgLWRgCisgICAgY2hjb24g LXQgc21iZF90bXBfdCAkVE1QRElSCisKKyAgICAjcHJlcGFyZSBsYXVuY2hlciBzY3JpcHRzIC0g b25lIHdpdGggaW5pdHJjX2V4ZWNfdCBhbmQgb3RoZXIgd2l0aCBkZXNpcmVkIGNvbnRleHQKKyAg ICBlY2hvIC1lICIjIS9iaW4vYmFzaFxuJFRNUERJUi9sYXVuY2hlcjIuc2hcbiIgPiAkVE1QRElS L2xhdW5jaGVyMS5zaAorICAgIGVjaG8gLWUgIiMhL2Jpbi9iYXNoXG4kQ09NTUFORCIgPiAkVE1Q RElSL2xhdW5jaGVyMi5zaAorICAgIGNoY29uIC10IGluaXRyY19leGVjX3QgJFRNUERJUi9sYXVu Y2hlcjEuc2gKKyAgICBjaGNvbiAkT1BUSU9OUyAkVE1QRElSL2xhdW5jaGVyMi5zaAorICAgIGNo bW9kIGEreCAkVE1QRElSLyouc2gKKyAgICAjY2F0ICRUTVBESVIvbGF1bmNoZXIxLnNoCisgICAg I2NhdCAkVE1QRElSL2xhdW5jaGVyMi5zaAorCisgICAgJFRNUERJUi9sYXVuY2hlcjEuc2ggIyBl eGVjdXRlIHRoZSBmaXJzdCBsYXVuY2hlciBzY3JpcHQKKyAgICBSRVRDT0RFPSQ/CisKKyAgICBy bSAtcmYgJFRNUERJUgorICAgIHJldHVybiAkUkVUQ09ERQorCit9CisKK3RydWUgPDwnPWN1dCcK Kz1wb2QKKworPWhlYWQyIHJsU0VUcmFuc2xhdGVCb29sZWFuCisKK1NvbWUgYm9vbGVhbnMgd2Vy ZSByZW5hbWVkIGR1cmluZyB0aGUgdGltZSwgYnV0IGFscmVhZHkgd3JpdHRlbiB0ZXN0cyBjb250 YWluCitib29sZWFuIG5hbWVzIHdoaWNoIG1heSBub3QgYmUgY3VycmVudC4gVGhlIGZ1bmN0aW9u IHRha2VzIGEgYm9vbGVhbiBuYW1lIGFzIGFuIGFyZ3VtZW50LgorV2hlbiBleGVjdXRlZCBvbiBS SEVMLTUgb3IgUkhFTC02IHRoZSBmdW5jdGlvbiByZXR1cm5zIG9sZCBib29sZWFuIG5hbWUuCitX aGVuIGV4ZWN1dGVkIG9uIFJIRUwgPj0gNyB0aGUgZnVuY3Rpb24gcmV0dXJucyBuZXcgYm9vbGVh biBuYW1lLgorSWYgdGhlIGJvb2xlYW4gd2FzIG5vdCByZW5hbWVkIHRoZW4gdGhlIHNhbWUgYm9v bGVhbiBpcyByZXR1cm5lZC4KKworICAgIHJsU0VUcmFuc2xhdGVCb29sZWFuIEJPT0xfTkFNRQor Cis9Y3V0CisKK2Z1bmN0aW9uIHJsU0VUcmFuc2xhdGVCb29sZWFuKCkgeworICAgIGxvY2FsIEZJ RUxEIExJTkUgUkVOQU1FRF9CT09MRUFOUworCisgICAgaWYgcmxJc1JIRUwgNSA+IC9kZXYvbnVs bCAyPiYxOyB0aGVuCisgICAgICAgIEZJRUxEPTIKKyAgICBlbGlmIHJsSXNSSEVMIDYgID4gL2Rl di9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAgaWYgW1sgJDEgPT0gImNsYW1zY2FuX2Nhbl9zY2Fu X3N5c3RlbSIgXV0gfHwKKyAgICAgICAgICAgW1sgJDEgPT0gImFudGl2aXJ1c19jYW5fc2Nhbl9z eXN0ZW0iIF1dIHx8CisgICAgICAgICAgIFtbICQxID09ICJhbWF2aXNfdXNlX2ppdCIgXV0gfHwK KyAgICAgICAgICAgW1sgJDEgPT0gImNsYW1kX3VzZV9qaXQiIF1dIHx8CisgICAgICAgICAgIFtb ICQxID09ICJhbnRpdmlydXNfdXNlX2ppdCIgXV0gOyB0aGVuCisgICAgICAgICAgICBGSUVMRD0x CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEZJRUxEPTIKKyAgICAgICAgZmkKKyAgICBlbHNl CisgICAgICAgIEZJRUxEPTEKKyAgICBmaQorCisgICAgUkVOQU1FRF9CT09MRUFOUz0iCisgICAg YW50aXZpcnVzX2Nhbl9zY2FuX3N5c3RlbSBjbGFtc2Nhbl9jYW5fc2Nhbl9zeXN0ZW0KKyAgICBh bnRpdmlydXNfdXNlX2ppdCBhbWF2aXNfdXNlX2ppdAorICAgIGFudGl2aXJ1c191c2Vfaml0IGNs YW1kX3VzZV9qaXQKKyAgICBhdWRpdGFkbV9leGVjX2NvbnRlbnQgYWxsb3dfYXVkaXRhZG1fZXhl Y19jb250ZW50CisgICAgY29uZG9yX3RjcF9uZXR3b3JrX2Nvbm5lY3QgY29uZG9yX2RvbWFpbl9j YW5fbmV0d29ya19jb25uZWN0CisgICAgY3ZzX3JlYWRfc2hhZG93IGFsbG93X2N2c19yZWFkX3No YWRvdworICAgIGRhZW1vbnNfZHVtcF9jb3JlIGFsbG93X2RhZW1vbnNfZHVtcF9jb3JlCisgICAg ZGFlbW9uc191c2VfdGNwX3dyYXBwZXIgYWxsb3dfZGFlbW9uc191c2VfdGNwX3dyYXBwZXIKKyAg ICBkYWVtb25zX3VzZV90dHkgYWxsb3dfZGFlbW9uc191c2VfdHR5CisgICAgZG9tYWluX2ZkX3Vz ZSBhbGxvd19kb21haW5fZmRfdXNlCisgICAgZnRwZF9hbm9uX3dyaXRlIGFsbG93X2Z0cGRfYW5v bl93cml0ZQorICAgIGZ0cGRfZnVsbF9hY2Nlc3MgYWxsb3dfZnRwZF9mdWxsX2FjY2VzcworICAg IGZ0cGRfdXNlX2NpZnMgYWxsb3dfZnRwZF91c2VfY2lmcworICAgIGZ0cGRfdXNlX25mcyBhbGxv d19mdHBkX3VzZV9uZnMKKyAgICBnc3NkX3JlYWRfdG1wIGFsbG93X2dzc2RfcmVhZF90bXAKKyAg ICBndWVzdF9leGVjX2NvbnRlbnQgYWxsb3dfZ3Vlc3RfZXhlY19jb250ZW50CisgICAgaHR0cGRf YW5vbl93cml0ZSBhbGxvd19odHRwZF9hbm9uX3dyaXRlCisgICAgaHR0cGRfbW9kX2F1dGhfbnRs bV93aW5iaW5kIGFsbG93X2h0dHBkX21vZF9hdXRoX250bG1fd2luYmluZAorICAgIGh0dHBkX21v ZF9hdXRoX3BhbSBhbGxvd19odHRwZF9tb2RfYXV0aF9wYW0KKyAgICBodHRwZF9zeXNfc2NyaXB0 X2Fub25fd3JpdGUgYWxsb3dfaHR0cGRfc3lzX3NjcmlwdF9hbm9uX3dyaXRlCisgICAgaWNlY2Fz dF91c2VfYW55X3RjcF9wb3J0cyBpY2VjYXN0X2Nvbm5lY3RfYW55CisgICAga2VyYmVyb3NfZW5h YmxlZCBhbGxvd19rZXJiZXJvcworICAgIGxvZ2luX2NvbnNvbGVfZW5hYmxlZCBhbGxvd19jb25z b2xlX2xvZ2luCisgICAgbG9nd2F0Y2hfY2FuX25ldHdvcmtfY29ubmVjdF9tYWlsIGxvZ3dhdGNo X2Nhbl9zZW5kbWFpbAorICAgIG1vdW50X2FueWZpbGUgYWxsb3dfbW91bnRfYW55ZmlsZQorICAg IG1wbGF5ZXJfZXhlY3N0YWNrIGFsbG93X21wbGF5ZXJfZXhlY3N0YWNrCisgICAgbmFtZWRfdGNw X2JpbmRfaHR0cF9wb3J0IG5hbWVkX2JpbmRfaHR0cF9wb3J0CisgICAgbmZzZF9hbm9uX3dyaXRl IGFsbG93X25mc2RfYW5vbl93cml0ZQorICAgIG5pc19lbmFibGVkIGFsbG93X3lwYmluZAorICAg IHBvbHlpbnN0YW50aWF0aW9uX2VuYWJsZWQgYWxsb3dfcG9seWluc3RhbnRpYXRpb24KKyAgICBw b3N0Zml4X2xvY2FsX3dyaXRlX21haWxfc3Bvb2wgYWxsb3dfcG9zdGZpeF9sb2NhbF93cml0ZV9t YWlsX3Nwb29sCisgICAgcG9zdGdyZXNxbF9jYW5fcnN5bmMgc2VwZ3NxbF9lbmFibGVfcGl0cl9p bXBsZW1lbnRhdGlvbgorICAgIHBvc3RncmVzcWxfc2VsaW51eF90cmFuc21pdF9jbGllbnRfbGFi ZWwgc2VwZ3NxbF90cmFuc21pdF9jbGllbnRfbGFiZWwKKyAgICBwb3N0Z3Jlc3FsX3NlbGludXhf dW5jb25maW5lZF9kYmFkbSBzZXBnc3FsX3VuY29uZmluZWRfZGJhZG0KKyAgICBwb3N0Z3Jlc3Fs X3NlbGludXhfdXNlcnNfZGRsIHNlcGdzcWxfZW5hYmxlX3VzZXJzX2RkbAorICAgIHB1cHBldGFn ZW50X21hbmFnZV9hbGxfZmlsZXMgcHVwcGV0X21hbmFnZV9hbGxfZmlsZXMKKyAgICByc3luY19h bm9uX3dyaXRlIGFsbG93X3JzeW5jX2Fub25fd3JpdGUKKyAgICBzYXNsYXV0aGRfcmVhZF9zaGFk b3cgYWxsb3dfc2FzbGF1dGhkX3JlYWRfc2hhZG93CisgICAgc2VjYWRtX2V4ZWNfY29udGVudCBh bGxvd19zZWNhZG1fZXhlY19jb250ZW50CisgICAgc2VsaW51eHVzZXJfZGlyZWN0X2RyaV9lbmFi bGVkIHVzZXJfZGlyZWN0X2RyaQorICAgIHNlbGludXh1c2VyX2V4ZWNoZWFwIGFsbG93X2V4ZWNo ZWFwCisgICAgc2VsaW51eHVzZXJfZXhlY21vZCBhbGxvd19leGVjbW9kCisgICAgc2VsaW51eHVz ZXJfZXhlY3N0YWNrIGFsbG93X2V4ZWNzdGFjaworICAgIHNlbGludXh1c2VyX215c3FsX2Nvbm5l Y3RfZW5hYmxlZCBhbGxvd191c2VyX215c3FsX2Nvbm5lY3QKKyAgICBzZWxpbnV4dXNlcl9waW5n IHVzZXJfcGluZworICAgIHNlbGludXh1c2VyX3Bvc3RncmVzcWxfY29ubmVjdF9lbmFibGVkIGFs bG93X3VzZXJfcG9zdGdyZXNxbF9jb25uZWN0CisgICAgc2VsaW51eHVzZXJfcndfbm9leGF0dHJm aWxlIHVzZXJfcndfbm9leGF0dHJmaWxlCisgICAgc2VsaW51eHVzZXJfc2hhcmVfbXVzaWMgdXNl cl9zaGFyZV9tdXNpYworICAgIHNlbGludXh1c2VyX3RjcF9zZXJ2ZXIgdXNlcl90Y3Bfc2VydmVy CisgICAgc21iZF9hbm9uX3dyaXRlIGFsbG93X3NtYmRfYW5vbl93cml0ZQorICAgIHNzaF9rZXlz aWduIGFsbG93X3NzaF9rZXlzaWduCisgICAgc3RhZmZfZXhlY19jb250ZW50IGFsbG93X3N0YWZm X2V4ZWNfY29udGVudAorICAgIHN5c2FkbV9leGVjX2NvbnRlbnQgYWxsb3dfc3lzYWRtX2V4ZWNf Y29udGVudAorICAgIHVzZXJfZXhlY19jb250ZW50IGFsbG93X3VzZXJfZXhlY19jb250ZW50Cisg ICAgeGd1ZXN0X2V4ZWNfY29udGVudCBhbGxvd194Z3Vlc3RfZXhlY19jb250ZW50CisgICAgeHNl cnZlcl9jbGllbnRzX3dyaXRlX3hzaG0gYWxsb3dfd3JpdGVfeHNobQorICAgIHhzZXJ2ZXJfZXhl Y21lbSBhbGxvd194c2VydmVyX2V4ZWNtZW0KKyAgICB6ZWJyYV93cml0ZV9jb25maWcgYWxsb3df emVicmFfd3JpdGVfY29uZmlnCisgICAgIgorCisgICAgTElORT0iJChlY2hvICIke1JFTkFNRURf Qk9PTEVBTlN9IiB8IGdyZXAgLUUgLS0gIlw8JHsxfVw+IikiCisgICAgaWYgWyAkPyAtZXEgMCBd IDsgdGhlbgorICAgICAgICBlY2hvICRMSU5FIHwgY3V0IC1kICcgJyAtZiAke0ZJRUxEfQorICAg IGVsc2UKKyAgICAgICAgZWNobyAkMQorICAgIGZpCisKKyAgICByZXR1cm4gMAorfQorCisKK3Ry dWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQyIHJsU0VUcmFuc2xhdGVBbGlhcworCitJZiBmaXJz dCBwYXJhbWV0ZXIgaXMgYW4gYWxpYXMgdGhlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVh bCB0eXBlLgorSWYgZmlyc3QgcGFyYW1ldGVyIGlzIGEgcmVhbCB0eXBlIHRoZW4gdGhlIGZ1bmN0 aW9uIHJldHVybnMgdGhlIHJlYWwgdHlwZS4KK0xpbWl0YXRpb246IHNlaW5mbyBkb2VzIG5vdCBy ZXBvcnQgYWxpYXNlcyBvbiBSSEVMLTUgYW5kIFJIRUwtNiBub3cuCisKKyAgICBybFNFVHJhbnNs YXRlQWxpYXMgQUxJQVMKKworPWN1dAorCitmdW5jdGlvbiBybFNFVHJhbnNsYXRlQWxpYXMgewor ICAgIGlmIHJsSXNSSEVMIDUgOyB0aGVuCisgICAgICAgIGVjaG8gJDEKKyAgICAgICAgcmV0dXJu IDAKKyAgICBlbGlmIHJsSXNSSEVMIDYgOyB0aGVuCisgICAgICAgIGlmIHNlaW5mbyAtdCQxIDI+ JjEgfCBncmVwIC1xICJFUlJPUjoiIDsgdGhlbgorICAgICAgICAgICAgZWNobyAkMQorICAgICAg ICAgICAgcmV0dXJuIDEKKyAgICAgICAgZWxpZiBzZWluZm8gLXQkMSAyPiYxIHwgZ3JlcCAtcSAi ICQxIiA7IHRoZW4KKyAgICAgICAgICAgIGVjaG8gJDEKKyAgICAgICAgICAgIHJldHVybiAwCisg ICAgICAgIGVsc2UgIyB0aGUgdHlwZSBzaG91bGQgYmUgdXNlZCBlaXRoZXIgYXMgYSBzb3VyY2Ug b3IgYXMgYSB0YXJnZXQgaW4gYW4gYWxsb3cgcnVsZQorICAgICAgICAgICAgKCBzZXNlYXJjaCAt cyAkMSAtQSB8IHRyIC1zICcgJyB8IGN1dCAtZCAnICcgLWYgMyA7IHNlc2VhcmNoIC10ICQxIC1B IHwgdHIgLXMgJyAnIHwgY3V0IC1kICcgJyAtZiA0ICkgfCBzb3J0IHwgdW5pcSB8IGdyZXAgIl4u Kl90JCIKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGZpCisgICAgZWxzZQorICAgICAg ICBsb2NhbCBzZWluZm9fb3V0CisgICAgICAgIHNlaW5mb19vdXQ9IiQoc2VpbmZvIC10JDEgMj4m MSApIgorICAgICAgICBpZiBlY2hvICIkc2VpbmZvX291dCIgfCBncmVwIC1xICJFUlJPUjoiIDsg dGhlbgorICAgICAgICAgICAgIyB0aGUgdHlwZSB3YXMgbm90IHJlY29nbml6ZWQKKyAgICAgICAg ICAgIGVjaG8gJDEKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgZWNobyAiJHNl aW5mb19vdXQiIHwgZ3JlcCAtcSAiVHlwZU5hbWUgIiA7IHRoZW4KKyAgICAgICAgICAgIHNlaW5m byAtdCQxIDI+L2Rldi9udWxsIHwgZ3JlcCBUeXBlTmFtZSB8IHRyIC1zICcgJyB8IGN1dCAtZCAn ICcgLWYgMworICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZWxpZiBlY2hvICIkc2VpbmZv X291dCIgfCBncmVwIC1xICJUeXBlczogMCIgOyB0aGVuCisgICAgICAgICAgICAjIGNhbm5vdCB0 cmFuc2xhdGUgYWxpYXMsIGlmIHNldG9vbHMgdi40IGFyZSB1c2VkIHRoZW4gQlojMTU4MTc2MQor ICAgICAgICAgICAgZWNobyAkMQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZWxpZiBz ZWluZm8gLS12ZXJzaW9uIHwgZ3JlcCAtcSBeNCA7IHRoZW4KKyAgICAgICAgICAgICMgc2V0b29s cyB2LjQKKyAgICAgICAgICAgIHNlaW5mbyAtdCQxIDI+L2Rldi9udWxsIHwgdGFpbCAtbiAxIHwg dHIgLXMgJyAnIHwgY3V0IC1kICcgJyAtZiAyCisgICAgICAgICAgICByZXR1cm4gMAorICAgICAg ICBlbHNlCisgICAgICAgICAgICAjIHNldG9vbHMgdi4zCisgICAgICAgICAgICBzZWluZm8gLXQk MSAyPi9kZXYvbnVsbCB8IGhlYWQgLW4gMSB8IHRyIC1zICcgJyB8IGN1dCAtZCAnICcgLWYgMgor ICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZmkKKyAgICBmaQorfQorCit0cnVlIDw8Jz1j dXQnCis9cG9kCisKKz1oZWFkMiBybFNFTGlzdFNlcnZpY2VzCisKK1RoZXJlIGFyZSBtYW55IHNl cnZpY2VzIHdoaWNoIGJ5IGRlZmF1bHQgcnVuIG9uIHRoZSBzYW1lIHBvcnQuCitUaGUgZnVuY3Rp b24gcmV0dXJucyBhIGxpc3Qgb2Ygc3VjaCBzZXJ2aWNlcyB3aGljaCBydW4gb24gZ2l2ZW4gcG9y dC4KK090aGVyd2lzZSB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBsaXN0LgorCis9Y3V0 CisKK2Z1bmN0aW9uIHJsU0VMaXN0U2VydmljZXMoKSB7CisgICAgbG9jYWwgU0VSVklDRVNfQVJS QVkKKworICAgIGlmIFsgJDEgLWx0IDEgLW8gJDEgLWd0IDY1NTM1IF0gOyB0aGVuCisgICAgICAg IHJsTG9nRXJyb3IgIiRGVU5DTkFNRTogaW52YWxpZCBwb3J0IG51bWJlciIKKyAgICAgICAgcmV0 dXJuIDEKKyAgICBmaQorCisgICAgU0VSVklDRVNfQVJSQVlbMjFdPSd2c2Z0cGQgcHJvZnRwZCBw dXJlLWZ0cGQgbGlnaHR0cGQnICMgRlRQIHNlcnZlcnMKKyAgICBTRVJWSUNFU19BUlJBWVsyNV09 J2V4aW0gcG9zdGZpeCBzZW5kbWFpbCcgIyBTTVRQIHNlcnZlcnMKKyAgICBTRVJWSUNFU19BUlJB WVs1M109J25hbWVkIG5hbWVkLXNkYiB1bmJvdW5kIHlhZGlmYWQgbnNkIHBkbnMnICMgRE5TIHNl cnZlcnMKKyAgICBTRVJWSUNFU19BUlJBWVs4MF09J2h0dHBkIGNoZXJva2VlIGxpZ2h0dHBkIG5n aW54IHRodHRwZCcgIyBIVFRQIHNlcnZlcnMKKyAgICBTRVJWSUNFU19BUlJBWVsxMjNdPSdudHBk IGNocm9ueWQnICMgTlRQIHNlcnZlcnMKKworICAgIGVjaG8gLW4gJHtTRVJWSUNFU19BUlJBWVsk MV19CisgICAgcmV0dXJuIDAKK30KKworCisKK3RydWUgPDwnPWN1dCcKKz1wb2QKKworPWhlYWQy IHJsU0VTZXRFbmZvcmNlCisKK1RoZSBmdW5jdGlvbnMgc2V0cyBzZWxpbnV4IG1vZGUgdG8gRW5m b3JjaW5nIHVubGVzcyBlbnYuIHZhcmlhYmxlIEVORk9SQ0lORyBpcyBzZXQgdG8gMC4gVGhlbiwK K3RoZSBwZXJtaXNzaXZlIG1vZGUgaXMgc2V0LiBNb3Jlb3Zlciwgd2hlbiB0aGUgdGVzdCBpcyBy dW5uaW5nIGluIHBlcm1pc3NpdmUgbW9kZSwgdGhlIGZ1bmN0aW9uCit0aHJvd24gYSBXQVJOLgor Cis9Y3V0CisKK2Z1bmN0aW9uIHJsU0VTZXRFbmZvcmNlKCkgeworCisgICAgaWYgWyAieCRFTkZP UkNJTkciICE9ICJ4MCIgXTsgdGhlbgorICAgICAgICBFTkZPUkNJTkc9MQorICAgIGZpCisKKyAg ICBybFJ1biAic2V0ZW5mb3JjZSAkRU5GT1JDSU5HIgorCisgICAgZ2V0ZW5mb3JjZSB8IGdyZXAg UGVybWlzc2l2ZSAmJiBybExvZ1dhcm5pbmcgIiRGVU5DTkFNRTogVGhlIHRlc3QgaXMgcnVubmlu ZyBpbiBTRUxpbnV4IHBlcm1pc3NpdmUgbW9kZS4iCisKK30KKworCisKK19fSU5URVJOQUxfcmxT RU1vZHVsZUxpc3QoKSB7CisgIGxvY2FsIHNlbW9kdWxlX2xpc3QKKyAgZXZhbCBzZW1vZHVsZV9s aXN0PSJcJCgkX19JTlRFUk5BTF9TRU1PRFVMRV9MSVNUSU5HKSI7CisgIGxvY2FsIHJlcz0kPwor ICBlY2hvICIkc2Vtb2R1bGVfbGlzdCIgfCBzZWQgLXIgJ3MvXlswLTldK1xzLy8nCisgIHJldHVy biAkcmVzCit9CisKKworOiA8PCc9Y3V0JworPXBvZAorCis9aGVhZDIgcmxTRU1vZHVsZUVuYWJs ZQorCitUaGUgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gZW5hYmxlIHBvbGljeSBtb2R1bGUocykuCisK KyAgICBybFNFTW9kdWxlRW5hYmxlIFstLW5hbWVzcGFjZSBOQU1FU1BBQ0VdIE1PRFVMRSAuLi4K KworUmV0dXJuIG51bWJlciBvZiBmYWlsdXJlcworCitTZWUgYWxzbyBybFNFTW9kdWxlUmVzdG9y ZQorCis9Y3V0CisKK3JsU0VNb2R1bGVFbmFibGUoKSB7CisgIGxvY2FsIE5BTUVTUEFDRT0nJyBy ZXM9MAorICB3aGlsZSBbWyAiJHsxOjA6MX0iID09ICItIiBdXTsgZG8KKyAgICAgIGNhc2UgJDEg aW4KKyAgICAgICAgLS1uYW1lc3BhY2UpCisgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAg TkFNRVNQQUNFPSJfJDEiCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIHNoaWZ0Cisg IGRvbmUKKyAgbG9jYWwgbW9kdWxlIHNlbW9kdWxlX2xpc3QgdG9fZW5hYmxlCisgIGlmIHNlbW9k dWxlX2xpc3Q9IiQoX19JTlRFUk5BTF9ybFNFTW9kdWxlTGlzdCkiOyB0aGVuCisgICAgZm9yIG1v ZHVsZSBpbiAiJEAiIDsgZG8KKyAgICAgIGxvY2FsIHNlbW9kdWxlPSIkKGVjaG8gIiRzZW1vZHVs ZV9saXN0IiB8IGdyZXAgLUUgIl4ke21vZHVsZX1ccyIpIgorICAgICAgaWYgW1sgLXogIiRzZW1v ZHVsZSIgXV0gOyB0aGVuCisgICAgICAgIHJsTG9nRXJyb3IgIiRGVU5DTkFNRTogbW9kdWxlICck bW9kdWxlJyBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciCisgICAgICAgIGxldCByZXMrKworICAg ICAgZWxzZQorICAgICAgICBsb2NhbCBzdGF0ZT0iJChlY2hvICIkc2Vtb2R1bGUiIHwgZ3JlcCAt aXFFICdcc2Rpc2FibGVkJCcgJiYgZWNobyBkaXNhYmxlZCB8fCBlY2hvIGVuYWJsZWQpIgorICAg ICAgICBbWyAteiAiJChfX0lOVEVSTkFMX1NUX0dFVCAke05BTUVTUEFDRTorLS1uYW1lc3BhY2Ug IiROQU1FU1BBQ0UifSAtLXNlY3Rpb249c2Vtb2R1bGUgJG1vZHVsZSkiIF1dICYmIFwKKyAgICAg ICAgICBfX0lOVEVSTkFMX1NUX1BVVCAke05BTUVTUEFDRTorLS1uYW1lc3BhY2UgIiROQU1FU1BB Q0UifSAtLXNlY3Rpb249c2Vtb2R1bGUgJG1vZHVsZSAkc3RhdGUKKyAgICAgICAgICBfX0lOVEVS TkFMX1NUX1BVVCAke05BTUVTUEFDRTorLS1uYW1lc3BhY2UgIiROQU1FU1BBQ0UifSAtLXNlY3Rp b249c2Vtb2R1bGUgY2hhbmdlZF9tb2R1bGVzICIkKF9fSU5URVJOQUxfU1RfR0VUICR7TkFNRVNQ QUNFOistLW5hbWVzcGFjZSAiJE5BTUVTUEFDRSJ9IC0tc2VjdGlvbj1zZW1vZHVsZSBjaGFuZ2Vk X21vZHVsZXMpICRtb2R1bGUiCisgICAgICAgIGlmIFtbICIkc3RhdGUiID09ICJlbmFibGVkIiBd XTsgdGhlbgorICAgICAgICAgIHJsTG9nSW5mbyAiJEZVTkNOQU1FOiBtb2R1bGUgJyRtb2R1bGUn IGlzIGFscmVhZHkgZW5hYmxlZCIKKyAgICAgICAgZWxzZQorICAgICAgICAgIHRvX2VuYWJsZT0i JHRvX2VuYWJsZSAkbW9kdWxlIgorICAgICAgICBmaQorICAgICAgZmkKKyAgICBkb25lCisgICAg dG9fZW5hYmxlPSIke3RvX2VuYWJsZToxfSIKKyAgICBpZiBbWyAtbiAiJHRvX2VuYWJsZSIgXV07 IHRoZW4KKyAgICAgIHJsTG9nICIkRlVOQ05BTUU6IGVuYWJsaW5nICckdG9fZW5hYmxlJyBtb2R1 bGUocyksIHJ1bm5pbmcgJ3NlbW9kdWxlIC1lICR0b19lbmFibGUnIgorICAgICAgc2Vtb2R1bGUg LWUgJHRvX2VuYWJsZQorICAgICAgbG9jYWwgc2Vtb2R1bGVfcmVzPSQ/CisgICAgICBpZiBbWyAk c2Vtb2R1bGVfcmVzIC1lcSAwIF1dIDsgdGhlbgorICAgICAgICBybExvZyAiJEZVTkNOQU1FOiBz ZW1vZHVsZSBlbmFibGUgcGFzc2VkIgorICAgICAgZWxzZQorICAgICAgICBybExvZyAiJEZVTkNO QU1FOiBzZW1vZHVsZSBlbmFibGUgZmFpbGVkIHdpdGggZXhpdCBjb2RlICckc2Vtb2R1bGVfcmVz JyIKKyAgICAgICAgbGV0IHJlcysrCisgICAgICBmaQorICAgIGZpCisgIGVsc2UKKyAgICBybExv Z0Vycm9yICIkRlVOQ05BTUU6IGNvdWxkIG5vdCBnZXQgbW9kdWxlcyBsaXN0IgorICAgIGxldCBy ZXMrKworICBmaQorICByZXR1cm4gJHJlcworfQorCisKKzogPDwnPWN1dCcKKz1wb2QKKworPWhl YWQyIHJsU0VNb2R1bGVEaXNhYmxlCisKK1RoZSBmdW5jdGlvbiBhdHRlbXB0cyB0byBkaXNhYmxl IHBvbGljeSBtb2R1bGUocykuCisKKyAgICBybFNFTW9kdWxlRGlzYWJsZSBbLS1uYW1lc3BhY2Ug TkFNRVNQQUNFXSBNT0RVTEUgLi4uCisKK1JldHVybiBudW1iZXIgb2YgZmFpbHVyZXMKKworU2Vl IGFsc28gcmxTRU1vZHVsZVJlc3RvcmUKKworPWN1dAorCitybFNFTW9kdWxlRGlzYWJsZSgpIHsK KyAgbG9jYWwgTkFNRVNQQUNFPScnIHJlcz0wCisgIHdoaWxlIFtbICIkezE6MDoxfSIgPT0gIi0i IF1dOyBkbworICAgICAgY2FzZSAkMSBpbgorICAgICAgICAtLW5hbWVzcGFjZSkKKyAgICAgICAg ICAgIHNoaWZ0CisgICAgICAgICAgICBOQU1FU1BBQ0U9Il8kMSIKKyAgICAgICAgICA7OworICAg ICAgZXNhYworICAgICAgc2hpZnQKKyAgZG9uZQorICBsb2NhbCBtb2R1bGUgc2Vtb2R1bGVfbGlz dCB0b19kaXNhYmxlCisgIGlmIHNlbW9kdWxlX2xpc3Q9IiQoX19JTlRFUk5BTF9ybFNFTW9kdWxl TGlzdCkiOyB0aGVuCisgICAgZm9yIG1vZHVsZSBpbiAiJEAiIDsgZG8KKyAgICAgIGxvY2FsIHNl bW9kdWxlPSIkKGVjaG8gIiRzZW1vZHVsZV9saXN0IiB8IGdyZXAgLUUgIl4ke21vZHVsZX1ccyIp IgorICAgICAgaWYgW1sgLXogIiRzZW1vZHVsZSIgXV0gOyB0aGVuCisgICAgICAgIHJsTG9nRXJy b3IgIiRGVU5DTkFNRTogbW9kdWxlICckbW9kdWxlJyBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmci CisgICAgICAgIGxldCByZXMrKworICAgICAgZWxzZQorICAgICAgICBsb2NhbCBzdGF0ZT0iJChl Y2hvICIkc2Vtb2R1bGUiIHwgZ3JlcCAtaXFFICdcc2Rpc2FibGVkJCcgJiYgZWNobyBkaXNhYmxl ZCB8fCBlY2hvIGVuYWJsZWQpIgorICAgICAgICBbWyAteiAiJChfX0lOVEVSTkFMX1NUX0dFVCAk e05BTUVTUEFDRTorLS1uYW1lc3BhY2UgIiROQU1FU1BBQ0UifSAtLXNlY3Rpb249c2Vtb2R1bGUg JG1vZHVsZSkiIF1dICYmIFwKKyAgICAgICAgICBfX0lOVEVSTkFMX1NUX1BVVCAke05BTUVTUEFD RTorLS1uYW1lc3BhY2UgIiROQU1FU1BBQ0UifSAtLXNlY3Rpb249c2Vtb2R1bGUgJG1vZHVsZSAk c3RhdGUKKyAgICAgICAgICBfX0lOVEVSTkFMX1NUX1BVVCAke05BTUVTUEFDRTorLS1uYW1lc3Bh Y2UgIiROQU1FU1BBQ0UifSAtLXNlY3Rpb249c2Vtb2R1bGUgY2hhbmdlZF9tb2R1bGVzICIkKF9f SU5URVJOQUxfU1RfR0VUICR7TkFNRVNQQUNFOistLW5hbWVzcGFjZSAiJE5BTUVTUEFDRSJ9IC0t c2VjdGlvbj1zZW1vZHVsZSBjaGFuZ2VkX21vZHVsZXMpICRtb2R1bGUiCisgICAgICAgIGlmIFtb ICIkc3RhdGUiID09ICJkaXNhYmxlZCIgXV07IHRoZW4KKyAgICAgICAgICBybExvZ0luZm8gIiRG VU5DTkFNRTogbW9kdWxlICckbW9kdWxlJyBpcyBhbHJlYWR5IGRpc2FibGVkIgorICAgICAgICBl bHNlCisgICAgICAgICAgdG9fZGlzYWJsZT0iJHRvX2Rpc2FibGUgJG1vZHVsZSIKKyAgICAgICAg ZmkKKyAgICAgIGZpCisgICAgZG9uZQorICAgIHRvX2Rpc2FibGU9IiR7dG9fZGlzYWJsZToxfSIK KyAgICBpZiBbWyAtbiAiJHRvX2Rpc2FibGUiIF1dOyB0aGVuCisgICAgICBybExvZyAiJEZVTkNO QU1FOiBkaXNhYmxpbmcgJyR0b19kaXNhYmxlJyBtb2R1bGUocyksIHJ1bm5pbmcgJ3NlbW9kdWxl IC1kICR0b19kaXNhYmxlJyIKKyAgICAgIHNlbW9kdWxlIC1kICR0b19kaXNhYmxlCisgICAgICBs b2NhbCBzZW1vZHVsZV9yZXM9JD8KKyAgICAgIGlmIFtbICRzZW1vZHVsZV9yZXMgLWVxIDAgXV0g OyB0aGVuCisgICAgICAgIHJsTG9nICIkRlVOQ05BTUU6IHNlbW9kdWxlIGRpc2FibGUgcGFzc2Vk IgorICAgICAgZWxzZQorICAgICAgICBybExvZyAiJEZVTkNOQU1FOiBzZW1vZHVsZSBkaXNhYmxl IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAnJHNlbW9kdWxlX3JlcyciCisgICAgICAgIGxldCByZXMr KworICAgICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgcmxMb2dFcnJvciAiJEZVTkNOQU1FOiBj b3VsZCBub3QgZ2V0IG1vZHVsZXMgbGlzdCIKKyAgICBsZXQgcmVzKysKKyAgZmkKKyAgcmV0dXJu ICRyZXMKK30KKworCis6IDw8Jz1jdXQnCis9cG9kCisKKz1oZWFkMiBybFNFTW9kdWxlUmVzdG9y ZQorCitUaGUgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gcmVzdG9yZSBwb2xpY3kgbW9kdWxlKHMpIHN0 YXRlIHByZXNlbnQgYmVmb3JlCitybFNFTW9kdWxlRW5hYmxlL3JsU0VNb2R1bGVEaXNhYmxlIHdh cyBmaXJzdGx5IGNhbGxlZC4KKworSWYgbm8gbW9kdWxlIGlzIHNwZWNpZmllZCwgYWxsIG1vZHVs ZXMgd2lsbCBiZSByZXN0b3JlZC4KKworICAgIHJsU0VNb2R1bGVSZXN0b3JlIFstLW5hbWVzcGFj ZSBOQU1FU1BBQ0VdIFtNT0RVTEUgLi4uXQorCitSZXR1cm4gbnVtYmVyIG9mIGZhaWx1cmVzCisK Kz1jdXQKKworcmxTRU1vZHVsZVJlc3RvcmUoKSB7CisgIGxvY2FsIE5BTUVTUEFDRT0nJyByZXM9 MAorICB3aGlsZSBbWyAiJHsxOjA6MX0iID09ICItIiBdXTsgZG8KKyAgICAgIGNhc2UgJDEgaW4K KyAgICAgICAgLS1uYW1lc3BhY2UpCisgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgTkFN RVNQQUNFPSJfJDEiCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIHNoaWZ0CisgIGRv bmUKKyAgbG9jYWwgbW9kdWxlIHNlbW9kdWxlX2xpc3QgdG9fZW5hYmxlIHRvX2Rpc2FibGUKKyAg aWYgc2Vtb2R1bGVfbGlzdD0iJChfX0lOVEVSTkFMX3JsU0VNb2R1bGVMaXN0KSI7IHRoZW4KKyAg ICBsb2NhbCBtb2R1bGVzPSIkQCIKKyAgICBsb2NhbCBjaGFuZ2VkX21vZHVsZXM9IiQoX19JTlRF Uk5BTF9TVF9HRVQgJHtOQU1FU1BBQ0U6Ky0tbmFtZXNwYWNlICIkTkFNRVNQQUNFIn0gLS1zZWN0 aW9uPXNlbW9kdWxlIGNoYW5nZWRfbW9kdWxlcykiCisgICAgW1sgLXogIiRtb2R1bGVzIiBdXSAm JiBtb2R1bGVzPSIkY2hhbmdlZF9tb2R1bGVzIgorICAgIGZvciBtb2R1bGUgaW4gJG1vZHVsZXMg OyBkbworICAgICAgaWYgW1sgIiRjaGFuZ2VkX21vZHVsZXMiID1+ICQoZWNobyAiXDwkbW9kdWxl XD4iKSBdXSA7IHRoZW4KKyAgICAgICAgY2hhbmdlZF9tb2R1bGVzPSIkKGVjaG8gIiRjaGFuZ2Vk X21vZHVsZXMiIHwgc2VkIC1yICJzL1w8JHttb2R1bGV9XD4vLyIpIgorICAgICAgICBfX0lOVEVS TkFMX1NUX1BVVCAke05BTUVTUEFDRTorLS1uYW1lc3BhY2UgIiROQU1FU1BBQ0UifSAtLXNlY3Rp b249c2Vtb2R1bGUgY2hhbmdlZF9tb2R1bGVzICIkY2hhbmdlZF9tb2R1bGVzIgorICAgICAgICBs b2NhbCBzZW1vZHVsZT0iJChlY2hvICIkc2Vtb2R1bGVfbGlzdCIgfCBncmVwIC1FICJeJHttb2R1 bGV9XHMiKSIKKyAgICAgICAgaWYgW1sgLXogIiRzZW1vZHVsZSIgXV0gOyB0aGVuCisgICAgICAg ICAgcmxMb2dFcnJvciAiJEZVTkNOQU1FOiBtb2R1bGUgJyRtb2R1bGUnIGRvZXMgbm90IGV4aXN0 LCBza2lwcGluZyIKKyAgICAgICAgICBsZXQgcmVzKysKKyAgICAgICAgZWxzZQorICAgICAgICAg IGxvY2FsIHN0YXRlPSIkKGVjaG8gIiRzZW1vZHVsZSIgfCBncmVwIC1pcUUgJ1xzZGlzYWJsZWQk JyAmJiBlY2hvIGRpc2FibGVkIHx8IGVjaG8gZW5hYmxlZCkiCisgICAgICAgICAgbG9jYWwgc2F2 ZWRfc3RhdGU9IiQoX19JTlRFUk5BTF9TVF9HRVQgJHtOQU1FU1BBQ0U6Ky0tbmFtZXNwYWNlICIk TkFNRVNQQUNFIn0gLS1zZWN0aW9uPXNlbW9kdWxlICRtb2R1bGUpIgorICAgICAgICAgIF9fSU5U RVJOQUxfU1RfUFJVTkUgJHtOQU1FU1BBQ0U6Ky0tbmFtZXNwYWNlICIkTkFNRVNQQUNFIn0gLS1z ZWN0aW9uPXNlbW9kdWxlICRtb2R1bGUKKyAgICAgICAgICBpZiBbWyAiJHNhdmVkX3N0YXRlIiA9 PSAiZW5hYmxlZCIgXV0gOyB0aGVuCisgICAgICAgICAgICBpZiBbWyAiJHN0YXRlIiA9PSAiZW5h YmxlZCIgXV07IHRoZW4KKyAgICAgICAgICAgICAgcmxMb2dJbmZvICIkRlVOQ05BTUU6IG1vZHVs ZSAnJG1vZHVsZScgaXMgYWxyZWFkeSBlbmFibGVkIgorICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICB0b19lbmFibGU9IiR0b19lbmFibGUgJG1vZHVsZSIKKyAgICAgICAgICAgIGZpCisg ICAgICAgICAgZWxpZiBbWyAiJHNhdmVkX3N0YXRlIiA9PSAiZGlzYWJsZWQiIF1dIDsgdGhlbgor ICAgICAgICAgICAgaWYgW1sgIiRzdGF0ZSIgPT0gImRpc2FibGVkIiBdXTsgdGhlbgorICAgICAg ICAgICAgICBybExvZ0luZm8gIiRGVU5DTkFNRTogbW9kdWxlICckbW9kdWxlJyBpcyBhbHJlYWR5 IGRpc2FibGVkIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB0b19kaXNhYmxlPSIk dG9fZGlzYWJsZSAkbW9kdWxlIgorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAg ICAgICAgICBybExvZ0Vycm9yICIkRlVOQ05BTUU6IHVuZXhwZWN0ZWQgc2F2ZWQgc3RhdGUgJyRz YXZlZF9zdGF0ZSciCisgICAgICAgICAgICBsZXQgcmVzKysKKyAgICAgICAgICBmaQorICAgICAg ICBmaQorICAgICAgZWxzZQorICAgICAgICBybExvZ0Vycm9yICIkRlVOQ05BTUU6IHRoZXJlIGlz IG5vIHN0YXRlIG9mIG1vZHVsZSAnJG1vZHVsZScgc2F2ZWQsIHNraXBwaW5nIgorICAgICAgICBs ZXQgcmVzKysKKyAgICAgIGZpCisgICAgZG9uZQorICAgIHRvX2VuYWJsZT0iJHt0b19lbmFibGU6 MX0iCisgICAgdG9fZGlzYWJsZT0iJHt0b19kaXNhYmxlOjF9IgorICAgIGlmIFtbIC1uICIkdG9f ZW5hYmxlIiBdXTsgdGhlbgorICAgICAgcmxMb2cgIiRGVU5DTkFNRTogZW5hYmxpbmcgJyR0b19l bmFibGUnIG1vZHVsZShzKSwgcnVubmluZyAnc2Vtb2R1bGUgLWUgJHRvX2VuYWJsZSciCisgICAg ICBzZW1vZHVsZSAtZSAkdG9fZW5hYmxlCisgICAgICBsb2NhbCBzZW1vZHVsZV9yZXM9JD8KKyAg ICAgIGlmIFtbICRzZW1vZHVsZV9yZXMgLWVxIDAgXV0gOyB0aGVuCisgICAgICAgIHJsTG9nICIk RlVOQ05BTUU6IHNlbW9kdWxlIGVuYWJsZSBwYXNzZWQiCisgICAgICBlbHNlCisgICAgICAgIHJs TG9nICIkRlVOQ05BTUU6IHNlbW9kdWxlIGVuYWJsZSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJyRz ZW1vZHVsZV9yZXMnIgorICAgICAgICBsZXQgcmVzKysKKyAgICAgIGZpCisgICAgZmkKKyAgICBp ZiBbWyAtbiAiJHRvX2Rpc2FibGUiIF1dOyB0aGVuCisgICAgICBybExvZyAiJEZVTkNOQU1FOiBk aXNhYmxpbmcgJyR0b19kaXNhYmxlJyBtb2R1bGUocyksIHJ1bm5pbmcgJ3NlbW9kdWxlIC1kICR0 b19kaXNhYmxlJyIKKyAgICAgIHNlbW9kdWxlIC1kICR0b19kaXNhYmxlCisgICAgICBsb2NhbCBz ZW1vZHVsZV9yZXM9JD8KKyAgICAgIGlmIFtbICRzZW1vZHVsZV9yZXMgLWVxIDAgXV0gOyB0aGVu CisgICAgICAgIHJsTG9nICIkRlVOQ05BTUU6IHNlbW9kdWxlIGRpc2FibGUgcGFzc2VkIgorICAg ICAgZWxzZQorICAgICAgICBybExvZyAiJEZVTkNOQU1FOiBzZW1vZHVsZSBkaXNhYmxlIGZhaWxl ZCB3aXRoIGV4aXQgY29kZSAnJHNlbW9kdWxlX3JlcyciCisgICAgICAgIGxldCByZXMrKworICAg ICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgcmxMb2dFcnJvciAiJEZVTkNOQU1FOiBjb3VsZCBu b3QgZ2V0IG1vZHVsZXMgbGlzdCIKKyAgICBsZXQgcmVzKysKKyAgZmkKKyAgcmV0dXJuICRyZXMK K30KKworCitfX0lOVEVSTkFMX3JsU0VlbmFibGVfZnVsbF9hdWRpdGluZygpIHsKKyAgbG9jYWwg cnVsZXNfZmlsZT0vZXRjL2F1ZGl0L3J1bGVzLmQvYXVkaXQucnVsZXMKKyAgaWYgcmxJc1JIRUwg Jzw3JzsgdGhlbgorICAgIHJ1bGVzX2ZpbGU9Ii9ldGMvYXVkaXQvYXVkaXQucnVsZXMiCisgIGZp CisgIGxvY2FsIGZpbmFsX3J1bGVzPS9ldGMvYXVkaXQvYXVkaXQucnVsZXMKKyAgbG9jYWwgY29u ZmlnX2ZpbGU9L2V0Yy9hdWRpdC9hdWRpdGQuY29uZgorICBsb2NhbCBhdWRpdGRfbmVlZF9yZXN0 YXJ0PTAKKyAgbG9jYWwgcnVsZXM9Ii1EIiQnXG4nIi13IC9ldGMvc2hhZG93IC1wIHciCisgIGxv Y2FsIHJlcz0wCisgIGlmICEgZGlmZiAtdSA8KGdyZXAgLXYgLWUgJ14kJyAtZSAnXiMnICRmaW5h bF9ydWxlcykgPChlY2hvICIkcnVsZXMiKSA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gIiRy dWxlcyIgPiAke3J1bGVzX2ZpbGV9ICYmIHsKKyAgICAgIGF1ZGl0ZF9uZWVkX3Jlc3RhcnQ9MQor ICAgIH0gfHwgeworICAgICAgcmxMb2dFcnJvciAiY291bGQgbm90IGVuYWJsZSBmdWxsIHBhdGgg cmVzb2x2aW5nIgorICAgICAgbGV0IHJlcysrCisgICAgfQorICBmaQorICBybElzUkhFTCAnPDcn IHx8IHsKKyAgICBpZiBncmVwIC1xICJsb2dfZm9ybWF0ID0gRU5SSUNIRUQiICRjb25maWdfZmls ZTsgdGhlbgorICAgICAgcmxMb2cgImVucmljaGVkIGF1ZGl0IGxvZyBmb3JtYXQgYWxyZWFkeSBl bmFibGVkIgorICAgIGVsc2UKKyAgICAgIHJsTG9nICJlbmFibGluZyBlbnJpY2hlZCBhdWRpdCBs b2cgZm9ybWF0IgorICAgICAgc2VkIC1yIC1pICdzL2xvZ19mb3JtYXQgPS4qL2xvZ19mb3JtYXQg PSBFTlJJQ0hFRC8nICRjb25maWdfZmlsZSAmJiB7CisgICAgICAgIGF1ZGl0ZF9uZWVkX3Jlc3Rh cnQ9MQorICAgICAgfSB8fCB7CisgICAgICAgIHJsTG9nRXJyb3IgImNvdWxkIG5vdCBlbmFibGUg RU5SSUNIRUQgbG9nZ2luZyIKKyAgICAgICAgbGV0IHJlcysrCisgICAgICB9CisgICAgZmkKKyAg fQorICBbWyAkYXVkaXRkX25lZWRfcmVzdGFydCAtZXEgMSBdXSAmJiB7CisgICAgcmxMb2cgInN0 b3AgdGhlIGF1ZGl0IGRhZW1vbiBmaXJzdCIKKyAgICBybFJ1biAic2VydmljZSBhdWRpdGQgc3Rv cCIKKyAgICBzbGVlcCA1CisgICAgcmxMb2cgImF1ZGl0IGRhZW1vbiBjb25maWd1cmF0aW9uIGZp bGUgaXMgdXBkYXRlZCwgc3RhcnRpbmcgdGhlIGF1ZGl0IHNlcnZpY2UiCisgICAgcmxTZXJ2aWNl U3RhcnQgYXVkaXRkIHx8IHsKKyAgICAgIHJsTG9nRXJyb3IgImF1ZGl0IGRhZW1vbiB3YXMgbm90 IHJlc3RhcnRlZCBjb3JyZWN0bHkiCisgICAgICBsZXQgcmVzKysKKyAgICB9CisgIH0KKyAgaWYg ISBkaWZmIC11IDwoZ3JlcCAtdiAtZSAnXiQnIC1lICdeIycgJGZpbmFsX3J1bGVzKSA8KGVjaG8g IiRydWxlcyIpID4gL2Rldi9udWxsOyB0aGVuCisgICAgcmxMb2dFcnJvciAiJGZpbmFsX3J1bGVz IGlzIG5vdCB1cGRhdGVkIgorICAgIGxldCByZXMrKworICBmaQorICByZXR1cm4gJHJlcworfQor CisKK19fSU5URVJOQUxfcmxTRWNhY2hlX2NoZWNrc3VtKCkgeworICAgIGxvY2FsIGNhY2hlZmls ZT0iJF9fSU5URVJOQUxfcmxTRV9DQUNIRUZJTEUiCisgICAgbG9jYWwgc3VtZmlsZT0iJF9fSU5U RVJOQUxfcmxTRV9TVU1GSUxFIgorCisgICAgbWtkaXIgLXAgIiRybFNFX0NBQ0hFX0RJUiIgfHwg eworICAgICAgICBybExvZ0Vycm9yICJjYW5ub3QgY3JlYXRlIHJ1bGUgY2FjaGUgZGlyIgorICAg ICAgICByZXR1cm4gMQorICAgIH0KKyAgICBsb2NhbCBjdXJyZW50c3VtPSQoc2hhMXN1bSAvc3lz L2ZzL3NlbGludXgvcG9saWN5KSB8fCB7CisgICAgICAgIHJsTG9nRXJyb3IgImNhbm5vdCBzaGEx c3VtIHNlbGludXggcG9saWN5IGluIC9zeXMiCisgICAgICAgIHJldHVybiAxCisgICAgfQorICAg IGlmIFsgLXMgIiRjYWNoZWZpbGUiIC1hIC1zICIkc3VtZmlsZSIgXTsgdGhlbgorICAgICAgICBv bGRzdW09JCg8IiRzdW1maWxlIikKKyAgICAgICAgaWYgWyAiJGN1cnJlbnRzdW0iID0gIiRvbGRz dW0iIF07IHRoZW4KKyAgICAgICAgICAgICMgY2hlY2tzdW1zIGlkZW50aWNhbCwgY2FjaGUgc3Rp bGwgdmFsaWQKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGZpCisgICAgZmkKKyAgICAj IGNoZWNrc3VtIG5vbmV4aXN0ZW4gLyBkaWZmZXJlbnQsIG92ZXJ3cml0ZSBvbGQgYnkgY3VycmVu dAorICAgICMgYW5kIHRyaWdnZXIgY2FjaGUgcmVidWlsZAorICAgIGVjaG8gIiRjdXJyZW50c3Vt IiA+ICIkc3VtZmlsZSIKKyAgICByZXR1cm4gMgorfQorCisjCisjIENPTVBBVElCSUxJVFkgTk9U RVM6CisjIC0gc2luY2UgcmxTRVNlYXJjaFJ1bGUgZG9lc24ndCB1c2UgLXAgLyAtLXBlcm1zLCB3 ZSBkb24ndCBzdXBwb3J0IGl0IGhlcmUsCisjICAgYnV0IGl0IHNob3VsZCBiZSBlYXN5IHRvIGFk ZCBpZiBuZWVkZWQKKyMgLSBtdWx0aXBsZSBwZXJtaXNzaW9ucyBvZiBvbmUgb3JpZ2luYWwgcnVs ZSBhcmUgc3BsaXQgaW50byBtdWx0aXBsZSByb3dzLAorIyAgIGVhY2ggd2l0aCAxIHBlcm1pc3Np b24KKyMgLSBpZiBzZWFyY2hpbmcgYnkgYXR0cmlidXRlIGluIC1zIC8gLXQsIG9ubHkgcnVsZXMg c3BlY2lmeWluZyB0aGUgYXR0cmlidXRlCisjICAgYXJlIHJldHVybmVkLCBub3QgcnVsZXMgZm9y IGFsbCB0eXBlcyB0aGV5IGVuY29tcGFzcworIyAgIC0gc2VhcmNoaW5nIGJ5IHR5cGUgd29ya3Mg YXMgd2l0aCBzZXRvb2xzL3Nlc2VhcmNoCisjIC0gZmlsZW5hbWUgaW4gdHlwZV90cmFuc2l0aW9u IHJ1bGVzIGlzIGFsd2F5cyByZXR1cm5lZCBpbiBkb3VibGUgcXVvdGVzLAorIyAgIGxpa2Ugc2V0 b29scyB2NC4xLCB1bmxpa2Ugc2V0b29scyB2NC4yKworIworX19JTlRFUk5BTF9ybFNFY2FjaGVf c2VzZWFyY2goKSB7CisgICAgbG9jYWwgb3B0cz0kKGdldG9wdCAtbyAiczp0OmM6IiAtbCAiYWxs b3csZG9udGF1ZGl0LHR5cGVfdHJhbnMiIC0tICIkQCIgXAorICAgICAgICAgICAgMj4gPih3aGls ZSByZWFkIC1yIGxpbmU7IGRvIHJsTG9nRXJyb3IgIiRGVU5DTkFNRTogJGxpbmUiOyBkb25lKSkK KyAgICBbICQ/IC1uZSAwIF0gJiYgcmV0dXJuIDEKKworICAgIGV2YWwgc2V0IC0tICIkb3B0cyIK KyAgICBsb2NhbCBpbl9zb3VyY2U9IGluX3RhcmdldD0gaW5fY2xhc3M9IHJ1bGV0eXBlPQorICAg IHdoaWxlIHRydWU7IGRvCisgICAgICAgIGNhc2UgIiQxIiBpbgorICAgICAgICAgICAgJy1zJykg c2hpZnQ7IGluX3NvdXJjZT0iJDEiOyBzaGlmdCA7OworICAgICAgICAgICAgJy10Jykgc2hpZnQ7 IGluX3RhcmdldD0iJDEiOyBzaGlmdCA7OworICAgICAgICAgICAgJy1jJykgc2hpZnQ7IGluX2Ns YXNzPSIkMSI7IHNoaWZ0IDs7CisgICAgICAgICAgICAnLS1hbGxvdycpIHJ1bGV0eXBlPSJhbGxv dyI7IHNoaWZ0IDs7CisgICAgICAgICAgICAnLS1kb250YXVkaXQnKSBydWxldHlwZT0iZG9udGF1 ZGl0Ijsgc2hpZnQgOzsKKyAgICAgICAgICAgICctLXR5cGVfdHJhbnMnKSBydWxldHlwZT0idHlw ZV90cmFucyI7IHNoaWZ0IDs7CisgICAgICAgICAgICAtLSkgc2hpZnQ7IGJyZWFrIDs7CisgICAg ICAgIGVzYWMKKyAgICBkb25lOworCisgICAgbG9jYWwgY2FjaGVmaWxlPSIkX19JTlRFUk5BTF9y bFNFX0NBQ0hFRklMRSIKKyAgICBpZiAhIF9fSU5URVJOQUxfcmxTRWNhY2hlX2NoZWNrc3VtOyB0 aGVuCisgICAgICAgIHJsTG9nSW5mbyAiKHJlKWNyZWF0aW5nIHNlbGludXgtcG9saWN5IHJ1bGUg Y2FjaGUiCisgICAgICAgIHJtIC1mICIkY2FjaGVmaWxlIgorICAgICAgICAiJHJsU0VMaWJyYXJ5 RGlyL21rY2FjaGUucHkiICIkY2FjaGVmaWxlIiB8fCB7CisgICAgICAgICAgICBybExvZ0Vycm9y ICJjYW5ub3Qgc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBydWxlIGNhY2hlIgorICAgICAgICAgICAgcm0g LWYgIiRjYWNoZWZpbGUiICAjIGluIGNhc2UgaXQgaXMgaW5jb21wbGV0ZQorICAgICAgICAgICAg cmV0dXJuIDEKKyAgICAgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmxMb2dJbmZvICJ1c2luZyBl eGlzdGluZyBzZWxpbnV4LXBvbGljeSBydWxlIGNhY2hlIgorICAgIGZpCisKKyAgICBjYXNlICIk cnVsZXR5cGUiIGluCisgICAgICAgIGFsbG93fGRvbnRhdWRpdCkKKyAgICAgICAgICAgIGxvY2Fs IHE9IlNFTEVDVCBcInNvdXJjZVwiLCBcInRhcmdldFwiLCBcImNsYXNzXCIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXCJwZXJtXCIsIFwiYm9vbFwiLCBcImJvb2xzdGF0ZVwiCisgICAg ICAgICAgICAgICAgICAgICBGUk9NIFwiJHtydWxldHlwZX1fbG9va3VwXCIKKyAgICAgICAgICAg ICAgICAgICAgIFdIRVJFCisgICAgICAgICAgICAgICAgICAgICAgICAgXCJzb3VyY2VcIj0nJGlu X3NvdXJjZScgQU5EIFwidGFyZ2V0XCI9JyRpbl90YXJnZXQnCisgICAgICAgICAgICAgICAgICAg ICAgICAgQU5EIFwiY2xhc3NcIj0nJGluX2NsYXNzJyAiCisgICAgICAgICAgICAjWyAiJGluX3Bl cm0iIF0gJiYgcSs9IkFORCBcInBlcm1cIiBJTiAoJGluX3Blcm0pICIKKyAgICAgICAgICAgIGxv Y2FsIHJldD0gcm93PSBzb3VyY2U9IHRhcmdldD0gY2xhc3M9IHBlcm09IGJvb2w9IGJzdGF0ZT0K KyAgICAgICAgICAgIHdoaWxlIElGUz0gcmVhZCAtciByb3c7IGRvCisgICAgICAgICAgICAgICAg SUZTPSd8JyByZWFkIC1yIHNvdXJjZSB0YXJnZXQgY2xhc3MgcGVybSBib29sIGJzdGF0ZSA8PDwi JHJvdyIKKyAgICAgICAgICAgICAgICBjYXNlICIkcGVybSIgaW4gKlwgKikgcGVybT0ieyAkcGVy bSB9IiA7OyBlc2FjICAjIG1vcmUgdGhhbiBvbmUKKyAgICAgICAgICAgICAgICByZXQ9IiRydWxl dHlwZSAkc291cmNlICR0YXJnZXQ6JGNsYXNzICRwZXJtOyIKKyAgICAgICAgICAgICAgICBpZiBb ICIkYm9vbCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgICByZXQrPSIgWyAkYm9vbCBdOiIK KyAgICAgICAgICAgICAgICAgICAgWyAiJGJzdGF0ZSIgPSAiMSIgXSAmJiByZXQrPSJUcnVlIiB8 fCByZXQrPSJGYWxzZSIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGVjaG8g IiRyZXQiCisgICAgICAgICAgICBkb25lIDwgPChlY2hvICIkcSIgfCBzcWxpdGUzICIkY2FjaGVm aWxlIikKKyAgICAgICAgICAgIDs7CisgICAgICAgIHR5cGVfdHJhbnMpCisgICAgICAgICAgICBs b2NhbCBxPSJTRUxFQ1QgXCJzb3VyY2VcIiwgXCJ0YXJnZXRcIiwgXCJjbGFzc1wiLCBcImRlZmF1 bHRcIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZpbGVuYW1lXCIsIFwiYm9vbFwi LCBcImJvb2xzdGF0ZVwiCisgICAgICAgICAgICAgICAgICAgICBGUk9NIFwiJHtydWxldHlwZX1f bG9va3VwXCIKKyAgICAgICAgICAgICAgICAgICAgIFdIRVJFCisgICAgICAgICAgICAgICAgICAg ICAgICAgXCJzb3VyY2VcIj0nJGluX3NvdXJjZScgQU5EIFwidGFyZ2V0XCI9JyRpbl90YXJnZXQn CisgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIFwiY2xhc3NcIj0nJGluX2NsYXNzJyAiCisg ICAgICAgICAgICBsb2NhbCByZXQ9IHJvdz0gc291cmNlPSB0YXJnZXQ9IGNsYXNzPSBkZWZhdWx0 PSBmaWxlbmFtZT0gYm9vbD0gYnN0YXRlPQorICAgICAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1y IHJvdzsgZG8KKyAgICAgICAgICAgICAgICBJRlM9J3wnIHJlYWQgLXIgc291cmNlIHRhcmdldCBj bGFzcyBkZWZhdWx0IGZpbGVuYW1lIGJvb2wgYnN0YXRlIDw8PCIkcm93IgorICAgICAgICAgICAg ICAgIHJldD0idHlwZV90cmFuc2l0aW9uICRzb3VyY2UgJHRhcmdldDokY2xhc3MgJGRlZmF1bHQi CisgICAgICAgICAgICAgICAgWyAiJGZpbGVuYW1lIiBdICYmIHJldCs9IiBcIiRmaWxlbmFtZVwi IgorICAgICAgICAgICAgICAgIHJldCs9JzsnCisgICAgICAgICAgICAgICAgaWYgWyAiJGJvb2wi IF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgcmV0Kz0iIFsgJGJvb2wgXToiCisgICAgICAg ICAgICAgICAgICAgIFsgIiRic3RhdGUiID0gIjEiIF0gJiYgcmV0Kz0iVHJ1ZSIgfHwgcmV0Kz0i RmFsc2UiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBlY2hvICIkcmV0Igor ICAgICAgICAgICAgZG9uZSA8IDwoZWNobyAiJHEiIHwgc3FsaXRlMyAiJGNhY2hlZmlsZSIpCisg ICAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICAgcmxMb2dFcnJvciAidW5zdXBw b3J0ZWQgY2FjaGUgcnVsZSB0eXBlOiAkcnVsZXR5cGUiCisgICAgICAgICAgICByZXR1cm4gMQor ICAgICAgICAgICAgOzsKKyAgICBlc2FjCit9CisKK3JsU0VMaWJyYXJ5TG9hZGVkKCkgeworICAg IHJldHVybiAwCit9CisKKworIyB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIyAgIEF1dGhvcnMKKyMg fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworOiA8PCc9Y3V0JworPXBvZAorCis9aGVhZDEgQVVUSE9S UworCis9b3ZlcgorCis9aXRlbSAqCisKK01pbG9zIE1hbGlrIDxtbWFsaWtAcmVkaGF0LmNvbT4K K01pY2hhbCBUcnVuZWNrYSA8bXRydW5lY2tAcmVkaGF0LmNvbT4KK0RhdmlkIFNwdXJlayA8ZHNw dXJla0ByZWRoYXQuY29tPgorCis9YmFjaworCis9Y3V0CgpkaWZmIC0tZ2l0IGEvc2VsaW51eC1w b2xpY3kvTGlicmFyeS9jb21tb24vbWtjYWNoZS5weSBiL3NlbGludXgtcG9saWN5L0xpYnJhcnkv Y29tbW9uL21rY2FjaGUucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjFj NzZkNwotLS0gL2Rldi9udWxsCisrKyBiL3NlbGludXgtcG9saWN5L0xpYnJhcnkvY29tbW9uL21r Y2FjaGUucHkKQEAgLTAsMCArMSwyMjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMg VGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGEgc3FsaXRlLWJhc2VkIHJ1bGUgY2FjaGUgZnJvbSBhIHNl bGludXggcG9saWN5CisjIGN1cnJlbnRseSBhY3RpdmUgb24gdGhlIHN5c3RlbSwgdG8gYmUgdXNl ZCBieSBmdXJ0aGVyIHF1ZXJpZXMuCisjCisKK2ltcG9ydCBvcywgc3lzCitpbXBvcnQgc3FsaXRl MworaW1wb3J0IHNldG9vbHMKKworIworIyBMSU1JVEFUSU9OUyAhISEKKyMgLSBjdXJyZW50bHkg bm8gc3FsIHZpZXdzIHRoYXQgd291bGQgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IG1hdGNoaW5nIHNl c2VhcmNoCisjICAgLSB0aGUgY3VycmVudCB2aWV3cyByZXR1cm4gb25seSB3aGF0J3Mgc2VhcmNo ZWQsIG5vdCBldmVyeXRoaW5nIGFyb3VuZCBpdAorIyAgIC0gZWcuIHNlYXJjaGluZyBhdHRyIHdp bGwgcmV0dXJuIGVudHJ5IGZvciB0aGF0IGF0dHIsIG5vdCBmb3IgYWxsIGl0cyB0eXBlcworIyAg ICAgLSBzZWFyY2hpbmcgYnkgdHlwZXMgZGVmaW5lZCB1c2luZyBhdHRyIHdvcmtzIHRoZSBzYW1l IGFzIGZvciBzZXNlYXJjaAorIyAtIG9ubHkgYWxsb3csIHR5cGVfdHJhbnMsIGRvbnRhdWRpdAor IyAtIHR5cGVfdHJhbnMKKyMgICAtIG5vIGF0dHJpYnV0ZXMgc3VwcG9ydAorIworCitpZiBsZW4o c3lzLmFyZ3YpIDwgMjoKKyAgICBwcmludCgidXNhZ2U6IHswfSA8ZGJfZmlsZW5hbWU+Ii5mb3Jt YXQoc3lzLmFyZ3ZbMF0pLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgc3lzLmV4aXQoMSkKKworZGJm aWxlID0gc3lzLmFyZ3ZbMV0KK2lmIG9zLnBhdGgubGV4aXN0cyhkYmZpbGUpOgorICAgIHByaW50 KCJlcnJvcjogezB9IGFscmVhZHkgZXhpc3RzIi5mb3JtYXQoZGJmaWxlKSwgZmlsZT1zeXMuc3Rk ZXJyKQorICAgIHN5cy5leGl0KDEpCisKK2Nvbm4gPSBzcWxpdGUzLmNvbm5lY3QoZGJmaWxlKQor CitjdXIgPSBjb25uLmN1cnNvcigpCisjY3VyLmV4ZWN1dGUoJ1BSQUdNQSBmb3JlaWduX2tleXMg PSBPTicpCisKKyMKKyMjIGNyZWF0aW5nIHRhYmxlcworIworCitjdXIuZXhlY3V0ZXNjcmlwdCgi IiIKKyAgICAvKgorICAgICAqIGdsb2JhbCBydWxlIHByb3BlcnRpZXMgKGFwcGxpY2FibGUgdG8g YW55IHJ1bGV0eXBlKQorICAgICAqLworICAgIC0tIGluZGV4ZWQgYnkgYXR0cmlidXRlIG5hbWUs IG1hcHMgdG8gb25lIG9yIG1vcmUgInR5cGVzIiwKKyAgICAtLSAtIGFsc28gY29udGFpbnMgZW50 cmllcyBmb3Igbm9uLWF0dHJpYnV0ZXMgKHJlZ3VsYXIgdHlwZXMpLCB0aG9zZQorICAgIC0tICAg aGF2ZSBgYXR0cmAgPT0gYHR5cGVgCisgICAgLS0gLSBhbHNvIGNvbnRhaW5zIGVudHJpZXMgZm9y IGF0dHJpYnV0ZXMgdGhlbXNlbHZlcywgYWxzbyB3aXRoCisgICAgLS0gICBgYXR0cmAgPT0gYHR5 cGVgCisgICAgQ1JFQVRFIFRBQkxFICdhdHRycycgKAorICAgICAgICAnYXR0cicgVkFSQ0hBUiBO T1QgTlVMTCwKKyAgICAgICAgJ3R5cGUnIFZBUkNIQVIgTk9UIE5VTEwKKyAgICApOworICAgIENS RUFURSBUQUJMRSAncGVybXMnICgKKyAgICAgICAgJ2lkJyBJTlRFR0VSIFVOU0lHTkVEIE5PVCBO VUxMLAorICAgICAgICAncGVybScgVkFSQ0hBUiBOT1QgTlVMTAorICAgICk7CisgICAgQ1JFQVRF IFRBQkxFICdib29scycgKAorICAgICAgICAnaWQnIElOVEVHRVIgVU5TSUdORUQgTk9UIE5VTEws CisgICAgICAgICdib29sJyBWQVJDSEFSIE5PVCBOVUxMLAorICAgICAgICAnc3RhdGUnIEJPT0xF QU4gTk9UIE5VTEwgIC0tIFQvRiBvZiB0aGUgd2hvbGUgY29uZGl0aW9uYWwgYmxvY2sKKyAgICAp OworICAgIENSRUFURSBUQUJMRSAnZmlsZW5hbWVzJyAoCisgICAgICAgICdpZCcgSU5URUdFUiBV TlNJR05FRCBOT1QgTlVMTCwKKyAgICAgICAgJ2ZpbGVuYW1lJyBWQVJDSEFSIE5PVCBOVUxMCisg ICAgKTsKKworICAgIC8qCisgICAgICogcGVyLXJ1bGV0eXBlIHRhYmxlcworICAgICAqLworICAg IENSRUFURSBUQUJMRSAnYWxsb3cnICgKKyAgICAgICAgJ2lkJyBJTlRFR0VSIFVOU0lHTkVEIE5P VCBOVUxMIFBSSU1BUlkgS0VZLAorICAgICAgICAnc291cmNlJyBWQVJDSEFSIE5PVCBOVUxMLAor ICAgICAgICAndGFyZ2V0JyBWQVJDSEFSIE5PVCBOVUxMLAorICAgICAgICAnY2xhc3MnIFZBUkNI QVIgTk9UIE5VTEwKKyAgICApOworICAgIENSRUFURSBUQUJMRSAndHlwZV90cmFucycgKAorICAg ICAgICAnaWQnIElOVEVHRVIgVU5TSUdORUQgTk9UIE5VTEwgUFJJTUFSWSBLRVksCisgICAgICAg ICdzb3VyY2UnIFZBUkNIQVIgTk9UIE5VTEwsCisgICAgICAgICd0YXJnZXQnIFZBUkNIQVIgTk9U IE5VTEwsCisgICAgICAgICdjbGFzcycgVkFSQ0hBUiBOT1QgTlVMTCwKKyAgICAgICAgJ2RlZmF1 bHQnIFZBUkNIQVIgTk9UIE5VTEwKKyAgICApOworICAgIENSRUFURSBUQUJMRSAnZG9udGF1ZGl0 JyAoCisgICAgICAgICdpZCcgSU5URUdFUiBVTlNJR05FRCBOT1QgTlVMTCBQUklNQVJZIEtFWSwK KyAgICAgICAgJ3NvdXJjZScgVkFSQ0hBUiBOT1QgTlVMTCwKKyAgICAgICAgJ3RhcmdldCcgVkFS Q0hBUiBOT1QgTlVMTCwKKyAgICAgICAgJ2NsYXNzJyBWQVJDSEFSIE5PVCBOVUxMCisgICAgKTsK KworICAgIC8qCisgICAgICogdmlld3MgZm9yIGxvb2t1cAorICAgICAqLworICAgIENSRUFURSBW SUVXICdhbGxvd19sb29rdXAnIEFTCisgICAgU0VMRUNUCisgICAgICAgICJhc3JjIi4idHlwZSIg QVMgJ3NvdXJjZScsCisgICAgICAgICJhdGd0Ii4idHlwZSIgQVMgJ3RhcmdldCcsCisgICAgICAg ICJhIi4iY2xhc3MiIEFTICdjbGFzcycsCisgICAgICAgICJwIi4icGVybSIgQVMgJ3Blcm0nLAor ICAgICAgICAiYiIuImJvb2wiIEFTICdib29sJywKKyAgICAgICAgImIiLiJzdGF0ZSIgQVMgJ2Jv b2xzdGF0ZScKKyAgICBGUk9NICJhbGxvdyIgJ2EnCisgICAgICAgIExFRlQgSk9JTiAiYXR0cnMi ICdhc3JjJyBPTiAiYSIuInNvdXJjZSIgPSAiYXNyYyIuImF0dHIiCisgICAgICAgIExFRlQgSk9J TiAiYXR0cnMiICdhdGd0JyBPTiAiYSIuInRhcmdldCIgPSAiYXRndCIuImF0dHIiCisgICAgICAg IExFRlQgSk9JTiAicGVybXMiICdwJyBPTiAiYSIuImlkIiA9ICJwIi4iaWQiCisgICAgICAgIExF RlQgSk9JTiAiYm9vbHMiICdiJyBPTiAiYSIuImlkIiA9ICJiIi4iaWQiOworCisgICAgQ1JFQVRF IFZJRVcgJ3R5cGVfdHJhbnNfbG9va3VwJyBBUworICAgIFNFTEVDVAorICAgICAgICAidHQiLiJz b3VyY2UiIEFTICdzb3VyY2UnLAorICAgICAgICAidHQiLiJ0YXJnZXQiIEFTICd0YXJnZXQnLAor ICAgICAgICAidHQiLiJjbGFzcyIgQVMgJ2NsYXNzJywKKyAgICAgICAgInR0Ii4iZGVmYXVsdCIg QVMgJ2RlZmF1bHQnLAorICAgICAgICAiZiIuImZpbGVuYW1lIiBBUyAnZmlsZW5hbWUnLAorICAg ICAgICAiYiIuImJvb2wiIEFTICdib29sJywKKyAgICAgICAgImIiLiJzdGF0ZSIgQVMgJ2Jvb2xz dGF0ZScKKyAgICBGUk9NICJ0eXBlX3RyYW5zIiAndHQnCisgICAgICAgIExFRlQgSk9JTiAiZmls ZW5hbWVzIiAnZicgT04gInR0Ii4iaWQiID0gImYiLiJpZCIKKyAgICAgICAgTEVGVCBKT0lOICJi b29scyIgJ2InIE9OICJ0dCIuImlkIiA9ICJiIi4iaWQiOworCisgICAgQ1JFQVRFIFZJRVcgJ2Rv bnRhdWRpdF9sb29rdXAnIEFTCisgICAgU0VMRUNUCisgICAgICAgICJhc3JjIi4idHlwZSIgQVMg J3NvdXJjZScsCisgICAgICAgICJhdGd0Ii4idHlwZSIgQVMgJ3RhcmdldCcsCisgICAgICAgICJk YSIuImNsYXNzIiBBUyAnY2xhc3MnLAorICAgICAgICAicCIuInBlcm0iIEFTICdwZXJtJywKKyAg ICAgICAgImIiLiJib29sIiBBUyAnYm9vbCcsCisgICAgICAgICJiIi4ic3RhdGUiIEFTICdib29s c3RhdGUnCisgICAgRlJPTSAiZG9udGF1ZGl0IiAnZGEnCisgICAgICAgIExFRlQgSk9JTiAiYXR0 cnMiICdhc3JjJyBPTiAiZGEiLiJzb3VyY2UiID0gImFzcmMiLiJhdHRyIgorICAgICAgICBMRUZU IEpPSU4gImF0dHJzIiAnYXRndCcgT04gImRhIi4idGFyZ2V0IiA9ICJhdGd0Ii4iYXR0ciIKKyAg ICAgICAgTEVGVCBKT0lOICJwZXJtcyIgJ3AnIE9OICJkYSIuImlkIiA9ICJwIi4iaWQiCisgICAg ICAgIExFRlQgSk9JTiAiYm9vbHMiICdiJyBPTiAiZGEiLiJpZCIgPSAiYiIuImlkIjsKKyIiIikK KworIworIyMgZmlsbGluZyB1cCB0aGUgdGFibGVzCisjCisKK2RlZiBleHRyYWN0X2F0dHJzKHJ1 bGUsIGtub3duX2F0dHJzPXNldCgpKToKKyAgICB0cnk6CisgICAgICAgIHR5cGVhdHRyaWJ1dGUg PSBzZXRvb2xzLnBvbGljeXJlcC5UeXBlQXR0cmlidXRlCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVy cm9yOgorICAgICAgICAjIG9sZGVyIHNldG9vbHMKKyAgICAgICAgdHlwZWF0dHJpYnV0ZSA9IHNl dG9vbHMucG9saWN5cmVwLnR5cGVhdHRyLlR5cGVBdHRyaWJ1dGUKKworICAgICMgdHJlYXQgdHlw ZXMgYXMgZXhwYW5kYWJsZSBhdHRycworICAgIGZvciBhdHRyIGluIChydWxlLnNvdXJjZSwgcnVs ZS50YXJnZXQpOgorICAgICAgICBhdHRyX3N0ciA9IHN0cihhdHRyKSAgIyBleHBlbnNpdmUKKyAg ICAgICAgaWYgYXR0cl9zdHIgbm90IGluIGtub3duX2F0dHJzOgorICAgICAgICAgICAgIyBhdHRy LT5hdHRyCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGF0dHIsIHR5cGVhdHRyaWJ1dGUpOgor ICAgICAgICAgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyAiYXR0cnMiIFZBTFVFUyAo Pyw/KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF0dHJfc3RyLCBhdHRyX3N0cikp CisgICAgICAgICAgICAjIGF0dHItPnR5cGVzIGFuZCB0eXBlLT50eXBlCisgICAgICAgICAgICBm b3IgY2hpbGQgaW4gYXR0ci5leHBhbmQoKToKKyAgICAgICAgICAgICAgICBjdXIuZXhlY3V0ZSgn SU5TRVJUIElOVE8gImF0dHJzIiBWQUxVRVMgKD8sPyknLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhdHRyX3N0ciwgc3RyKGNoaWxkKSkpCisgICAgICAgICAgICBrbm93bl9hdHRycy5h ZGQoYXR0cl9zdHIpCisKK2tub3duX2F0dHJzID0gc2V0KCkKK2ZvciBydWxlaWQsIHJ1bGUgaW4g ZW51bWVyYXRlKHNldG9vbHMuU0VMaW51eFBvbGljeSgpLnRlcnVsZXMoKSk6CisgICAgIyBydWxl IGF0dHJpYnV0ZXMKKyAgICBleHRyYWN0X2F0dHJzKHJ1bGUsIGtub3duX2F0dHJzPWtub3duX2F0 dHJzKQorICAgICMgcGVybWlzc2lvbnMKKyAgICBpZiBoYXNhdHRyKHJ1bGUsICdwZXJtcycpOgor ICAgICAgICBmb3IgcGVybSBpbiBydWxlLnBlcm1zOgorICAgICAgICAgICAgY3VyLmV4ZWN1dGUo J0lOU0VSVCBJTlRPICJwZXJtcyIgVkFMVUVTICg/LD8pJywKKyAgICAgICAgICAgICAgICAgICAg ICAgIChydWxlaWQsIHN0cihwZXJtKSkpCisgICAgIyBib29sZWFucworICAgICNpZiBoYXNhdHRy KHJ1bGUsICdjb25kaXRpb25hbCcpOgorICAgICMgICAgdHJ1dGggPSBuZXh0KGZpbHRlcihsYW1i ZGEgeDogeC5yZXN1bHQgPT0gVHJ1ZSwKKyAgICAjICAgICAgICAgICAgICAgICAgICAgICAgcnVs ZS5jb25kaXRpb25hbC50cnV0aF90YWJsZSgpKSkudmFsdWVzCisgICAgIyAgICBmb3IgYm9vbG5h bWUsIGJvb2xzdGF0ZSBpbiB0cnV0aC5pdGVtcygpOgorICAgICMgICAgICAgIGN1ci5leGVjdXRl KCJJTlNFUlQgSU5UTyAnYm9vbHMnIFZBTFVFUyAoPyw/LD8pIiwKKyAgICAjICAgICAgICAgICAg ICAgICAgICAocnVsZWlkLCBib29sbmFtZSwgYm9vbHN0YXRlKSkKKyAgICAjIGJvb2xlYW5zIGFz IGV4cHJlc3Npb24gc3RyaW5ncywgYXMgc2VlbiBpbiBzZXNlYXJjaCBvdXRwdXQKKyAgICBpZiBo YXNhdHRyKHJ1bGUsICdjb25kaXRpb25hbCcpOgorICAgICAgICBjdXIuZXhlY3V0ZSgnSU5TRVJU IElOVE8gImJvb2xzIiBWQUxVRVMgKD8sPyw/KScsCisgICAgICAgICAgICAgICAgICAgIChydWxl aWQsIHN0cihydWxlLmNvbmRpdGlvbmFsKSwgcnVsZS5jb25kaXRpb25hbF9ibG9jaykpCisKKyAg ICAjIGZpbGVuYW1lCisgICAgaWYgaGFzYXR0cihydWxlLCAnZmlsZW5hbWUnKToKKyAgICAgICAg Y3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPICJmaWxlbmFtZXMiIFZBTFVFUyAoPyw/KScsCisgICAg ICAgICAgICAgICAgICAgIChydWxlaWQsIHJ1bGUuZmlsZW5hbWUpKQorICAgICMgcGVyLXJ1bGV0 eXBlCisgICAgaWYgcnVsZS5ydWxldHlwZSA9PSBzZXRvb2xzLlRFUnVsZXR5cGUuYWxsb3c6Cisg ICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyAiYWxsb3ciIFZBTFVFUyAoPyw/LD8sPykn LAorICAgICAgICAgICAgICAgICAgICAocnVsZWlkLCBzdHIocnVsZS5zb3VyY2UpLCBzdHIocnVs ZS50YXJnZXQpLAorICAgICAgICAgICAgICAgICAgICAgc3RyKHJ1bGUudGNsYXNzKSkpCisgICAg ZWxpZiBydWxlLnJ1bGV0eXBlID09IHNldG9vbHMuVEVSdWxldHlwZS50eXBlX3RyYW5zaXRpb246 CisgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQgSU5UTyAidHlwZV90cmFucyIgVkFMVUVTICg/ LD8sPyw/LD8pJywKKyAgICAgICAgICAgICAgICAgICAgKHJ1bGVpZCwgc3RyKHJ1bGUuc291cmNl KSwgc3RyKHJ1bGUudGFyZ2V0KSwKKyAgICAgICAgICAgICAgICAgICAgIHN0cihydWxlLnRjbGFz cyksIHN0cihydWxlLmRlZmF1bHQpKSkKKyAgICBlbGlmIHJ1bGUucnVsZXR5cGUgPT0gc2V0b29s cy5URVJ1bGV0eXBlLmRvbnRhdWRpdDoKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRP ICJkb250YXVkaXQiIFZBTFVFUyAoPyw/LD8sPyknLAorICAgICAgICAgICAgICAgICAgICAocnVs ZWlkLCBzdHIocnVsZS5zb3VyY2UpLCBzdHIocnVsZS50YXJnZXQpLAorICAgICAgICAgICAgICAg ICAgICAgc3RyKHJ1bGUudGNsYXNzKSkpCisKKyMKKyMjIGNyZWF0aW5nIGluZGljZXMKKyMKKwor IyBzZXBhcmF0ZSBDUkVBVEUgSU5ERVggYWZ0ZXIgZmlsbGluZyB1cCB0YWJsZXMgc2F2ZXMgYWJv dXQgMjAlIG9mCisjIERCIGNyZWF0aW9uIHRpbWUgKyBtYWtlcyBxdWVyaWVzIGNjYSAzMCUgZmFz dGVyIGR1ZSB0byBiZXR0ZXIgaW5kZXgKKyMgb3B0aW1pemF0aW9uCitjdXIuZXhlY3V0ZXNjcmlw dCgiIiIKKyAgICBDUkVBVEUgVU5JUVVFIElOREVYICdhdHRyc19ib3RoJyBPTiAiYXR0cnMiICgi YXR0ciIsICJ0eXBlIik7CisgICAgQ1JFQVRFIElOREVYICdwZXJtc19pZCcgT04gInBlcm1zIiAo ImlkIik7CisgICAgQ1JFQVRFIElOREVYICdwZXJtc19wZXJtJyBPTiAicGVybXMiICgicGVybSIp OworICAgIENSRUFURSBJTkRFWCAnYm9vbHNfaWQnIE9OICJib29scyIgKCJpZCIpOworICAgIENS RUFURSBJTkRFWCAnYm9vbHNfYm9vbCcgT04gImJvb2xzIiAoImJvb2wiLCAic3RhdGUiKTsKKyAg ICBDUkVBVEUgSU5ERVggJ2ZpbGVuYW1lc19pZCcgT04gImZpbGVuYW1lcyIgKCJpZCIpOworICAg IENSRUFURSBJTkRFWCAnZmlsZW5hbWVzX2ZpbGVuYW1lJyBPTiAiZmlsZW5hbWVzIiAoImZpbGVu YW1lIik7CisgICAgQ1JFQVRFIElOREVYICdhbGxvd19jb2xzJyBPTiAiYWxsb3ciICgic291cmNl IiwgInRhcmdldCIsICJjbGFzcyIpOworICAgIENSRUFURSBJTkRFWCAndHlwZV90cmFuX2NvbHMn IE9OICJ0eXBlX3RyYW5zIiAoInNvdXJjZSIsICJ0YXJnZXQiLCAiY2xhc3MiLCAiZGVmYXVsdCIp OworICAgIENSRUFURSBJTkRFWCAnZG9udGF1ZGl0X2NvbHMnIE9OICJkb250YXVkaXQiICgic291 cmNlIiwgInRhcmdldCIsICJjbGFzcyIpOworIiIiKQorCitjb25uLmNvbW1pdCgpCitjb25uLmNs b3NlKCkKCmRpZmYgLS1naXQgYS9zZWxpbnV4LXBvbGljeS9MaWJyYXJ5L2NvbW1vbi9ydW50ZXN0 LnNoIGIvc2VsaW51eC1wb2xpY3kvTGlicmFyeS9jb21tb24vcnVudGVzdC5zaApuZXcgZmlsZSBt b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NmQ1ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvc2Vs aW51eC1wb2xpY3kvTGlicmFyeS9jb21tb24vcnVudGVzdC5zaApAQCAtMCwwICsxLDIyMCBAQAor IyEvYmluL2Jhc2gKKworIyBUaGlzIGlzIGEgdGVzdCBmaWxlCisKKyMgSW5jbHVkZSByaHRzIGVu dmlyb25tZW50CisuIC91c3IvYmluL3JodHMtZW52aXJvbm1lbnQuc2gKKy4gL3Vzci9zaGFyZS9i ZWFrZXJsaWIvYmVha2VybGliLnNoCisKK2xpc3RfYm9vbGVhbnMoKSB7CisgIHNlbWFuYWdlIGJv b2xlYW4gLWwgfCBzb3J0Cit9CitybElzUkhFTCA1ICYmIHsKKyAgbGlzdF9ib29sZWFucygpIHsK KyAgICBwYXN0ZSA8KGdldHNlYm9vbCAkezE6LS1hfSB8IHNvcnQpIDwoc2VpbmZvIC1iJDEgLXgg JF9fSU5URVJOQUxfUE9MSUNZX0ZJTEUgMj4vZGV2L251bGwgfCBzZWQgLXIgJy9eXFMvZDsvXlxz KiQvZDtzL1w8W0ZmXVtBYV1bTGxdW1NzXVtFZV1cPi9vZmYvO3MvXDxbVHRdW1JyXVtVdV1bRWVd XD4vb24vJyB8IHNvcnQpIHwgc2VkIC1yICdzL14oXFMrKS4qXDwob258b2ZmKVw+LipcPChvbnxv ZmYpXD4uKi9cMSAoXDIsXDMpLztzL29uLC9vbiAgICwvO3Mvb2ZmLC9vZmYgICwvO3MvLG9uLywg ICBvbi87cy8sb2ZmLywgIG9mZi8nCisgIH0KK30KKworcmxKb3VybmFsU3RhcnQKKyAgICBybFBo YXNlU3RhcnRTZXR1cAorICAgICAgICBybFJ1biAicmxJbXBvcnQgc2VsaW51eC1wb2xpY3kvY29t bW9uIgorICAgIHJsUGhhc2VFbmQKKworICAgIHJsUGhhc2VTdGFydFRlc3QgInJsU0VCb29sZWFu IHRlc3QiCisgICAgICAgIGlmICEgc2VsaW51eGVuYWJsZWQKKyAgICAgICAgdGhlbgorICAgICAg ICAgICAgcmxMb2dXYXJuaW5nICJTRUxpbnV4IGRpc2FibGVkOiB0ZXN0IHdhcyBub3QgcnVuIiAi V0FSTiIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmxSdW4gJ3JsU0VCb29sZWFuUmVzdG9y ZSBhLWJvb2xlYW4nIDEtMjU1ICJybFNFQm9vbGVhblJlc3RvcmUgc2hvdWxkIGZhaWwgd2hlbiBu byBybFNFQm9vbGVhbiBmdW5jdGlvbnMgd2VyZSBydW4iCisgICAgICAgICAgICBybFJ1biAncmxT RUJvb2xlYW5PbicgMS0yNTUgInJsU0VCb29sZWFuT24gc2hvdWxkIGZhaWwgd2hlbiBubyBib29s ZWFuIGlzIGdpdmVuIgorICAgICAgICAgICAgcmxSdW4gJ3JsU0VCb29sZWFuT2ZmJyAxLTI1NSAi cmxTRUJvb2xlYW5PZmYgc2hvdWxkIGZhaWwgd2hlbiBubyBib29sZWFuIGlzIGdpdmVuIgorICAg ICAgICAgICAgcmxSdW4gJ3JsU0VCb29sZWFuT24gaV9kb19ub3RfZXhpc3QnIDEtMjU1ICJybFNF Qm9vbGVhbk9uIHNob3VsZCBmYWlsIGZvciBub24tZXhpc3RlbnQgYm9vbGVhbiIKKyAgICAgICAg ICAgIHJsUnVuICdybFNFQm9vbGVhbk9mZiBpX2RvX25vdF9leGlzdCcgMS0yNTUgInJsU0VCb29s ZWFuT2ZmIHNob3VsZCBmYWlsIGZvciBub24tZXhpc3RlbnQgYm9vbGVhbiIKKyAgICAgICAgICAg IHJsUnVuICdybFNFQm9vbGVhbk9uIC1QJyAxLTI1NSAicmxTRUJvb2xlYW5PbiAtUCBzaG91bGQg ZmFpbCB3aGVuIG5vIGJvb2xlYW4gaXMgZ2l2ZW4iCisgICAgICAgICAgICBybFJ1biAncmxTRUJv b2xlYW5PZmYgLVAnIDEtMjU1ICJybFNFQm9vbGVhbk9mZiAtUCBzaG91bGQgZmFpbCB3aGVuIG5v IGJvb2xlYW4gaXMgZ2l2ZW4iCisgICAgICAgICAgICBybFJ1biAncmxTRUJvb2xlYW5PbiAtUCBp X2RvX25vdF9leGlzdCcgMS0yNTUgInJsU0VCb29sZWFuT24gLVAgc2hvdWxkIGZhaWwgZm9yIG5v bi1leGlzdGVudCBib29sZWFuIgorICAgICAgICAgICAgcmxSdW4gJ3JsU0VCb29sZWFuT2ZmIC1Q IGlfZG9fbm90X2V4aXN0JyAxLTI1NSAicmxTRUJvb2xlYW5PZmYgLVAgc2hvdWxkIGZhaWwgZm9y IG5vbi1leGlzdGVudCBib29sZWFuIgorCisgICAgICAgICAgICBCT09MPSggJChnZXRzZWJvb2wg LWEgfCBncmVwIGZ0cCAtbSA0IHwgY3V0IC1kICcgJyAtZiAxIHwgdHIgJ1xuJyAnICcpICkKKyAg ICAgICAgICAgIHRtcD0iJChsaXN0X2Jvb2xlYW5zIHwgZ3JlcCBmdHApIgorICAgICAgICAgICAg Ym9vbGVhbnNfY2xlYW51cD0nJworICAgICAgICAgICAgYm9vbGVhbnNfY2xlYW51cFA9JycKKyAg ICAgICAgICAgIGZvciBib29sIGluICR7Qk9PTFtAXX07IGRvCisgICAgICAgICAgICAgIFtbICIk KGVjaG8gIiR0bXAiIHwgZ3JlcCAkYm9vbCkiID1+ICQoZWNobyAnKFxTKylcKScpIF1dICYmIGJv b2xlYW5zX2NsZWFudXBQKz0iJGJvb2w9JHtCQVNIX1JFTUFUQ0hbMV19ICIKKyAgICAgICAgICAg ICAgW1sgIiQoZWNobyAiJHRtcCIgfCBncmVwICRib29sKSIgPX4gJChlY2hvICdcKChcUyspJykg XV0gJiYgYm9vbGVhbnNfY2xlYW51cCs9IiRib29sPSR7QkFTSF9SRU1BVENIWzFdfSAiCisgICAg ICAgICAgICBkb25lCisKKyAgICAgICAgICAgICNTZXQgaW5pdGlhbCBzdGF0ZSBvZiBib29sZWFu cyAoYWxsIGNvbWJpbmF0aW9ucyAtIDAwIDAxIDEwIDExKQorICAgICAgICAgICAgcmxSdW4gInNl dHNlYm9vbCAtUCAke0JPT0xbMF19PW9mZiAke0JPT0xbMV19PW9uICR7Qk9PTFsyXX09b2ZmICR7 Qk9PTFszXX09b24iCisgICAgICAgICAgICBybFJ1biAic2V0c2Vib29sICR7Qk9PTFsxXX09b2Zm ICR7Qk9PTFsyXX09b24iCisKKyAgICAgICAgICAgICMgQ2hhbmdlIHRoZSBib29sZWFucyB1c2lu ZyBybFNFQm9vbGVhbk9uL09mZiB3aGljaCBpbmNsdWRlcyBiYWNrdXAKKyAgICAgICAgICAgIHJs UnVuICJybFNFQm9vbGVhbk9uIC1QICR7Qk9PTFswXX0gJHtCT09MWzJdfSIKKyAgICAgICAgICAg IHJsUnVuICJybFNFQm9vbGVhbk9mZiAtUCAke0JPT0xbMV19ICR7Qk9PTFszXX0iCisgICAgICAg ICAgICBybFJ1biAicmxTRUJvb2xlYW5PbiAke0JPT0xbMV19ICR7Qk9PTFsyXX0iCisgICAgICAg ICAgICBybFJ1biAicmxTRUJvb2xlYW5PZmYgJHtCT09MWzBdfSAke0JPT0xbM119IgorCisgICAg ICAgICAgICAjIENoZWNrIHRoZSBjb3JyZWN0IHZhbHVlcyB3ZXJlIHNldAorICAgICAgICAgICAg dG1wPSIkKGxpc3RfYm9vbGVhbnMpIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJc PCR7Qk9PTFswXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAg J1w8JHtCT09MWzBdfVw+JyB8IGdyZXAgJyhvZmYgICwgICBvbiknIgorICAgICAgICAgICAgZWNo byAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFsxXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hv IFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzFdfVw+JyB8IGdyZXAgJyhvbiAgICwgIG9mZikn IgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFsyXX1cPiIKKyAgICAg ICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzJdfVw+JyB8IGdy ZXAgJyhvbiAgICwgICBvbiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7 Qk9PTFszXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8 JHtCT09MWzNdfVw+JyB8IGdyZXAgJyhvZmYgICwgIG9mZiknIgorCisgICAgICAgICAgICBybFJ1 biAicmxTRUJvb2xlYW5SZXN0b3JlIgorCisgICAgICAgICAgICAjIENoZWNrIHRoZSB2YWx1ZXMg d2FzIHJlc3RvcmVkIGNvcnJlY3RseQorICAgICAgICAgICAgdG1wPSIkKGxpc3RfYm9vbGVhbnMp IgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFswXX1cPiIKKyAgICAg ICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzBdfVw+JyB8IGdy ZXAgJyhvZmYgICwgIG9mZiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7 Qk9PTFsxXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8 JHtCT09MWzFdfVw+JyB8IGdyZXAgJyhvZmYgICwgICBvbiknIgorICAgICAgICAgICAgZWNobyAi JHRtcCIgfCBncmVwICJcPCR7Qk9PTFsyXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwi XCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzJdfVw+JyB8IGdyZXAgJyhvbiAgICwgIG9mZiknIgor ICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFszXX1cPiIKKyAgICAgICAg ICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzNdfVw+JyB8IGdyZXAg JyhvbiAgICwgICBvbiknIgorCisgICAgICAgICAgICAjIEJhY2t1cCBzaG91bGQgZmFpbCBiZWNh dXNlIHRoZXJlIGFscmVhZHkgaXMgYSBiYWNrdXAgZmlsZQorICAgICAgICAgICAgcmxSdW4gInJs U0VCb29sZWFuQmFja3VwIiAzMworICAgICAgICAgICAgcmxSdW4gInJtIC1mICRCRUFLRVJMSUJf RElSL3NlYm9vbGVhbnMiCisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgQmFja3VwIGFsbCB0 aGUgYm9vbGVhbnMKKyAgICAgICAgICAgIHJsUnVuICJybFNFQm9vbGVhbkJhY2t1cCIKKworICAg ICAgICAgICAgIyBDaGFuZ2UgdGhlbSB1c2luZyBzZXRzZWJvb2wKKyAgICAgICAgICAgIHJsUnVu ICJzZXRzZWJvb2wgJHtCT09MWzBdfT1vbiAke0JPT0xbMV19PW9uICR7Qk9PTFsyXX09b2ZmICR7 Qk9PTFszXX09b2ZmIgorCisgICAgICAgICAgICB0bXA9IiQobGlzdF9ib29sZWFucykiCisgICAg ICAgICAgICBlY2hvICIkdG1wIiB8IGdyZXAgIlw8JHtCT09MWzBdfVw+IgorICAgICAgICAgICAg cmxSdW4gImVjaG8gXCJcJHRtcFwiIHwgZ3JlcCAnXDwke0JPT0xbMF19XD4nIHwgZ3JlcCAnKG9u ICAgLCAgb2ZmKSciCisgICAgICAgICAgICBlY2hvICIkdG1wIiB8IGdyZXAgIlw8JHtCT09MWzFd fVw+IgorICAgICAgICAgICAgcmxSdW4gImVjaG8gXCJcJHRtcFwiIHwgZ3JlcCAnXDwke0JPT0xb MV19XD4nIHwgZ3JlcCAnKG9uICAgLCAgIG9uKSciCisgICAgICAgICAgICBlY2hvICIkdG1wIiB8 IGdyZXAgIlw8JHtCT09MWzJdfVw+IgorICAgICAgICAgICAgcmxSdW4gImVjaG8gXCJcJHRtcFwi IHwgZ3JlcCAnXDwke0JPT0xbMl19XD4nIHwgZ3JlcCAnKG9mZiAgLCAgb2ZmKSciCisgICAgICAg ICAgICBlY2hvICIkdG1wIiB8IGdyZXAgIlw8JHtCT09MWzNdfVw+IgorICAgICAgICAgICAgcmxS dW4gImVjaG8gXCJcJHRtcFwiIHwgZ3JlcCAnXDwke0JPT0xbM119XD4nIHwgZ3JlcCAnKG9mZiAg LCAgIG9uKSciCisKKyAgICAgICAgICAgICMgUmVzdG9yZSBvbmx5IHR3byBvZiB0aGVtCisgICAg ICAgICAgICBybFJ1biAicmxTRUJvb2xlYW5SZXN0b3JlICR7Qk9PTFswXX0gJHtCT09MWzFdfSIK KworICAgICAgICAgICAgIyBDaGVjayBvbmx5IHRoZSB0d28gd2VyZSByZXN0b3JlZAorICAgICAg ICAgICAgdG1wPSIkKGxpc3RfYm9vbGVhbnMpIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBn cmVwICJcPCR7Qk9PTFswXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8 IGdyZXAgJ1w8JHtCT09MWzBdfVw+JyB8IGdyZXAgJyhvZmYgICwgIG9mZiknIgorICAgICAgICAg ICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFsxXX1cPiIKKyAgICAgICAgICAgIHJsUnVu ICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzFdfVw+JyB8IGdyZXAgJyhvZmYgICwg ICBvbiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFsyXX1cPiIK KyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzJdfVw+ JyB8IGdyZXAgJyhvZmYgICwgIG9mZiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVw ICJcPCR7Qk9PTFszXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdy ZXAgJ1w8JHtCT09MWzNdfVw+JyB8IGdyZXAgJyhvZmYgICwgICBvbiknIgorCisgICAgICAgICAg ICAjIENoYW5nZSB0d28gYm9vbHMgdXNpbmcgcmxTRUJvb2xlYW5Pbi9PZmYgdG8gbWFrZSBzdXJl IGl0IHdvbid0IHJld3JpdGUgdGhlIGJhY2t1cAorICAgICAgICAgICAgcmxSdW4gInJsU0VCb29s ZWFuT24gLVAgJHtCT09MWzBdfSIKKyAgICAgICAgICAgIHJsUnVuICJybFNFQm9vbGVhbk9mZiAt UCAke0JPT0xbMV19IgorCisgICAgICAgICAgICAjIFJlc3RvcmUgYWxsIGJ5IGxpc3RpbmcgdGhl bQorICAgICAgICAgICAgcmxSdW4gInJsU0VCb29sZWFuUmVzdG9yZSAke0JPT0xbMF19ICR7Qk9P TFsxXX0gJHtCT09MWzJdfSAke0JPT0xbM119IgorCisgICAgICAgICAgICAjIC4uYW5kIGNoZWNr IGl0IGFsbCBpcyByZXN0b3JlZCBjb3JyZWN0bHkKKyAgICAgICAgICAgIHRtcD0iJChsaXN0X2Jv b2xlYW5zKSIKKyAgICAgICAgICAgIGVjaG8gIiR0bXAiIHwgZ3JlcCAiXDwke0JPT0xbMF19XD4i CisgICAgICAgICAgICBybFJ1biAiZWNobyBcIlwkdG1wXCIgfCBncmVwICdcPCR7Qk9PTFswXX1c PicgfCBncmVwICcob2ZmICAsICBvZmYpJyIKKyAgICAgICAgICAgIGVjaG8gIiR0bXAiIHwgZ3Jl cCAiXDwke0JPT0xbMV19XD4iCisgICAgICAgICAgICBybFJ1biAiZWNobyBcIlwkdG1wXCIgfCBn cmVwICdcPCR7Qk9PTFsxXX1cPicgfCBncmVwICcob2ZmICAsICAgb24pJyIKKyAgICAgICAgICAg IGVjaG8gIiR0bXAiIHwgZ3JlcCAiXDwke0JPT0xbMl19XD4iCisgICAgICAgICAgICBybFJ1biAi ZWNobyBcIlwkdG1wXCIgfCBncmVwICdcPCR7Qk9PTFsyXX1cPicgfCBncmVwICcob24gICAsICBv ZmYpJyIKKyAgICAgICAgICAgIGVjaG8gIiR0bXAiIHwgZ3JlcCAiXDwke0JPT0xbM119XD4iCisg ICAgICAgICAgICBybFJ1biAiZWNobyBcIlwkdG1wXCIgfCBncmVwICdcPCR7Qk9PTFszXX1cPicg fCBncmVwICcob24gICAsICAgb24pJyIKKworICAgICAgICAgICAgcmxSdW4gInJtIC1mICRCRUFL RVJMSUJfRElSL3NlYm9vbGVhbnMiCisgICAgICAgICAgICAjIE5vdyBiYWNrdXAgb25seSB0d28g Ym9vbGVhbnMKKyAgICAgICAgICAgICMgQ2hhbmdlIHRoZW0gYWxsCisgICAgICAgICAgICBybFJ1 biAicmxTRUJvb2xlYW5PbiAtUCAke0JPT0xbMF19IgorICAgICAgICAgICAgcmxSdW4gInJsU0VC b29sZWFuT2ZmIC1QICR7Qk9PTFsxXX0iCisgICAgICAgICAgICBybFJ1biAic2V0c2Vib29sIC1Q ICR7Qk9PTFsyXX09b24gJHtCT09MWzNdfT1vZmYiCisgICAgICAgICAgICBybFJ1biAic2V0c2Vi b29sICR7Qk9PTFsyXX09b2ZmICR7Qk9PTFszXX09b24iCisKKyAgICAgICAgICAgICMgQ2hlY2sg dGhleSBhcmUgY2hhbmdlZAorICAgICAgICAgICAgdG1wPSIkKGxpc3RfYm9vbGVhbnMpIgorICAg ICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFswXX1cPiIKKyAgICAgICAgICAg IHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzBdfVw+JyB8IGdyZXAgJyhv biAgICwgICBvbiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFsx XX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09M WzFdfVw+JyB8IGdyZXAgJyhvZmYgICwgIG9mZiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIg fCBncmVwICJcPCR7Qk9PTFsyXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBc IiB8IGdyZXAgJ1w8JHtCT09MWzJdfVw+JyB8IGdyZXAgJyhvZmYgICwgICBvbiknIgorICAgICAg ICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFszXX1cPiIKKyAgICAgICAgICAgIHJs UnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzNdfVw+JyB8IGdyZXAgJyhvbiAg ICwgIG9mZiknIgorCisgICAgICAgICAgICAjIFJlc3RvcmluZyBub3QgYmFja2VkIHVwIGJvb2xl YW5zIHNob3VsZCBmYWlsCisgICAgICAgICAgICBybFJ1biAicmxTRUJvb2xlYW5SZXN0b3JlICR7 Qk9PTFsyXX0gJHtCT09MWzNdfSIgMS0yNTUKKworICAgICAgICAgICAgIyBBbmQgdGhpcyBzaG91 bGQgcmVzdG9yZSBvbmx5IHRoZSBiYWNrZWQgdXAgYm9vbGVhbnMKKyAgICAgICAgICAgIHJsUnVu ICJybFNFQm9vbGVhblJlc3RvcmUiCisKKyAgICAgICAgICAgICMgQ2hlY2sgb25seSBiYWNrZWQg dXAgYm9vbGVhbnMgd2VyZSByZXN0b3JlZAorICAgICAgICAgICAgdG1wPSIkKGxpc3RfYm9vbGVh bnMpIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFswXX1cPiIKKyAg ICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzBdfVw+JyB8 IGdyZXAgJyhvZmYgICwgIG9mZiknIgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJc PCR7Qk9PTFsxXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAg J1w8JHtCT09MWzFdfVw+JyB8IGdyZXAgJyhvZmYgICwgICBvbiknIgorICAgICAgICAgICAgZWNo byAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFsyXX1cPiIKKyAgICAgICAgICAgIHJsUnVuICJlY2hv IFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzJdfVw+JyB8IGdyZXAgJyhvZmYgICwgICBvbikn IgorICAgICAgICAgICAgZWNobyAiJHRtcCIgfCBncmVwICJcPCR7Qk9PTFszXX1cPiIKKyAgICAg ICAgICAgIHJsUnVuICJlY2hvIFwiXCR0bXBcIiB8IGdyZXAgJ1w8JHtCT09MWzNdfVw+JyB8IGdy ZXAgJyhvbiAgICwgIG9mZiknIgorCisgICAgICAgICAgICAjIENsZWFudXAgLSBzZXQgYWxsIHRo ZSBib29sZWFucyBiYWNrIHRvIG9mZi1vZmYKKyAgICAgICAgICAgIHJsUnVuICJzZXRzZWJvb2wg LVAgJGJvb2xlYW5zX2NsZWFudXBQIgorICAgICAgICAgICAgcmxSdW4gInNldHNlYm9vbCAkYm9v bGVhbnNfY2xlYW51cCIKKyAgICAgICAgZmkKKyAgICBybFBoYXNlRW5kCisKKyAgICBybFBoYXNl U3RhcnRUZXN0ICJybFNFU2VhcmNoUnVsZSB0ZXN0IgorICAgICAgICBybFNFU2VhcmNoUnVsZSAi YWxsb3cgd2luYmluZF90IHBvcnRfdCA6IHRjcF9zb2NrZXQgbmFtZV9jb25uZWN0IiAgCisgICAg ICAgIHJsU0VTZWFyY2hSdWxlICJhbGxvdyB1bmNvbmZpbmVkX3Qgc21iY29udHJvbF90IDogZmQg dXNlIHRhcmdldGVkIiAwCisgICAgICAgIHJsU0VTZWFyY2hSdWxlICJhbGxvdyB1bmNvbmZpbmVk X3Qgc21iY29udHJvbF90IDogZmQgdXNlIG1scyIgMQorICAgICAgICBybFNFU2VhcmNoUnVsZSAi YWxsb3cgZnRwZF90IHB1YmxpY19jb250ZW50X3J3X3QgOiBkaXIgeyBjcmVhdGUgd3JpdGUgfSIK KyAgICAgICAgcmxTRVNlYXJjaFJ1bGUgImFsbG93IGZ0cGRfdCBwdWJsaWNfY29udGVudF9yd190 IDogZGlyIHsgY3JlYXRlIHdyaXRlIH0gWyByc3luY19jbGllbnQgXSIgMQorICAgICAgICBybFNF U2VhcmNoUnVsZSAiYWxsb3cgZnRwZF90IHB1YmxpY19jb250ZW50X3J3X3QgOiBkaXIgeyBjcmVh dGUgd3JpdGUgfSBbIGFsbG93X2Z0cGRfYW5vbl93cml0ZSBdIiAwCisgICAgcmxQaGFzZUVuZAor CisgICAgaWYgcmxJc1JIRUwgJz49OCc7IHRoZW4KKyAgICAgICAgY2FjaGVfZWNobygpIHsKKyAg ICAgICAgICAgIGVjaG8gQ0FDSEVEOgorICAgICAgICAgICAgZWNobyAiJDEiCisgICAgICAgICAg ICBlY2hvIFNFU0VBUkNIOgorICAgICAgICAgICAgZWNobyAiJDIiCisgICAgICAgIH0KKyAgICAg ICAgcmxQaGFzZVN0YXJ0VGVzdCAic2VzZWFyY2ggY2FjaGUgZGVtbyIKKyAgICAgICAgICAgIHJs UnVuICJjYWNoZWQ9XCQoX19JTlRFUk5BTF9ybFNFY2FjaGVfc2VzZWFyY2ggLS1hbGxvdyAtcyB3 aW5iaW5kX3QgLXQgcG9ydF90IC1jIHRjcF9zb2NrZXQpIgorICAgICAgICAgICAgcmxSdW4gInJl YWw9XCQoc2VzZWFyY2ggLS1hbGxvdyAtcyB3aW5iaW5kX3QgLXQgcG9ydF90IC1jIHRjcF9zb2Nr ZXQpIgorICAgICAgICAgICAgY2FjaGVfZWNobyAiJGNhY2hlZCIgIiRyZWFsIgorICAgICAgICAg ICAgcmxSdW4gImNhY2hlZD1cJChfX0lOVEVSTkFMX3JsU0VjYWNoZV9zZXNlYXJjaCAtLWFsbG93 IC1zIG5zc3dpdGNoX2RvbWFpbiAtdCBwb3J0X3R5cGUgLWMgdGNwX3NvY2tldCkiCisgICAgICAg ICAgICBybFJ1biAicmVhbD1cJChzZXNlYXJjaCAtLWFsbG93IC1zIG5zc3dpdGNoX2RvbWFpbiAt dCBwb3J0X3R5cGUgLWMgdGNwX3NvY2tldCAtZHMgLWR0KSIKKyAgICAgICAgICAgIGNhY2hlX2Vj aG8gIiRjYWNoZWQiICIkcmVhbCIKKyAgICAgICAgICAgIHJsUnVuICJjYWNoZWQ9XCQoX19JTlRF Uk5BTF9ybFNFY2FjaGVfc2VzZWFyY2ggLS10eXBlX3RyYW5zIC1zIHhndWVzdF90IC10IGh0dHBk X3N5c19yYV9jb250ZW50X3QgLWMgcHJvY2VzcykiCisgICAgICAgICAgICBybFJ1biAicmVhbD1c JChzZXNlYXJjaCAtLXR5cGVfdHJhbnMgLXMgeGd1ZXN0X3QgLXQgaHR0cGRfc3lzX3JhX2NvbnRl bnRfdCAtYyBwcm9jZXNzKSIKKyAgICAgICAgICAgIGNhY2hlX2VjaG8gIiRjYWNoZWQiICIkcmVh bCIKKyAgICAgICAgICAgIHJsUnVuICJjYWNoZWQ9XCQoX19JTlRFUk5BTF9ybFNFY2FjaGVfc2Vz ZWFyY2ggLS1kb250YXVkaXQgLXMgYWJydF9oZWxwZXJfdCAtdCBkb21haW4gLWMgcm9zZV9zb2Nr ZXQpIgorICAgICAgICAgICAgcmxSdW4gInJlYWw9XCQoc2VzZWFyY2ggLS1kb250YXVkaXQgLXMg YWJydF9oZWxwZXJfdCAtdCBkb21haW4gLWMgcm9zZV9zb2NrZXQpIgorICAgICAgICAgICAgY2Fj aGVfZWNobyAiJGNhY2hlZCIgIiRyZWFsIgorICAgICAgICBybFBoYXNlRW5kCisgICAgZmkKKwor ICAgIHJsUGhhc2VTdGFydFRlc3QgInRpbWVzdGFtcHMgdGVzdCIKKyAgICAgICAgcmxTRVNldFRp bWVzdGFtcAorICAgICAgICBzbGVlcCAyCisgICAgICAgIHJsU0VTZXRUaW1lc3RhbXAgbWluZQor ICAgICAgICBzbGVlcCAyCisgICAgICAgIHJsU0VDaGVja0FWQworICAgICAgICBybFNFQ2hlY2tB VkMgbWluZQorICAgIHJsUGhhc2VFbmQKKworICAgIHJsUGhhc2VTdGFydENsZWFudXAKKyAgICBy bFBoYXNlRW5kCisgICAgcmxKb3VybmFsUHJpbnRUZXh0CitybEpvdXJuYWxFbmQKKwo=