Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

base64_decode("PD9waHAgaWYoY291bnQoZ2V0X2luY2x1ZGVkX2ZpbGVzKCkpID09IDEpIGV4aXQoIk5vIGRpcmV..

Decoded Output download

<?  base64_decode("PD9waHAgaWYoY291bnQoZ2V0X2luY2x1ZGVkX2ZpbGVzKCkpID09IDEpIGV4aXQoIk5vIGRpcmVjdCBzY3JpcHQgYWNjZXNzIGFsbG93ZWQiKTsNCg0KcmVxdWlyZV9vbmNlKEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvZmlsZS5waHAnKTsNCg0KZGVmaW5lKCJMQl9BUElfREVCVUciLCBmYWxzZSk7DQoNCmRlZmluZSgiTEJfVEVYVF9DT05ORUNUSU9OX0ZBSUxFRCIsICdTZXJ2ZXIgaXMgdW5hdmFpbGFibGUgYXQgdGhlIG1vbWVudCwgcGxlYXNlIHRyeSBhZ2Fpbi4nKTsNCmRlZmluZSgiTEJfVEVYVF9JTlZBTElEX1JFU1BPTlNFIiwgJ1NlcnZlciByZXR1cm5lZCBhbiBpbnZhbGlkIHJlc3BvbnNlLCBwbGVhc2UgY29udGFjdCBzdXBwb3J0LicpOw0KZGVmaW5lKCJMQl9URVhUX1ZFUklGSUVEX1JFU1BPTlNFIiwgJ1ZlcmlmaWVkISBUaGFua3MgZm9yIHB1cmNoYXNpbmcuJyk7DQpkZWZpbmUoIkxCX1RFWFRfUFJFUEFSSU5HX01BSU5fRE9XTkxPQUQiLCAnUHJlcGFyaW5nIHRvIGRvd25sb2FkIG1haW4gdXBkYXRlLi4uJyk7DQpkZWZpbmUoIkxCX1RFWFRfTUFJTl9VUERBVEVfU0laRSIsICdNYWluIFVwZGF0ZSBzaXplOicpOw0KZGVmaW5lKCJMQl9URVhUX0RPTlRfUkVGUkVTSCIsICcoUGxlYXNlIGRvIG5vdCByZWZyZXNoIHRoZSBwYWdlKS4nKTsNCmRlZmluZSgiTEJfVEVYVF9ET1dOTE9BRElOR19NQUlOIiwgJ0Rvd25sb2FkaW5nIG1haW4gdXBkYXRlLi4uJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1BFUklPRF9FWFBJUkVEIiwgJ1lvdXIgdXBkYXRlIHBlcmlvZCBoYXMgZW5kZWQgb3IgeW91ciBsaWNlbnNlIGlzIGludmFsaWQsIHBsZWFzZSBjb250YWN0IHN1cHBvcnQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1BBVEhfRVJST1IiLCAnRm9sZGVyIGRvZXMgbm90IGhhdmUgd3JpdGUgcGVybWlzc2lvbiBvciB0aGUgdXBkYXRlIGZpbGUgcGF0aCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQsIHBsZWFzZSBjb250YWN0IHN1cHBvcnQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfTUFJTl9VUERBVEVfRE9ORSIsICdNYWluIHVwZGF0ZSBmaWxlcyBkb3dubG9hZGVkIGFuZCBleHRyYWN0ZWQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX0VYVFJBQ1RJT05fRVJST1IiLCAnVXBkYXRlIHppcCBleHRyYWN0aW9uIGZhaWxlZC4nKTsNCmRlZmluZSgiTEJfVEVYVF9QUkVQQVJJTkdfU1FMX0RPV05MT0FEIiwgJ1ByZXBhcmluZyB0byBkb3dubG9hZCBTUUwgdXBkYXRlLi4uJyk7DQpkZWZpbmUoIkxCX1RFWFRfU1FMX1VQREFURV9TSVpFIiwgJ1NRTCBVcGRhdGUgc2l6ZTonKTsNCmRlZmluZSgiTEJfVEVYVF9ET1dOTE9BRElOR19TUUwiLCAnRG93bmxvYWRpbmcgU1FMIHVwZGF0ZS4uLicpOw0KZGVmaW5lKCJMQl9URVhUX1NRTF9VUERBVEVfRE9ORSIsICdTUUwgdXBkYXRlIGZpbGVzIGRvd25sb2FkZWQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1dJVEhfU1FMX0RPTkUiLCAnQXBwbGljYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLCBwbGVhc2UgaW1wb3J0IHRoZSBkb3dubG9hZGVkIFNRTCBmaWxlIGluIHlvdXIgZGF0YWJhc2UgbWFudWFsbHkuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1dJVEhPVVRfU1FMX0RPTkUiLCAnQXBwbGljYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLCB0aGVyZSB3ZXJlIG5vIFNRTCB1cGRhdGVzLicpOw0KDQpjbGFzcyBMaWNlbnNlQm94RXh0ZXJuYWxBUEl7DQoNCglwcml2YXRlICRwcm9kdWN0X2lkOw0KCXByaXZhdGUgJGFwaV91cmw7DQoJcHJpdmF0ZSAkYXBpX2tleTsNCglwcml2YXRlICRhcGlfbGFuZ3VhZ2U7DQoJcHJpdmF0ZSAkY3VycmVudF92ZXJzaW9uOw0KCXByaXZhdGUgJHZlcmlmeV90eXBlOw0KCXByaXZhdGUgJHZlcmlmaWNhdGlvbl9wZXJpb2Q7DQoJcHJpdmF0ZSAkY3VycmVudF9wYXRoOw0KCXByaXZhdGUgJHJvb3RfcGF0aDsNCglwcml2YXRlICRsaWNlbnNlX2ZpbGU7DQoNCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXsgDQoJCSR0aGlzLT5wcm9kdWN0X2lkID0gJ0JDQTAxNTY2JzsNCgkJJHRoaXMtPmFwaV91cmwgPSAnaHR0cHM6Ly9rZXkuYmlnbWl4LnZuLyc7DQoJCSR0aGlzLT5hcGlfa2V5ID0gJ0EyRDM4NzY1Rjc0Qzc0NDRENEE1JzsNCgkJJHRoaXMtPmFwaV9sYW5ndWFnZSA9ICdlbmdsaXNoJzsNCgkJJHRoaXMtPmN1cnJlbnRfdmVyc2lvbiA9ICd2MS4wLjAnOw0KCQkkdGhpcy0+dmVyaWZ5X3R5cGUgPSAnbm9uX2VudmF0byc7DQoJCSR0aGlzLT52ZXJpZmljYXRpb25fcGVyaW9kID0gMzsNCgkJJHRoaXMtPmN1cnJlbnRfcGF0aCA9IHJlYWxwYXRoKF9fRElSX18pOw0KCQkkdGhpcy0+cm9vdF9wYXRoID0gcmVhbHBhdGgoJHRoaXMtPmN1cnJlbnRfcGF0aC4nLy4uJyk7DQoJCSR0aGlzLT5saWNlbnNlX2ZpbGUgPSAkdGhpcy0+Y3VycmVudF9wYXRoLicvLmxpYyc7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2xvY2FsX2xpY2Vuc2VfZXhpc3QoKXsNCgkJcmV0dXJuIGlzX2ZpbGUoJHRoaXMtPmxpY2Vuc2VfZmlsZSk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldF9jdXJyZW50X3ZlcnNpb24oKXsNCgkJcmV0dXJuICR0aGlzLT5jdXJyZW50X3ZlcnNpb247DQoJfQ0KDQoJcHJpdmF0ZSBmdW5jdGlvbiBpbml0X3dwX2ZzKCl7DQoJCWdsb2JhbCAkd3BfZmlsZXN5c3RlbTsNCgkJaWYoZmFsc2UgPT09ICgkY3JlZGVudGlhbHMgPSByZXF1ZXN0X2ZpbGVzeXN0ZW1fY3JlZGVudGlhbHMoJycpKSl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJaWYoIVdQX0ZpbGVzeXN0ZW0oJGNyZWRlbnRpYWxzKSl7IA0KCQkJcmVxdWVzdF9maWxlc3lzdGVtX2NyZWRlbnRpYWxzKCcnKTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHdyaXRlX3dwX2ZzKCRmaWxlX3BhdGgsICRjb250ZW50KXsNCgkJZ2xvYmFsICR3cF9maWxlc3lzdGVtOw0KCQkkc2F2ZV9maWxlX3RvID0gJGZpbGVfcGF0aDsNCgkJaWYoJHRoaXMtPmluaXRfd3BfZnMoKSl7ICAgIA0KCQkJaWYoJHdwX2ZpbGVzeXN0ZW0tPnB1dF9jb250ZW50cygkc2F2ZV9maWxlX3RvLCAkY29udGVudCwgRlNfQ0hNT0RfRklMRSkpew0KCQkJCXJldHVybiB0cnVlOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCX0NCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHJlYWRfd3BfZnMoJGZpbGVfcGF0aCl7DQoJCWdsb2JhbCAkd3BfZmlsZXN5c3RlbTsNCgkJaWYoJHRoaXMtPmluaXRfd3BfZnMoKSl7ICAgIA0KCQkJcmV0dXJuICR3cF9maWxlc3lzdGVtLT5nZXRfY29udGVudHMoJGZpbGVfcGF0aCk7DQoJCX0NCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIGNhbGxfYXBpKCRtZXRob2QsICR1cmwsICRkYXRhID0gbnVsbCl7DQoJCSR3cF9hcmdzID0gYXJyYXkoJ2JvZHknID0+ICRkYXRhKTsJDQoJCSR3cF9hcmdzWydtZXRob2QnXSA9ICRtZXRob2Q7DQoNCgkJJHRoaXNfdXJsID0gc2l0ZV91cmwoKTsNCgkJJHRoaXNfaXAgPSBnZXRlbnYoJ1NFUlZFUl9BRERSJyk/Og0KCQkJJHRoaXMtPmdldF9pcF9mcm9tX3RoaXJkX3BhcnR5KCk/Og0KCQkJZ2V0aG9zdGJ5bmFtZShnZXRob3N0bmFtZSgpKTsNCg0KCQkkd3BfYXJnc1snaGVhZGVycyddID0gYXJyYXkoDQoJCQknQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbicsIA0KCQkJJ0xCLUFQSS1LRVknID0+ICR0aGlzLT5hcGlfa2V5LCANCgkJCSdMQi1VUkwnID0+ICR0aGlzX3VybCwgDQoJCQknTEItSVAnID0+ICR0aGlzX2lwLCANCgkJCSdMQi1MQU5HJyA9PiAkdGhpcy0+YXBpX2xhbmd1YWdlDQoJCSk7DQoJCSR3cF9hcmdzWyd0aW1lb3V0J10gPSAzMDsNCg0KCQkkcmVzdWx0ID0gd3BfcmVtb3RlX3JlcXVlc3QoJHVybCwgJHdwX2FyZ3MpOw0KDQoJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpJiYhTEJfQVBJX0RFQlVHKXsNCgkJCSRycyA9IGFycmF5KA0KCQkJCSdzdGF0dXMnID0+IEZBTFNFLCANCgkJCQknbWVzc2FnZScgPT4gTEJfVEVYVF9DT05ORUNUSU9OX0ZBSUxFRA0KCQkJKTsNCgkJCXJldHVybiBqc29uX2VuY29kZSgkcnMpOw0KCQl9DQoJCSRodHRwX3N0YXR1cyA9ICRyZXN1bHRbJ3Jlc3BvbnNlJ11bJ2NvZGUnXTsNCgkJaWYoJGh0dHBfc3RhdHVzICE9IDIwMCl7DQoJCQlpZihMQl9BUElfREVCVUcpew0KCQkJCSR0ZW1wX2RlY29kZSA9IGpzb25fZGVjb2RlKCRyZXN1bHRbJ2JvZHknXSwgdHJ1ZSk7DQoJCQkJJHJzID0gYXJyYXkoDQoJCQkJCSdzdGF0dXMnID0+IEZBTFNFLCANCgkJCQkJJ21lc3NhZ2UnID0+ICgoIWVtcHR5KCR0ZW1wX2RlY29kZVsnZXJyb3InXSkpPw0KCQkJCQkJJHRlbXBfZGVjb2RlWydlcnJvciddOg0KCQkJCQkJJHRlbXBfZGVjb2RlWydtZXNzYWdlJ10pDQoJCQkJKTsNCgkJCQlyZXR1cm4ganNvbl9lbmNvZGUoJHJzKTsNCgkJCX1lbHNlew0KCQkJCSRycyA9IGFycmF5KA0KCQkJCQknc3RhdHVzJyA9PiBGQUxTRSwgDQoJCQkJCSdtZXNzYWdlJyA9PiBMQl9URVhUX0lOVkFMSURfUkVTUE9OU0UNCgkJCQkpOw0KCQkJCXJldHVybiBqc29uX2VuY29kZSgkcnMpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkcmVzdWx0Wydib2R5J107DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2Nvbm5lY3Rpb24oKXsNCgkJJGdldF9kYXRhID0gJHRoaXMtPmNhbGxfYXBpKA0KCQkJJ1BPU1QnLA0KCQkJJHRoaXMtPmFwaV91cmwuJ2FwaS9jaGVja19jb25uZWN0aW9uX2V4dCcNCgkJKTsNCgkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJGdldF9kYXRhLCB0cnVlKTsNCgkJcmV0dXJuICRyZXNwb25zZTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2xhdGVzdF92ZXJzaW9uKCl7DQoJCSRkYXRhX2FycmF5ID0gIGFycmF5KA0KCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZA0KCQkpOw0KCQkkZ2V0X2RhdGEgPSAkdGhpcy0+Y2FsbF9hcGkoDQoJCQknUE9TVCcsDQoJCQkkdGhpcy0+YXBpX3VybC4nYXBpL2xhdGVzdF92ZXJzaW9uJywgDQoJCQlqc29uX2VuY29kZSgkZGF0YV9hcnJheSkNCgkJKTsNCgkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJGdldF9kYXRhLCB0cnVlKTsNCgkJcmV0dXJuICRyZXNwb25zZTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gYWN0aXZhdGVfbGljZW5zZSgkbGljZW5zZSwgJGNsaWVudCwgJGNyZWF0ZV9saWMgPSB0cnVlKXsNCgkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkicHJvZHVjdF9pZCIgID0+ICR0aGlzLT5wcm9kdWN0X2lkLA0KCQkJImxpY2Vuc2VfY29kZSIgPT4gJGxpY2Vuc2UsDQoJCQkiY2xpZW50X25hbWUiID0+ICRjbGllbnQsDQoJCQkidmVyaWZ5X3R5cGUiID0+ICR0aGlzLT52ZXJpZnlfdHlwZQ0KCQkpOw0KCQkkZ2V0X2RhdGEgPSAkdGhpcy0+Y2FsbF9hcGkoDQoJCQknUE9TVCcsDQoJCQkkdGhpcy0+YXBpX3VybC4nYXBpL2FjdGl2YXRlX2xpY2Vuc2UnLCANCgkJCWpzb25fZW5jb2RlKCRkYXRhX2FycmF5KQ0KCQkpOw0KCQkkcmVzcG9uc2UgPSBqc29uX2RlY29kZSgkZ2V0X2RhdGEsIHRydWUpOw0KCQlpZighZW1wdHkoJGNyZWF0ZV9saWMpKXsNCgkJCWlmKCRyZXNwb25zZVsnc3RhdHVzJ10pew0KCQkJCSRsaWNmaWxlID0gdHJpbSgkcmVzcG9uc2VbJ2xpY19yZXNwb25zZSddKTsNCgkJCQkkdGhpcy0+d3JpdGVfd3BfZnMoJHRoaXMtPmxpY2Vuc2VfZmlsZSwgJGxpY2ZpbGUpOw0KCQkJfWVsc2V7DQoJCQkJaWYoaXNfd3JpdGVhYmxlKCR0aGlzLT5saWNlbnNlX2ZpbGUpKXsNCgkJCQkJdW5saW5rKCR0aGlzLT5saWNlbnNlX2ZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJlc3BvbnNlOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlfbGljZW5zZSgkdGltZV9iYXNlZF9jaGVjayA9IGZhbHNlLCAkbGljZW5zZSA9IGZhbHNlLCAkY2xpZW50ID0gZmFsc2Upew0KCQlpZighZW1wdHkoJGxpY2Vuc2UpJiYhZW1wdHkoJGNsaWVudCkpew0KCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkibGljZW5zZV9maWxlIiA9PiBudWxsLA0KCQkJCSJsaWNlbnNlX2NvZGUiID0+ICRsaWNlbnNlLA0KCQkJCSJjbGllbnRfbmFtZSIgPT4gJGNsaWVudA0KCQkJKTsNCgkJfWVsc2V7DQoJCQlpZihpc19maWxlKCR0aGlzLT5saWNlbnNlX2ZpbGUpKXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgNCgkJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkJImxpY2Vuc2VfZmlsZSIgPT4gJHRoaXMtPnJlYWRfd3BfZnMoJHRoaXMtPmxpY2Vuc2VfZmlsZSksDQoJCQkJCSJsaWNlbnNlX2NvZGUiID0+IG51bGwsDQoJCQkJCSJjbGllbnRfbmFtZSIgPT4gbnVsbA0KCQkJCSk7DQoJCQl9ZWxzZXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgpOw0KCQkJfQ0KCQl9IA0KCQkkcmVzID0gYXJyYXkoJ3N0YXR1cycgPT4gVFJVRSwgJ21lc3NhZ2UnID0+IExCX1RFWFRfVkVSSUZJRURfUkVTUE9OU0UpOw0KCQlpZigkdGltZV9iYXNlZF9jaGVjayAmJiAkdGhpcy0+dmVyaWZpY2F0aW9uX3BlcmlvZCA+IDApew0KCQkJb2Jfc3RhcnQoKTsNCgkJCWlmKHNlc3Npb25fc3RhdHVzKCkgPT0gUEhQX1NFU1NJT05fTk9ORSl7DQoJCQkJc2Vzc2lvbl9zdGFydCgpOw0KCQkJfQ0KCQkJJHR5cGUgPSAoaW50KSAkdGhpcy0+dmVyaWZpY2F0aW9uX3BlcmlvZDsNCgkJCSR0b2RheSA9IGRhdGUoJ2QtbS1ZJyk7DQoJCQlpZihlbXB0eSgkX1NFU1NJT05bImJhYjdiN2IwNDcwOTNkZSJdKSl7DQoJCQkJJF9TRVNTSU9OWyJiYWI3YjdiMDQ3MDkzZGUiXSA9ICcwMC0wMC0wMDAwJzsNCgkJCX0NCgkJCWlmKCR0eXBlID09IDEpew0KCQkJCSR0eXBlX3RleHQgPSAnMSBkYXknOw0KCQkJfWVsc2VpZigkdHlwZSA9PSAzKXsNCgkJCQkkdHlwZV90ZXh0ID0gJzMgZGF5cyc7DQoJCQl9ZWxzZWlmKCR0eXBlID09IDcpew0KCQkJCSR0eXBlX3RleHQgPSAnMSB3ZWVrJzsNCgkJCX1lbHNlaWYoJHR5cGUgPT0gMzApew0KCQkJCSR0eXBlX3RleHQgPSAnMSBtb250aCc7DQoJCQl9ZWxzZWlmKCR0eXBlID09IDkwKXsNCgkJCQkkdHlwZV90ZXh0ID0gJzMgbW9udGhzJzsNCgkJCX1lbHNlaWYoJHR5cGUgPT0gMzY1KSB7DQoJCQkJJHR5cGVfdGV4dCA9ICcxIHllYXInOw0KCQkJfWVsc2V7DQoJCQkJJHR5cGVfdGV4dCA9ICR0eXBlLicgZGF5cyc7DQoJCQl9DQoJCQlpZihzdHJ0b3RpbWUoJHRvZGF5KSA+PSBzdHJ0b3RpbWUoJF9TRVNTSU9OWyJiYWI3YjdiMDQ3MDkzZGUiXSkpew0KCQkJCSRnZXRfZGF0YSA9ICR0aGlzLT5jYWxsX2FwaSgNCgkJCQkJJ1BPU1QnLA0KCQkJCQkkdGhpcy0+YXBpX3VybC4nYXBpL3ZlcmlmeV9saWNlbnNlJywgDQoJCQkJCWpzb25fZW5jb2RlKCRkYXRhX2FycmF5KQ0KCQkJCSk7DQoJCQkJJHJlcyA9IGpzb25fZGVjb2RlKCRnZXRfZGF0YSwgdHJ1ZSk7DQoJCQkJaWYoJHJlc1snc3RhdHVzJ109PXRydWUpew0KCQkJCQkkdG9tbyA9IGRhdGUoJ2QtbS1ZJywgc3RydG90aW1lKCR0b2RheS4gJyArICcuJHR5cGVfdGV4dCkpOw0KCQkJCQkkX1NFU1NJT05bImJhYjdiN2IwNDcwOTNkZSJdID0gJHRvbW87DQoJCQkJfQ0KCQkJfQ0KCQkJc2Vzc2lvbl93cml0ZV9jbG9zZSgpOw0KCQkJb2JfZW5kX2NsZWFuKCk7DQoJCX1lbHNlew0KCQkJJGdldF9kYXRhID0gJHRoaXMtPmNhbGxfYXBpKA0KCQkJCSdQT1NUJywNCgkJCQkkdGhpcy0+YXBpX3VybC4nYXBpL3ZlcmlmeV9saWNlbnNlJywgDQoJCQkJanNvbl9lbmNvZGUoJGRhdGFfYXJyYXkpDQoJCQkpOw0KCQkJJHJlcyA9IGpzb25fZGVjb2RlKCRnZXRfZGF0YSwgdHJ1ZSk7DQoJCX0NCgkJcmV0dXJuICRyZXM7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGRlYWN0aXZhdGVfbGljZW5zZSgkbGljZW5zZSA9IGZhbHNlLCAkY2xpZW50ID0gZmFsc2Upew0KCQlpZighZW1wdHkoJGxpY2Vuc2UpJiYhZW1wdHkoJGNsaWVudCkpew0KCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkibGljZW5zZV9maWxlIiA9PiBudWxsLA0KCQkJCSJsaWNlbnNlX2NvZGUiID0+ICRsaWNlbnNlLA0KCQkJCSJjbGllbnRfbmFtZSIgPT4gJGNsaWVudA0KCQkJKTsNCgkJfWVsc2V7DQoJCQlpZihpc19maWxlKCR0aGlzLT5saWNlbnNlX2ZpbGUpKXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgNCgkJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkJImxpY2Vuc2VfZmlsZSIgPT4gJHRoaXMtPnJlYWRfd3BfZnMoJHRoaXMtPmxpY2Vuc2VfZmlsZSksDQoJCQkJCSJsaWNlbnNlX2NvZGUiID0+IG51bGwsDQoJCQkJCSJjbGllbnRfbmFtZSIgPT4gbnVsbA0KCQkJCSk7DQoJCQl9ZWxzZXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgpOw0KCQkJfQ0KCQl9DQoJCSRnZXRfZGF0YSA9ICR0aGlzLT5jYWxsX2FwaSgNCgkJCSdQT1NUJywNCgkJCSR0aGlzLT5hcGlfdXJsLidhcGkvZGVhY3RpdmF0ZV9saWNlbnNlJywgDQoJCQlqc29uX2VuY29kZSgkZGF0YV9hcnJheSkNCgkJKTsNCgkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJGdldF9kYXRhLCB0cnVlKTsNCgkJaWYoJHJlc3BvbnNlWydzdGF0dXMnXSl7DQoJCQlpZihpc193cml0ZWFibGUoJHRoaXMtPmxpY2Vuc2VfZmlsZSkpew0KCQkJCXVubGluaygkdGhpcy0+bGljZW5zZV9maWxlKTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJlc3BvbnNlOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBjaGVja191cGRhdGUoKXsNCgkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkicHJvZHVjdF9pZCIgID0+ICR0aGlzLT5wcm9kdWN0X2lkLA0KCQkJImN1cnJlbnRfdmVyc2lvbiIgPT4gJHRoaXMtPmN1cnJlbnRfdmVyc2lvbg0KCQkpOw0KCQkkZ2V0X2RhdGEgPSAkdGhpcy0+Y2FsbF9hcGkoDQoJCQknUE9TVCcsDQoJCQkkdGhpcy0+YXBpX3VybC4nYXBpL2NoZWNrX3VwZGF0ZScsIA0KCQkJanNvbl9lbmNvZGUoJGRhdGFfYXJyYXkpDQoJCSk7DQoJCSRyZXNwb25zZSA9IGpzb25fZGVjb2RlKCRnZXRfZGF0YSwgdHJ1ZSk7DQoJCXJldHVybiAkcmVzcG9uc2U7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGRvd25sb2FkX3VwZGF0ZSgkdXBkYXRlX2lkLCAkdHlwZSwgJHZlcnNpb24sICRsaWNlbnNlID0gZmFsc2UsICRjbGllbnQgPSBmYWxzZSl7IA0KCQlpZighZW1wdHkoJGxpY2Vuc2UpJiYhZW1wdHkoJGNsaWVudCkpew0KCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJImxpY2Vuc2VfZmlsZSIgPT4gbnVsbCwNCgkJCQkibGljZW5zZV9jb2RlIiA9PiAkbGljZW5zZSwNCgkJCQkiY2xpZW50X25hbWUiID0+ICRjbGllbnQNCgkJCSk7DQoJCX1lbHNlew0KCQkJaWYoaXNfZmlsZSgkdGhpcy0+bGljZW5zZV9maWxlKSl7DQoJCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJCSJsaWNlbnNlX2ZpbGUiID0+ICR0aGlzLT5yZWFkX3dwX2ZzKCR0aGlzLT5saWNlbnNlX2ZpbGUpLA0KCQkJCQkibGljZW5zZV9jb2RlIiA9PiBudWxsLA0KCQkJCQkiY2xpZW50X25hbWUiID0+IG51bGwNCgkJCQkpOw0KCQkJfWVsc2V7DQoJCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoKTsNCgkJCX0NCgkJfQ0KCQlvYl9lbmRfZmx1c2goKTsgDQoJCW9iX2ltcGxpY2l0X2ZsdXNoKHRydWUpOyAgDQoJCSR2ZXJzaW9uID0gc3RyX3JlcGxhY2UoIi4iLCAiXyIsICR2ZXJzaW9uKTsNCgkJb2Jfc3RhcnQoKTsNCgkJJHNvdXJjZV9zaXplID0gJHRoaXMtPmFwaV91cmwuImFwaS9nZXRfdXBkYXRlX3NpemUvbWFpbi8iLiR1cGRhdGVfaWQ7IA0KCQllY2hvIExCX1RFWFRfUFJFUEFSSU5HX01BSU5fRE9XTkxPQUQuIjxicj4iOw0KCQlvYl9mbHVzaCgpOw0KCQllY2hvIExCX1RFWFRfTUFJTl9VUERBVEVfU0laRS4iICIuJHRoaXMtPmdldF9yZW1vdGVfZmlsZXNpemUoJHNvdXJjZV9zaXplKS4iICIuTEJfVEVYVF9ET05UX1JFRlJFU0guIjxicj4iOw0KCQlvYl9mbHVzaCgpOw0KCQkkdGVtcF9wcm9ncmVzcyA9ICcnOw0KCQkkc291cmNlID0gJHRoaXMtPmFwaV91cmwuImFwaS9kb3dubG9hZF91cGRhdGUvbWFpbi8iLiR1cGRhdGVfaWQ7IA0KCQkkd3BfYXJncyA9IGFycmF5KCdib2R5JyA9PiBqc29uX2VuY29kZSgkZGF0YV9hcnJheSkpOwkNCgkJJHdwX2FyZ3NbJ21ldGhvZCddID0gJ1BPU1QnOw0KCQkkdGhpc191cmwgPSBzaXRlX3VybCgpOw0KCQkkdGhpc19pcCA9IGdldGVudignU0VSVkVSX0FERFInKT86DQoJCQkkdGhpcy0+Z2V0X2lwX2Zyb21fdGhpcmRfcGFydHkoKT86DQoJCQlnZXRob3N0YnluYW1lKGdldGhvc3RuYW1lKCkpOw0KCQkkd3BfYXJnc1snaGVhZGVycyddID0gYXJyYXkoDQoJCQknQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbicsIA0KCQkJJ0xCLUFQSS1LRVknID0+ICR0aGlzLT5hcGlfa2V5LCANCgkJCSdMQi1VUkwnID0+ICR0aGlzX3VybCwgDQoJCQknTEItSVAnID0+ICR0aGlzX2lwLCANCgkJCSdMQi1MQU5HJyA9PiAkdGhpcy0+YXBpX2xhbmd1YWdlDQoJCSk7DQoJCSR3cF9hcmdzWyd0aW1lb3V0J10gPSAzMDsNCgkJZWNobyBMQl9URVhUX0RPV05MT0FESU5HX01BSU4uIjxicj4iOw0KCQlvYl9mbHVzaCgpOw0KCQkkcmVzdWx0ID0gd3BfcmVtb3RlX3JlcXVlc3QoJHNvdXJjZSwgJHdwX2FyZ3MpOw0KCQlpZihpc193cF9lcnJvcigkcmVzdWx0KSl7DQoJCQlleGl0KCI8YnI+Ii5MQl9URVhUX0NPTk5FQ1RJT05fRkFJTEVEKTsNCgkJfQ0KCQkkZGF0YSA9ICRyZXN1bHRbJ2JvZHknXTsNCgkJJGh0dHBfc3RhdHVzID0gJHJlc3VsdFsncmVzcG9uc2UnXVsnY29kZSddOw0KCQlpZigkaHR0cF9zdGF0dXMgIT0gMjAwKXsNCgkJCWlmKCRodHRwX3N0YXR1cyA9PSA0MDEpew0KCQkJCWV4aXQoIjxicj4iLkxCX1RFWFRfVVBEQVRFX1BFUklPRF9FWFBJUkVEKTsNCgkJCX1lbHNlew0KCQkJCWV4aXQoIjxicj4iLkxCX1RFWFRfSU5WQUxJRF9SRVNQT05TRSk7DQoJCQl9DQoJCX0NCgkJJGRlc3RpbmF0aW9uID0gJHRoaXMtPnJvb3RfcGF0aC4iL3VwZGF0ZV9tYWluXyIuJHZlcnNpb24uIi56aXAiOyANCgkJJGZpbGUgPSAkdGhpcy0+d3JpdGVfd3BfZnMoJGRlc3RpbmF0aW9uLCAkZGF0YSk7DQoJCWlmKCEkZmlsZSl7DQoJCQlleGl0KCI8YnI+Ii5MQl9URVhUX1VQREFURV9QQVRIX0VSUk9SKTsNCgkJfQ0KCQlvYl9mbHVzaCgpOw0KCQkkemlwID0gbmV3IFppcEFyY2hpdmU7DQoJCSRyZXMgPSAkemlwLT5vcGVuKCRkZXN0aW5hdGlvbik7DQoJCWlmKCRyZXMgPT09IFRSVUUpew0KCQkJJHppcC0+ZXh0cmFjdFRvKCR0aGlzLT5yb290X3BhdGguIi8iKTsgDQoJCQkkemlwLT5jbG9zZSgpOw0KCQkJdW5saW5rKCRkZXN0aW5hdGlvbik7DQoJCQllY2hvIExCX1RFWFRfTUFJTl9VUERBVEVfRE9ORS4iPGJyPjxicj4iOw0KCQkJb2JfZmx1c2goKTsNCgkJfWVsc2V7DQoJCQllY2hvIExCX1RFWFRfVVBEQVRFX0VYVFJBQ1RJT05fRVJST1IuIjxicj48YnI+IjsNCgkJCW9iX2ZsdXNoKCk7DQoJCX0NCgkJaWYoJHR5cGUgPT0gdHJ1ZSl7DQoJCQkkc291cmNlX3NpemUgPSAkdGhpcy0+YXBpX3VybC4iYXBpL2dldF91cGRhdGVfc2l6ZS9zcWwvIi4kdXBkYXRlX2lkOyANCgkJCWVjaG8gTEJfVEVYVF9QUkVQQVJJTkdfU1FMX0RPV05MT0FELiI8YnI+IjsNCgkJCW9iX2ZsdXNoKCk7DQoJCQllY2hvIExCX1RFWFRfU1FMX1VQREFURV9TSVpFLiIgIi4kdGhpcy0+Z2V0X3JlbW90ZV9maWxlc2l6ZSgkc291cmNlX3NpemUpLiIgIi5MQl9URVhUX0RPTlRfUkVGUkVTSC4iPGJyPiI7DQoJCQlvYl9mbHVzaCgpOw0KCQkJJHRlbXBfcHJvZ3Jlc3MgPSAnJzsNCgkJCSRzb3VyY2UgPSAkdGhpcy0+YXBpX3VybC4iYXBpL2Rvd25sb2FkX3VwZGF0ZS9zcWwvIi4kdXBkYXRlX2lkOw0KCQkJJHdwX2FyZ3MgPSBhcnJheSgnYm9keScgPT4ganNvbl9lbmNvZGUoJGRhdGFfYXJyYXkpKTsJDQoJCQkkd3BfYXJnc1snbWV0aG9kJ10gPSAnUE9TVCc7DQoJCQkkdGhpc191cmwgPSBzaXRlX3VybCgpOw0KCQkJJHRoaXNfaXAgPSBnZXRlbnYoJ1NFUlZFUl9BRERSJyk/Og0KCQkJCSR0aGlzLT5nZXRfaXBfZnJvbV90aGlyZF9wYXJ0eSgpPzoNCgkJCQlnZXRob3N0YnluYW1lKGdldGhvc3RuYW1lKCkpOw0KCQkJJHdwX2FyZ3NbJ2hlYWRlcnMnXSA9IGFycmF5KA0KCQkJCSdDb250ZW50LVR5cGUnID0+ICdhcHBsaWNhdGlvbi9qc29uJywgDQoJCQkJJ0xCLUFQSS1LRVknID0+ICR0aGlzLT5hcGlfa2V5LCANCgkJCQknTEItVVJMJyA9PiAkdGhpc191cmwsIA0KCQkJCSdMQi1JUCcgPT4gJHRoaXNfaXAsIA0KCQkJCSdMQi1MQU5HJyA9PiAkdGhpcy0+YXBpX2xhbmd1YWdlDQoJCQkpOw0KCQkJJHdwX2FyZ3NbJ3RpbWVvdXQnXSA9IDMwOw0KCQkJZWNobyBMQl9URVhUX0RPV05MT0FESU5HX1NRTC4iPGJyPiI7DQoJCQlvYl9mbHVzaCgpOw0KCQkJJHJlc3VsdCA9IHdwX3JlbW90ZV9yZXF1ZXN0KCRzb3VyY2UsICR3cF9hcmdzKTsNCgkJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpKXsNCgkJCQlleGl0KExCX1RFWFRfQ09OTkVDVElPTl9GQUlMRUQpOw0KCQkJfQ0KCQkJJGRhdGEgPSAkcmVzdWx0Wydib2R5J107DQoJCQkkaHR0cF9zdGF0dXMgPSAkcmVzdWx0WydyZXNwb25zZSddWydjb2RlJ107DQoJCQlpZigkaHR0cF9zdGF0dXMhPTIwMCl7DQoJCQkJZXhpdChMQl9URVhUX0lOVkFMSURfUkVTUE9OU0UpOw0KCQkJfQ0KCQkJJGRlc3RpbmF0aW9uID0gJHRoaXMtPnJvb3RfcGF0aC4iL3VwZGF0ZV9zcWxfIi4kdmVyc2lvbi4iLnNxbCI7IA0KCQkJJGZpbGUgPSAkdGhpcy0+d3JpdGVfd3BfZnMoJGRlc3RpbmF0aW9uLCAkZGF0YSk7DQoJCQlpZighJGZpbGUpew0KCQkJCWV4aXQoTEJfVEVYVF9VUERBVEVfUEFUSF9FUlJPUik7DQoJCQl9DQoJCQllY2hvIExCX1RFWFRfU1FMX1VQREFURV9ET05FLiI8YnI+PGJyPiI7DQoJCQllY2hvIExCX1RFWFRfVVBEQVRFX1dJVEhfU1FMX0RPTkU7DQoJCQlvYl9mbHVzaCgpOw0KCQl9ZWxzZXsNCgkJCWVjaG8gTEJfVEVYVF9VUERBVEVfV0lUSE9VVF9TUUxfRE9ORTsNCgkJCW9iX2ZsdXNoKCk7DQoJCX0NCgkJb2JfZW5kX2ZsdXNoKCk7IA0KCX0NCg0KCXByaXZhdGUgZnVuY3Rpb24gZ2V0X2lwX2Zyb21fdGhpcmRfcGFydHkoKXsNCgkJJHdwX2FyZ3MgPSBhcnJheSgnbWV0aG9kJyA9PiAnR0VUJyk7CQ0KCQkkd3BfYXJnc1sndGltZW91dCddID0gMzA7DQoJCSRyZXN1bHQgPSB3cF9yZW1vdGVfcmVxdWVzdCgnaHR0cDovL2lwZWNoby5uZXQvcGxhaW4nLCAkd3BfYXJncyk7DQoJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpKXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gJHJlc3VsdFsnYm9keSddOw0KCX0NCg0KCXByaXZhdGUgZnVuY3Rpb24gZ2V0X3JlbW90ZV9maWxlc2l6ZSgkdXJsKXsNCgkJJHdwX2FyZ3MgPSBhcnJheSgnbWV0aG9kJyA9PiAnSEVBRCcpOwkNCgkJJHRoaXNfdXJsID0gc2l0ZV91cmwoKTsNCgkJJHRoaXNfaXAgPSBnZXRlbnYoJ1NFUlZFUl9BRERSJyk/Og0KCQkJJHRoaXMtPmdldF9pcF9mcm9tX3RoaXJkX3BhcnR5KCk/Og0KCQkJZ2V0aG9zdGJ5bmFtZShnZXRob3N0bmFtZSgpKTsNCgkJJHdwX2FyZ3NbJ2hlYWRlcnMnXSA9IGFycmF5KA0KCQkJJ0NvbnRlbnQtVHlwZScgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLCANCgkJCSdMQi1BUEktS0VZJyA9PiAkdGhpcy0+YXBpX2tleSwgDQoJCQknTEItVVJMJyA9PiAkdGhpc191cmwsIA0KCQkJJ0xCLUlQJyA9PiAkdGhpc19pcCwgDQoJCQknTEItTEFORycgPT4gJHRoaXMtPmFwaV9sYW5ndWFnZQ0KCQkpOw0KCQkkd3BfYXJnc1sndGltZW91dCddID0gMzA7DQoJCSRyZXN1bHQgPSB3cF9yZW1vdGVfcmVxdWVzdCgkdXJsLCAkd3BfYXJncyk7DQoJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpKXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkkZmlsZXNpemUgPSAkcmVzdWx0WydoZWFkZXJzJ11bJ2NvbnRlbnQtbGVuZ3RoJ107DQoJCWlmICgkZmlsZXNpemUpew0KCQkJc3dpdGNoICgkZmlsZXNpemUpew0KCQkJCWNhc2UgJGZpbGVzaXplIDwgMTAyNDoNCgkJCQkJJHNpemUgPSAkZmlsZXNpemUgLicgQic7IGJyZWFrOw0KCQkJCWNhc2UgJGZpbGVzaXplIDwgMTA0ODU3NjoNCgkJCQkJJHNpemUgPSByb3VuZCgkZmlsZXNpemUgLyAxMDI0LCAyKSAuJyBLQic7IGJyZWFrOw0KCQkJCWNhc2UgJGZpbGVzaXplIDwgMTA3Mzc0MTgyNDoNCgkJCQkJJHNpemUgPSByb3VuZCgkZmlsZXNpemUgLyAxMDQ4NTc2LCAyKSAuICcgTUInOyBicmVhazsNCgkJCQljYXNlICRmaWxlc2l6ZSA8IDEwOTk1MTE2Mjc3NzY6DQoJCQkJCSRzaXplID0gcm91bmQoJGZpbGVzaXplIC8gMTA3Mzc0MTgyNCwgMikgLiAnIEdCJzsgYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gJHNpemU7IA0KCQl9DQoJfQ0KfQ0K"));  ?>

Did this file decode correctly?

Original Code

base64_decode("PD9waHAgaWYoY291bnQoZ2V0X2luY2x1ZGVkX2ZpbGVzKCkpID09IDEpIGV4aXQoIk5vIGRpcmVjdCBzY3JpcHQgYWNjZXNzIGFsbG93ZWQiKTsNCg0KcmVxdWlyZV9vbmNlKEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvZmlsZS5waHAnKTsNCg0KZGVmaW5lKCJMQl9BUElfREVCVUciLCBmYWxzZSk7DQoNCmRlZmluZSgiTEJfVEVYVF9DT05ORUNUSU9OX0ZBSUxFRCIsICdTZXJ2ZXIgaXMgdW5hdmFpbGFibGUgYXQgdGhlIG1vbWVudCwgcGxlYXNlIHRyeSBhZ2Fpbi4nKTsNCmRlZmluZSgiTEJfVEVYVF9JTlZBTElEX1JFU1BPTlNFIiwgJ1NlcnZlciByZXR1cm5lZCBhbiBpbnZhbGlkIHJlc3BvbnNlLCBwbGVhc2UgY29udGFjdCBzdXBwb3J0LicpOw0KZGVmaW5lKCJMQl9URVhUX1ZFUklGSUVEX1JFU1BPTlNFIiwgJ1ZlcmlmaWVkISBUaGFua3MgZm9yIHB1cmNoYXNpbmcuJyk7DQpkZWZpbmUoIkxCX1RFWFRfUFJFUEFSSU5HX01BSU5fRE9XTkxPQUQiLCAnUHJlcGFyaW5nIHRvIGRvd25sb2FkIG1haW4gdXBkYXRlLi4uJyk7DQpkZWZpbmUoIkxCX1RFWFRfTUFJTl9VUERBVEVfU0laRSIsICdNYWluIFVwZGF0ZSBzaXplOicpOw0KZGVmaW5lKCJMQl9URVhUX0RPTlRfUkVGUkVTSCIsICcoUGxlYXNlIGRvIG5vdCByZWZyZXNoIHRoZSBwYWdlKS4nKTsNCmRlZmluZSgiTEJfVEVYVF9ET1dOTE9BRElOR19NQUlOIiwgJ0Rvd25sb2FkaW5nIG1haW4gdXBkYXRlLi4uJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1BFUklPRF9FWFBJUkVEIiwgJ1lvdXIgdXBkYXRlIHBlcmlvZCBoYXMgZW5kZWQgb3IgeW91ciBsaWNlbnNlIGlzIGludmFsaWQsIHBsZWFzZSBjb250YWN0IHN1cHBvcnQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1BBVEhfRVJST1IiLCAnRm9sZGVyIGRvZXMgbm90IGhhdmUgd3JpdGUgcGVybWlzc2lvbiBvciB0aGUgdXBkYXRlIGZpbGUgcGF0aCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQsIHBsZWFzZSBjb250YWN0IHN1cHBvcnQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfTUFJTl9VUERBVEVfRE9ORSIsICdNYWluIHVwZGF0ZSBmaWxlcyBkb3dubG9hZGVkIGFuZCBleHRyYWN0ZWQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX0VYVFJBQ1RJT05fRVJST1IiLCAnVXBkYXRlIHppcCBleHRyYWN0aW9uIGZhaWxlZC4nKTsNCmRlZmluZSgiTEJfVEVYVF9QUkVQQVJJTkdfU1FMX0RPV05MT0FEIiwgJ1ByZXBhcmluZyB0byBkb3dubG9hZCBTUUwgdXBkYXRlLi4uJyk7DQpkZWZpbmUoIkxCX1RFWFRfU1FMX1VQREFURV9TSVpFIiwgJ1NRTCBVcGRhdGUgc2l6ZTonKTsNCmRlZmluZSgiTEJfVEVYVF9ET1dOTE9BRElOR19TUUwiLCAnRG93bmxvYWRpbmcgU1FMIHVwZGF0ZS4uLicpOw0KZGVmaW5lKCJMQl9URVhUX1NRTF9VUERBVEVfRE9ORSIsICdTUUwgdXBkYXRlIGZpbGVzIGRvd25sb2FkZWQuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1dJVEhfU1FMX0RPTkUiLCAnQXBwbGljYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLCBwbGVhc2UgaW1wb3J0IHRoZSBkb3dubG9hZGVkIFNRTCBmaWxlIGluIHlvdXIgZGF0YWJhc2UgbWFudWFsbHkuJyk7DQpkZWZpbmUoIkxCX1RFWFRfVVBEQVRFX1dJVEhPVVRfU1FMX0RPTkUiLCAnQXBwbGljYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLCB0aGVyZSB3ZXJlIG5vIFNRTCB1cGRhdGVzLicpOw0KDQpjbGFzcyBMaWNlbnNlQm94RXh0ZXJuYWxBUEl7DQoNCglwcml2YXRlICRwcm9kdWN0X2lkOw0KCXByaXZhdGUgJGFwaV91cmw7DQoJcHJpdmF0ZSAkYXBpX2tleTsNCglwcml2YXRlICRhcGlfbGFuZ3VhZ2U7DQoJcHJpdmF0ZSAkY3VycmVudF92ZXJzaW9uOw0KCXByaXZhdGUgJHZlcmlmeV90eXBlOw0KCXByaXZhdGUgJHZlcmlmaWNhdGlvbl9wZXJpb2Q7DQoJcHJpdmF0ZSAkY3VycmVudF9wYXRoOw0KCXByaXZhdGUgJHJvb3RfcGF0aDsNCglwcml2YXRlICRsaWNlbnNlX2ZpbGU7DQoNCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXsgDQoJCSR0aGlzLT5wcm9kdWN0X2lkID0gJ0JDQTAxNTY2JzsNCgkJJHRoaXMtPmFwaV91cmwgPSAnaHR0cHM6Ly9rZXkuYmlnbWl4LnZuLyc7DQoJCSR0aGlzLT5hcGlfa2V5ID0gJ0EyRDM4NzY1Rjc0Qzc0NDRENEE1JzsNCgkJJHRoaXMtPmFwaV9sYW5ndWFnZSA9ICdlbmdsaXNoJzsNCgkJJHRoaXMtPmN1cnJlbnRfdmVyc2lvbiA9ICd2MS4wLjAnOw0KCQkkdGhpcy0+dmVyaWZ5X3R5cGUgPSAnbm9uX2VudmF0byc7DQoJCSR0aGlzLT52ZXJpZmljYXRpb25fcGVyaW9kID0gMzsNCgkJJHRoaXMtPmN1cnJlbnRfcGF0aCA9IHJlYWxwYXRoKF9fRElSX18pOw0KCQkkdGhpcy0+cm9vdF9wYXRoID0gcmVhbHBhdGgoJHRoaXMtPmN1cnJlbnRfcGF0aC4nLy4uJyk7DQoJCSR0aGlzLT5saWNlbnNlX2ZpbGUgPSAkdGhpcy0+Y3VycmVudF9wYXRoLicvLmxpYyc7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2xvY2FsX2xpY2Vuc2VfZXhpc3QoKXsNCgkJcmV0dXJuIGlzX2ZpbGUoJHRoaXMtPmxpY2Vuc2VfZmlsZSk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldF9jdXJyZW50X3ZlcnNpb24oKXsNCgkJcmV0dXJuICR0aGlzLT5jdXJyZW50X3ZlcnNpb247DQoJfQ0KDQoJcHJpdmF0ZSBmdW5jdGlvbiBpbml0X3dwX2ZzKCl7DQoJCWdsb2JhbCAkd3BfZmlsZXN5c3RlbTsNCgkJaWYoZmFsc2UgPT09ICgkY3JlZGVudGlhbHMgPSByZXF1ZXN0X2ZpbGVzeXN0ZW1fY3JlZGVudGlhbHMoJycpKSl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJaWYoIVdQX0ZpbGVzeXN0ZW0oJGNyZWRlbnRpYWxzKSl7IA0KCQkJcmVxdWVzdF9maWxlc3lzdGVtX2NyZWRlbnRpYWxzKCcnKTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHdyaXRlX3dwX2ZzKCRmaWxlX3BhdGgsICRjb250ZW50KXsNCgkJZ2xvYmFsICR3cF9maWxlc3lzdGVtOw0KCQkkc2F2ZV9maWxlX3RvID0gJGZpbGVfcGF0aDsNCgkJaWYoJHRoaXMtPmluaXRfd3BfZnMoKSl7ICAgIA0KCQkJaWYoJHdwX2ZpbGVzeXN0ZW0tPnB1dF9jb250ZW50cygkc2F2ZV9maWxlX3RvLCAkY29udGVudCwgRlNfQ0hNT0RfRklMRSkpew0KCQkJCXJldHVybiB0cnVlOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCX0NCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIHJlYWRfd3BfZnMoJGZpbGVfcGF0aCl7DQoJCWdsb2JhbCAkd3BfZmlsZXN5c3RlbTsNCgkJaWYoJHRoaXMtPmluaXRfd3BfZnMoKSl7ICAgIA0KCQkJcmV0dXJuICR3cF9maWxlc3lzdGVtLT5nZXRfY29udGVudHMoJGZpbGVfcGF0aCk7DQoJCX0NCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIGNhbGxfYXBpKCRtZXRob2QsICR1cmwsICRkYXRhID0gbnVsbCl7DQoJCSR3cF9hcmdzID0gYXJyYXkoJ2JvZHknID0+ICRkYXRhKTsJDQoJCSR3cF9hcmdzWydtZXRob2QnXSA9ICRtZXRob2Q7DQoNCgkJJHRoaXNfdXJsID0gc2l0ZV91cmwoKTsNCgkJJHRoaXNfaXAgPSBnZXRlbnYoJ1NFUlZFUl9BRERSJyk/Og0KCQkJJHRoaXMtPmdldF9pcF9mcm9tX3RoaXJkX3BhcnR5KCk/Og0KCQkJZ2V0aG9zdGJ5bmFtZShnZXRob3N0bmFtZSgpKTsNCg0KCQkkd3BfYXJnc1snaGVhZGVycyddID0gYXJyYXkoDQoJCQknQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbicsIA0KCQkJJ0xCLUFQSS1LRVknID0+ICR0aGlzLT5hcGlfa2V5LCANCgkJCSdMQi1VUkwnID0+ICR0aGlzX3VybCwgDQoJCQknTEItSVAnID0+ICR0aGlzX2lwLCANCgkJCSdMQi1MQU5HJyA9PiAkdGhpcy0+YXBpX2xhbmd1YWdlDQoJCSk7DQoJCSR3cF9hcmdzWyd0aW1lb3V0J10gPSAzMDsNCg0KCQkkcmVzdWx0ID0gd3BfcmVtb3RlX3JlcXVlc3QoJHVybCwgJHdwX2FyZ3MpOw0KDQoJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpJiYhTEJfQVBJX0RFQlVHKXsNCgkJCSRycyA9IGFycmF5KA0KCQkJCSdzdGF0dXMnID0+IEZBTFNFLCANCgkJCQknbWVzc2FnZScgPT4gTEJfVEVYVF9DT05ORUNUSU9OX0ZBSUxFRA0KCQkJKTsNCgkJCXJldHVybiBqc29uX2VuY29kZSgkcnMpOw0KCQl9DQoJCSRodHRwX3N0YXR1cyA9ICRyZXN1bHRbJ3Jlc3BvbnNlJ11bJ2NvZGUnXTsNCgkJaWYoJGh0dHBfc3RhdHVzICE9IDIwMCl7DQoJCQlpZihMQl9BUElfREVCVUcpew0KCQkJCSR0ZW1wX2RlY29kZSA9IGpzb25fZGVjb2RlKCRyZXN1bHRbJ2JvZHknXSwgdHJ1ZSk7DQoJCQkJJHJzID0gYXJyYXkoDQoJCQkJCSdzdGF0dXMnID0+IEZBTFNFLCANCgkJCQkJJ21lc3NhZ2UnID0+ICgoIWVtcHR5KCR0ZW1wX2RlY29kZVsnZXJyb3InXSkpPw0KCQkJCQkJJHRlbXBfZGVjb2RlWydlcnJvciddOg0KCQkJCQkJJHRlbXBfZGVjb2RlWydtZXNzYWdlJ10pDQoJCQkJKTsNCgkJCQlyZXR1cm4ganNvbl9lbmNvZGUoJHJzKTsNCgkJCX1lbHNlew0KCQkJCSRycyA9IGFycmF5KA0KCQkJCQknc3RhdHVzJyA9PiBGQUxTRSwgDQoJCQkJCSdtZXNzYWdlJyA9PiBMQl9URVhUX0lOVkFMSURfUkVTUE9OU0UNCgkJCQkpOw0KCQkJCXJldHVybiBqc29uX2VuY29kZSgkcnMpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkcmVzdWx0Wydib2R5J107DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2Nvbm5lY3Rpb24oKXsNCgkJJGdldF9kYXRhID0gJHRoaXMtPmNhbGxfYXBpKA0KCQkJJ1BPU1QnLA0KCQkJJHRoaXMtPmFwaV91cmwuJ2FwaS9jaGVja19jb25uZWN0aW9uX2V4dCcNCgkJKTsNCgkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJGdldF9kYXRhLCB0cnVlKTsNCgkJcmV0dXJuICRyZXNwb25zZTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2xhdGVzdF92ZXJzaW9uKCl7DQoJCSRkYXRhX2FycmF5ID0gIGFycmF5KA0KCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZA0KCQkpOw0KCQkkZ2V0X2RhdGEgPSAkdGhpcy0+Y2FsbF9hcGkoDQoJCQknUE9TVCcsDQoJCQkkdGhpcy0+YXBpX3VybC4nYXBpL2xhdGVzdF92ZXJzaW9uJywgDQoJCQlqc29uX2VuY29kZSgkZGF0YV9hcnJheSkNCgkJKTsNCgkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJGdldF9kYXRhLCB0cnVlKTsNCgkJcmV0dXJuICRyZXNwb25zZTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gYWN0aXZhdGVfbGljZW5zZSgkbGljZW5zZSwgJGNsaWVudCwgJGNyZWF0ZV9saWMgPSB0cnVlKXsNCgkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkicHJvZHVjdF9pZCIgID0+ICR0aGlzLT5wcm9kdWN0X2lkLA0KCQkJImxpY2Vuc2VfY29kZSIgPT4gJGxpY2Vuc2UsDQoJCQkiY2xpZW50X25hbWUiID0+ICRjbGllbnQsDQoJCQkidmVyaWZ5X3R5cGUiID0+ICR0aGlzLT52ZXJpZnlfdHlwZQ0KCQkpOw0KCQkkZ2V0X2RhdGEgPSAkdGhpcy0+Y2FsbF9hcGkoDQoJCQknUE9TVCcsDQoJCQkkdGhpcy0+YXBpX3VybC4nYXBpL2FjdGl2YXRlX2xpY2Vuc2UnLCANCgkJCWpzb25fZW5jb2RlKCRkYXRhX2FycmF5KQ0KCQkpOw0KCQkkcmVzcG9uc2UgPSBqc29uX2RlY29kZSgkZ2V0X2RhdGEsIHRydWUpOw0KCQlpZighZW1wdHkoJGNyZWF0ZV9saWMpKXsNCgkJCWlmKCRyZXNwb25zZVsnc3RhdHVzJ10pew0KCQkJCSRsaWNmaWxlID0gdHJpbSgkcmVzcG9uc2VbJ2xpY19yZXNwb25zZSddKTsNCgkJCQkkdGhpcy0+d3JpdGVfd3BfZnMoJHRoaXMtPmxpY2Vuc2VfZmlsZSwgJGxpY2ZpbGUpOw0KCQkJfWVsc2V7DQoJCQkJaWYoaXNfd3JpdGVhYmxlKCR0aGlzLT5saWNlbnNlX2ZpbGUpKXsNCgkJCQkJdW5saW5rKCR0aGlzLT5saWNlbnNlX2ZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJlc3BvbnNlOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlfbGljZW5zZSgkdGltZV9iYXNlZF9jaGVjayA9IGZhbHNlLCAkbGljZW5zZSA9IGZhbHNlLCAkY2xpZW50ID0gZmFsc2Upew0KCQlpZighZW1wdHkoJGxpY2Vuc2UpJiYhZW1wdHkoJGNsaWVudCkpew0KCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkibGljZW5zZV9maWxlIiA9PiBudWxsLA0KCQkJCSJsaWNlbnNlX2NvZGUiID0+ICRsaWNlbnNlLA0KCQkJCSJjbGllbnRfbmFtZSIgPT4gJGNsaWVudA0KCQkJKTsNCgkJfWVsc2V7DQoJCQlpZihpc19maWxlKCR0aGlzLT5saWNlbnNlX2ZpbGUpKXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgNCgkJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkJImxpY2Vuc2VfZmlsZSIgPT4gJHRoaXMtPnJlYWRfd3BfZnMoJHRoaXMtPmxpY2Vuc2VfZmlsZSksDQoJCQkJCSJsaWNlbnNlX2NvZGUiID0+IG51bGwsDQoJCQkJCSJjbGllbnRfbmFtZSIgPT4gbnVsbA0KCQkJCSk7DQoJCQl9ZWxzZXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgpOw0KCQkJfQ0KCQl9IA0KCQkkcmVzID0gYXJyYXkoJ3N0YXR1cycgPT4gVFJVRSwgJ21lc3NhZ2UnID0+IExCX1RFWFRfVkVSSUZJRURfUkVTUE9OU0UpOw0KCQlpZigkdGltZV9iYXNlZF9jaGVjayAmJiAkdGhpcy0+dmVyaWZpY2F0aW9uX3BlcmlvZCA+IDApew0KCQkJb2Jfc3RhcnQoKTsNCgkJCWlmKHNlc3Npb25fc3RhdHVzKCkgPT0gUEhQX1NFU1NJT05fTk9ORSl7DQoJCQkJc2Vzc2lvbl9zdGFydCgpOw0KCQkJfQ0KCQkJJHR5cGUgPSAoaW50KSAkdGhpcy0+dmVyaWZpY2F0aW9uX3BlcmlvZDsNCgkJCSR0b2RheSA9IGRhdGUoJ2QtbS1ZJyk7DQoJCQlpZihlbXB0eSgkX1NFU1NJT05bImJhYjdiN2IwNDcwOTNkZSJdKSl7DQoJCQkJJF9TRVNTSU9OWyJiYWI3YjdiMDQ3MDkzZGUiXSA9ICcwMC0wMC0wMDAwJzsNCgkJCX0NCgkJCWlmKCR0eXBlID09IDEpew0KCQkJCSR0eXBlX3RleHQgPSAnMSBkYXknOw0KCQkJfWVsc2VpZigkdHlwZSA9PSAzKXsNCgkJCQkkdHlwZV90ZXh0ID0gJzMgZGF5cyc7DQoJCQl9ZWxzZWlmKCR0eXBlID09IDcpew0KCQkJCSR0eXBlX3RleHQgPSAnMSB3ZWVrJzsNCgkJCX1lbHNlaWYoJHR5cGUgPT0gMzApew0KCQkJCSR0eXBlX3RleHQgPSAnMSBtb250aCc7DQoJCQl9ZWxzZWlmKCR0eXBlID09IDkwKXsNCgkJCQkkdHlwZV90ZXh0ID0gJzMgbW9udGhzJzsNCgkJCX1lbHNlaWYoJHR5cGUgPT0gMzY1KSB7DQoJCQkJJHR5cGVfdGV4dCA9ICcxIHllYXInOw0KCQkJfWVsc2V7DQoJCQkJJHR5cGVfdGV4dCA9ICR0eXBlLicgZGF5cyc7DQoJCQl9DQoJCQlpZihzdHJ0b3RpbWUoJHRvZGF5KSA+PSBzdHJ0b3RpbWUoJF9TRVNTSU9OWyJiYWI3YjdiMDQ3MDkzZGUiXSkpew0KCQkJCSRnZXRfZGF0YSA9ICR0aGlzLT5jYWxsX2FwaSgNCgkJCQkJJ1BPU1QnLA0KCQkJCQkkdGhpcy0+YXBpX3VybC4nYXBpL3ZlcmlmeV9saWNlbnNlJywgDQoJCQkJCWpzb25fZW5jb2RlKCRkYXRhX2FycmF5KQ0KCQkJCSk7DQoJCQkJJHJlcyA9IGpzb25fZGVjb2RlKCRnZXRfZGF0YSwgdHJ1ZSk7DQoJCQkJaWYoJHJlc1snc3RhdHVzJ109PXRydWUpew0KCQkJCQkkdG9tbyA9IGRhdGUoJ2QtbS1ZJywgc3RydG90aW1lKCR0b2RheS4gJyArICcuJHR5cGVfdGV4dCkpOw0KCQkJCQkkX1NFU1NJT05bImJhYjdiN2IwNDcwOTNkZSJdID0gJHRvbW87DQoJCQkJfQ0KCQkJfQ0KCQkJc2Vzc2lvbl93cml0ZV9jbG9zZSgpOw0KCQkJb2JfZW5kX2NsZWFuKCk7DQoJCX1lbHNlew0KCQkJJGdldF9kYXRhID0gJHRoaXMtPmNhbGxfYXBpKA0KCQkJCSdQT1NUJywNCgkJCQkkdGhpcy0+YXBpX3VybC4nYXBpL3ZlcmlmeV9saWNlbnNlJywgDQoJCQkJanNvbl9lbmNvZGUoJGRhdGFfYXJyYXkpDQoJCQkpOw0KCQkJJHJlcyA9IGpzb25fZGVjb2RlKCRnZXRfZGF0YSwgdHJ1ZSk7DQoJCX0NCgkJcmV0dXJuICRyZXM7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGRlYWN0aXZhdGVfbGljZW5zZSgkbGljZW5zZSA9IGZhbHNlLCAkY2xpZW50ID0gZmFsc2Upew0KCQlpZighZW1wdHkoJGxpY2Vuc2UpJiYhZW1wdHkoJGNsaWVudCkpew0KCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkibGljZW5zZV9maWxlIiA9PiBudWxsLA0KCQkJCSJsaWNlbnNlX2NvZGUiID0+ICRsaWNlbnNlLA0KCQkJCSJjbGllbnRfbmFtZSIgPT4gJGNsaWVudA0KCQkJKTsNCgkJfWVsc2V7DQoJCQlpZihpc19maWxlKCR0aGlzLT5saWNlbnNlX2ZpbGUpKXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgNCgkJCQkJInByb2R1Y3RfaWQiICA9PiAkdGhpcy0+cHJvZHVjdF9pZCwNCgkJCQkJImxpY2Vuc2VfZmlsZSIgPT4gJHRoaXMtPnJlYWRfd3BfZnMoJHRoaXMtPmxpY2Vuc2VfZmlsZSksDQoJCQkJCSJsaWNlbnNlX2NvZGUiID0+IG51bGwsDQoJCQkJCSJjbGllbnRfbmFtZSIgPT4gbnVsbA0KCQkJCSk7DQoJCQl9ZWxzZXsNCgkJCQkkZGF0YV9hcnJheSA9ICBhcnJheSgpOw0KCQkJfQ0KCQl9DQoJCSRnZXRfZGF0YSA9ICR0aGlzLT5jYWxsX2FwaSgNCgkJCSdQT1NUJywNCgkJCSR0aGlzLT5hcGlfdXJsLidhcGkvZGVhY3RpdmF0ZV9saWNlbnNlJywgDQoJCQlqc29uX2VuY29kZSgkZGF0YV9hcnJheSkNCgkJKTsNCgkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJGdldF9kYXRhLCB0cnVlKTsNCgkJaWYoJHJlc3BvbnNlWydzdGF0dXMnXSl7DQoJCQlpZihpc193cml0ZWFibGUoJHRoaXMtPmxpY2Vuc2VfZmlsZSkpew0KCQkJCXVubGluaygkdGhpcy0+bGljZW5zZV9maWxlKTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJlc3BvbnNlOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBjaGVja191cGRhdGUoKXsNCgkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkicHJvZHVjdF9pZCIgID0+ICR0aGlzLT5wcm9kdWN0X2lkLA0KCQkJImN1cnJlbnRfdmVyc2lvbiIgPT4gJHRoaXMtPmN1cnJlbnRfdmVyc2lvbg0KCQkpOw0KCQkkZ2V0X2RhdGEgPSAkdGhpcy0+Y2FsbF9hcGkoDQoJCQknUE9TVCcsDQoJCQkkdGhpcy0+YXBpX3VybC4nYXBpL2NoZWNrX3VwZGF0ZScsIA0KCQkJanNvbl9lbmNvZGUoJGRhdGFfYXJyYXkpDQoJCSk7DQoJCSRyZXNwb25zZSA9IGpzb25fZGVjb2RlKCRnZXRfZGF0YSwgdHJ1ZSk7DQoJCXJldHVybiAkcmVzcG9uc2U7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGRvd25sb2FkX3VwZGF0ZSgkdXBkYXRlX2lkLCAkdHlwZSwgJHZlcnNpb24sICRsaWNlbnNlID0gZmFsc2UsICRjbGllbnQgPSBmYWxzZSl7IA0KCQlpZighZW1wdHkoJGxpY2Vuc2UpJiYhZW1wdHkoJGNsaWVudCkpew0KCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJImxpY2Vuc2VfZmlsZSIgPT4gbnVsbCwNCgkJCQkibGljZW5zZV9jb2RlIiA9PiAkbGljZW5zZSwNCgkJCQkiY2xpZW50X25hbWUiID0+ICRjbGllbnQNCgkJCSk7DQoJCX1lbHNlew0KCQkJaWYoaXNfZmlsZSgkdGhpcy0+bGljZW5zZV9maWxlKSl7DQoJCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoDQoJCQkJCSJsaWNlbnNlX2ZpbGUiID0+ICR0aGlzLT5yZWFkX3dwX2ZzKCR0aGlzLT5saWNlbnNlX2ZpbGUpLA0KCQkJCQkibGljZW5zZV9jb2RlIiA9PiBudWxsLA0KCQkJCQkiY2xpZW50X25hbWUiID0+IG51bGwNCgkJCQkpOw0KCQkJfWVsc2V7DQoJCQkJJGRhdGFfYXJyYXkgPSAgYXJyYXkoKTsNCgkJCX0NCgkJfQ0KCQlvYl9lbmRfZmx1c2goKTsgDQoJCW9iX2ltcGxpY2l0X2ZsdXNoKHRydWUpOyAgDQoJCSR2ZXJzaW9uID0gc3RyX3JlcGxhY2UoIi4iLCAiXyIsICR2ZXJzaW9uKTsNCgkJb2Jfc3RhcnQoKTsNCgkJJHNvdXJjZV9zaXplID0gJHRoaXMtPmFwaV91cmwuImFwaS9nZXRfdXBkYXRlX3NpemUvbWFpbi8iLiR1cGRhdGVfaWQ7IA0KCQllY2hvIExCX1RFWFRfUFJFUEFSSU5HX01BSU5fRE9XTkxPQUQuIjxicj4iOw0KCQlvYl9mbHVzaCgpOw0KCQllY2hvIExCX1RFWFRfTUFJTl9VUERBVEVfU0laRS4iICIuJHRoaXMtPmdldF9yZW1vdGVfZmlsZXNpemUoJHNvdXJjZV9zaXplKS4iICIuTEJfVEVYVF9ET05UX1JFRlJFU0guIjxicj4iOw0KCQlvYl9mbHVzaCgpOw0KCQkkdGVtcF9wcm9ncmVzcyA9ICcnOw0KCQkkc291cmNlID0gJHRoaXMtPmFwaV91cmwuImFwaS9kb3dubG9hZF91cGRhdGUvbWFpbi8iLiR1cGRhdGVfaWQ7IA0KCQkkd3BfYXJncyA9IGFycmF5KCdib2R5JyA9PiBqc29uX2VuY29kZSgkZGF0YV9hcnJheSkpOwkNCgkJJHdwX2FyZ3NbJ21ldGhvZCddID0gJ1BPU1QnOw0KCQkkdGhpc191cmwgPSBzaXRlX3VybCgpOw0KCQkkdGhpc19pcCA9IGdldGVudignU0VSVkVSX0FERFInKT86DQoJCQkkdGhpcy0+Z2V0X2lwX2Zyb21fdGhpcmRfcGFydHkoKT86DQoJCQlnZXRob3N0YnluYW1lKGdldGhvc3RuYW1lKCkpOw0KCQkkd3BfYXJnc1snaGVhZGVycyddID0gYXJyYXkoDQoJCQknQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbicsIA0KCQkJJ0xCLUFQSS1LRVknID0+ICR0aGlzLT5hcGlfa2V5LCANCgkJCSdMQi1VUkwnID0+ICR0aGlzX3VybCwgDQoJCQknTEItSVAnID0+ICR0aGlzX2lwLCANCgkJCSdMQi1MQU5HJyA9PiAkdGhpcy0+YXBpX2xhbmd1YWdlDQoJCSk7DQoJCSR3cF9hcmdzWyd0aW1lb3V0J10gPSAzMDsNCgkJZWNobyBMQl9URVhUX0RPV05MT0FESU5HX01BSU4uIjxicj4iOw0KCQlvYl9mbHVzaCgpOw0KCQkkcmVzdWx0ID0gd3BfcmVtb3RlX3JlcXVlc3QoJHNvdXJjZSwgJHdwX2FyZ3MpOw0KCQlpZihpc193cF9lcnJvcigkcmVzdWx0KSl7DQoJCQlleGl0KCI8YnI+Ii5MQl9URVhUX0NPTk5FQ1RJT05fRkFJTEVEKTsNCgkJfQ0KCQkkZGF0YSA9ICRyZXN1bHRbJ2JvZHknXTsNCgkJJGh0dHBfc3RhdHVzID0gJHJlc3VsdFsncmVzcG9uc2UnXVsnY29kZSddOw0KCQlpZigkaHR0cF9zdGF0dXMgIT0gMjAwKXsNCgkJCWlmKCRodHRwX3N0YXR1cyA9PSA0MDEpew0KCQkJCWV4aXQoIjxicj4iLkxCX1RFWFRfVVBEQVRFX1BFUklPRF9FWFBJUkVEKTsNCgkJCX1lbHNlew0KCQkJCWV4aXQoIjxicj4iLkxCX1RFWFRfSU5WQUxJRF9SRVNQT05TRSk7DQoJCQl9DQoJCX0NCgkJJGRlc3RpbmF0aW9uID0gJHRoaXMtPnJvb3RfcGF0aC4iL3VwZGF0ZV9tYWluXyIuJHZlcnNpb24uIi56aXAiOyANCgkJJGZpbGUgPSAkdGhpcy0+d3JpdGVfd3BfZnMoJGRlc3RpbmF0aW9uLCAkZGF0YSk7DQoJCWlmKCEkZmlsZSl7DQoJCQlleGl0KCI8YnI+Ii5MQl9URVhUX1VQREFURV9QQVRIX0VSUk9SKTsNCgkJfQ0KCQlvYl9mbHVzaCgpOw0KCQkkemlwID0gbmV3IFppcEFyY2hpdmU7DQoJCSRyZXMgPSAkemlwLT5vcGVuKCRkZXN0aW5hdGlvbik7DQoJCWlmKCRyZXMgPT09IFRSVUUpew0KCQkJJHppcC0+ZXh0cmFjdFRvKCR0aGlzLT5yb290X3BhdGguIi8iKTsgDQoJCQkkemlwLT5jbG9zZSgpOw0KCQkJdW5saW5rKCRkZXN0aW5hdGlvbik7DQoJCQllY2hvIExCX1RFWFRfTUFJTl9VUERBVEVfRE9ORS4iPGJyPjxicj4iOw0KCQkJb2JfZmx1c2goKTsNCgkJfWVsc2V7DQoJCQllY2hvIExCX1RFWFRfVVBEQVRFX0VYVFJBQ1RJT05fRVJST1IuIjxicj48YnI+IjsNCgkJCW9iX2ZsdXNoKCk7DQoJCX0NCgkJaWYoJHR5cGUgPT0gdHJ1ZSl7DQoJCQkkc291cmNlX3NpemUgPSAkdGhpcy0+YXBpX3VybC4iYXBpL2dldF91cGRhdGVfc2l6ZS9zcWwvIi4kdXBkYXRlX2lkOyANCgkJCWVjaG8gTEJfVEVYVF9QUkVQQVJJTkdfU1FMX0RPV05MT0FELiI8YnI+IjsNCgkJCW9iX2ZsdXNoKCk7DQoJCQllY2hvIExCX1RFWFRfU1FMX1VQREFURV9TSVpFLiIgIi4kdGhpcy0+Z2V0X3JlbW90ZV9maWxlc2l6ZSgkc291cmNlX3NpemUpLiIgIi5MQl9URVhUX0RPTlRfUkVGUkVTSC4iPGJyPiI7DQoJCQlvYl9mbHVzaCgpOw0KCQkJJHRlbXBfcHJvZ3Jlc3MgPSAnJzsNCgkJCSRzb3VyY2UgPSAkdGhpcy0+YXBpX3VybC4iYXBpL2Rvd25sb2FkX3VwZGF0ZS9zcWwvIi4kdXBkYXRlX2lkOw0KCQkJJHdwX2FyZ3MgPSBhcnJheSgnYm9keScgPT4ganNvbl9lbmNvZGUoJGRhdGFfYXJyYXkpKTsJDQoJCQkkd3BfYXJnc1snbWV0aG9kJ10gPSAnUE9TVCc7DQoJCQkkdGhpc191cmwgPSBzaXRlX3VybCgpOw0KCQkJJHRoaXNfaXAgPSBnZXRlbnYoJ1NFUlZFUl9BRERSJyk/Og0KCQkJCSR0aGlzLT5nZXRfaXBfZnJvbV90aGlyZF9wYXJ0eSgpPzoNCgkJCQlnZXRob3N0YnluYW1lKGdldGhvc3RuYW1lKCkpOw0KCQkJJHdwX2FyZ3NbJ2hlYWRlcnMnXSA9IGFycmF5KA0KCQkJCSdDb250ZW50LVR5cGUnID0+ICdhcHBsaWNhdGlvbi9qc29uJywgDQoJCQkJJ0xCLUFQSS1LRVknID0+ICR0aGlzLT5hcGlfa2V5LCANCgkJCQknTEItVVJMJyA9PiAkdGhpc191cmwsIA0KCQkJCSdMQi1JUCcgPT4gJHRoaXNfaXAsIA0KCQkJCSdMQi1MQU5HJyA9PiAkdGhpcy0+YXBpX2xhbmd1YWdlDQoJCQkpOw0KCQkJJHdwX2FyZ3NbJ3RpbWVvdXQnXSA9IDMwOw0KCQkJZWNobyBMQl9URVhUX0RPV05MT0FESU5HX1NRTC4iPGJyPiI7DQoJCQlvYl9mbHVzaCgpOw0KCQkJJHJlc3VsdCA9IHdwX3JlbW90ZV9yZXF1ZXN0KCRzb3VyY2UsICR3cF9hcmdzKTsNCgkJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpKXsNCgkJCQlleGl0KExCX1RFWFRfQ09OTkVDVElPTl9GQUlMRUQpOw0KCQkJfQ0KCQkJJGRhdGEgPSAkcmVzdWx0Wydib2R5J107DQoJCQkkaHR0cF9zdGF0dXMgPSAkcmVzdWx0WydyZXNwb25zZSddWydjb2RlJ107DQoJCQlpZigkaHR0cF9zdGF0dXMhPTIwMCl7DQoJCQkJZXhpdChMQl9URVhUX0lOVkFMSURfUkVTUE9OU0UpOw0KCQkJfQ0KCQkJJGRlc3RpbmF0aW9uID0gJHRoaXMtPnJvb3RfcGF0aC4iL3VwZGF0ZV9zcWxfIi4kdmVyc2lvbi4iLnNxbCI7IA0KCQkJJGZpbGUgPSAkdGhpcy0+d3JpdGVfd3BfZnMoJGRlc3RpbmF0aW9uLCAkZGF0YSk7DQoJCQlpZighJGZpbGUpew0KCQkJCWV4aXQoTEJfVEVYVF9VUERBVEVfUEFUSF9FUlJPUik7DQoJCQl9DQoJCQllY2hvIExCX1RFWFRfU1FMX1VQREFURV9ET05FLiI8YnI+PGJyPiI7DQoJCQllY2hvIExCX1RFWFRfVVBEQVRFX1dJVEhfU1FMX0RPTkU7DQoJCQlvYl9mbHVzaCgpOw0KCQl9ZWxzZXsNCgkJCWVjaG8gTEJfVEVYVF9VUERBVEVfV0lUSE9VVF9TUUxfRE9ORTsNCgkJCW9iX2ZsdXNoKCk7DQoJCX0NCgkJb2JfZW5kX2ZsdXNoKCk7IA0KCX0NCg0KCXByaXZhdGUgZnVuY3Rpb24gZ2V0X2lwX2Zyb21fdGhpcmRfcGFydHkoKXsNCgkJJHdwX2FyZ3MgPSBhcnJheSgnbWV0aG9kJyA9PiAnR0VUJyk7CQ0KCQkkd3BfYXJnc1sndGltZW91dCddID0gMzA7DQoJCSRyZXN1bHQgPSB3cF9yZW1vdGVfcmVxdWVzdCgnaHR0cDovL2lwZWNoby5uZXQvcGxhaW4nLCAkd3BfYXJncyk7DQoJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpKXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gJHJlc3VsdFsnYm9keSddOw0KCX0NCg0KCXByaXZhdGUgZnVuY3Rpb24gZ2V0X3JlbW90ZV9maWxlc2l6ZSgkdXJsKXsNCgkJJHdwX2FyZ3MgPSBhcnJheSgnbWV0aG9kJyA9PiAnSEVBRCcpOwkNCgkJJHRoaXNfdXJsID0gc2l0ZV91cmwoKTsNCgkJJHRoaXNfaXAgPSBnZXRlbnYoJ1NFUlZFUl9BRERSJyk/Og0KCQkJJHRoaXMtPmdldF9pcF9mcm9tX3RoaXJkX3BhcnR5KCk/Og0KCQkJZ2V0aG9zdGJ5bmFtZShnZXRob3N0bmFtZSgpKTsNCgkJJHdwX2FyZ3NbJ2hlYWRlcnMnXSA9IGFycmF5KA0KCQkJJ0NvbnRlbnQtVHlwZScgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLCANCgkJCSdMQi1BUEktS0VZJyA9PiAkdGhpcy0+YXBpX2tleSwgDQoJCQknTEItVVJMJyA9PiAkdGhpc191cmwsIA0KCQkJJ0xCLUlQJyA9PiAkdGhpc19pcCwgDQoJCQknTEItTEFORycgPT4gJHRoaXMtPmFwaV9sYW5ndWFnZQ0KCQkpOw0KCQkkd3BfYXJnc1sndGltZW91dCddID0gMzA7DQoJCSRyZXN1bHQgPSB3cF9yZW1vdGVfcmVxdWVzdCgkdXJsLCAkd3BfYXJncyk7DQoJCWlmKGlzX3dwX2Vycm9yKCRyZXN1bHQpKXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkkZmlsZXNpemUgPSAkcmVzdWx0WydoZWFkZXJzJ11bJ2NvbnRlbnQtbGVuZ3RoJ107DQoJCWlmICgkZmlsZXNpemUpew0KCQkJc3dpdGNoICgkZmlsZXNpemUpew0KCQkJCWNhc2UgJGZpbGVzaXplIDwgMTAyNDoNCgkJCQkJJHNpemUgPSAkZmlsZXNpemUgLicgQic7IGJyZWFrOw0KCQkJCWNhc2UgJGZpbGVzaXplIDwgMTA0ODU3NjoNCgkJCQkJJHNpemUgPSByb3VuZCgkZmlsZXNpemUgLyAxMDI0LCAyKSAuJyBLQic7IGJyZWFrOw0KCQkJCWNhc2UgJGZpbGVzaXplIDwgMTA3Mzc0MTgyNDoNCgkJCQkJJHNpemUgPSByb3VuZCgkZmlsZXNpemUgLyAxMDQ4NTc2LCAyKSAuICcgTUInOyBicmVhazsNCgkJCQljYXNlICRmaWxlc2l6ZSA8IDEwOTk1MTE2Mjc3NzY6DQoJCQkJCSRzaXplID0gcm91bmQoJGZpbGVzaXplIC8gMTA3Mzc0MTgyNCwgMikgLiAnIEdCJzsgYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gJHNpemU7IA0KCQl9DQoJfQ0KfQ0K")); 

Function Calls

None

Variables

None

Stats

MD5 b5a6f5577526ba62bd2b9b1d46b6f36d
Eval Count 0
Decode Time 146 ms