9udmVydF9lbmNvZGluZygkZG9jLCAiRVVDLUpQIiwgIlVURi04Iik7CgoJCWlmICgkYXNwID09ICJyYWt1dGVuIikgewoJCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgInBhZ2VDb3VudCIpKTsKCQkJJHRvdGFsX3Jlc3VsdHMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgImNvdW50IikpOwoJCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJJdGVtIik7CgkJfSBlbHNlaWYgKCRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJCQkkdG90YWxfcmVzdWx0cyA9IGludHZhbChnZXRfbm9kZSgkZG9jLCAicmVjb3JkQ291bnQiKSk7CgkJCSR0b3RhbF9wYWdlcyA9IGNlaWwoJHRvdGFsX3Jlc3VsdHMgLyAkd3N2Y19wYWdlX2l0ZW1fY291bnQpOwoJCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJob3RlbFNpbXBsZSIpOwoJCX0gZWxzZWlmICgkYXNwID09ICJhbWF6b24iKSB7CgkJCSR0b3RhbF9wYWdlcyA9IGludHZhbChnZXRfbm9kZSgkZG9jLCAiVG90YWxQYWdlcyIpKTsKCQkJJHRvdGFsX3BhZ2VzID0gbWluKCR0b3RhbF9wYWdlcywgMzIwMCk7CgkJCSR0b3RhbF9yZXN1bHRzID0gaW50dmFsKGdldF9ub2RlKCRkb2MsICJUb3RhbFJlc3VsdHMiKSk7CgkJCSRJdGVtc18gPSBnZXRfbm9kZXMoJGRvYywgIkl0ZW0iKTsKCQl9IGVsc2VpZiAoJGFzcCA9PSAiZGVubm8iKSB7CgkJCSR0b3RhbF9wYWdlcyA9IGludHZhbChnZXRfbm9kZSgkZG9jLCAiVG90YWxQYWdlcyIpKTsKCQkJJHRvdGFsX3Jlc3VsdHMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsSXRlbXMiKSk7CgkJCSRJdGVtc18gPSBnZXRfbm9kZXMoJGRvYywgIkRldGFpbHMiKTsKCQl9CgoJCWlmICgkdG90YWxfcmVzdWx0cyA9PSAwKSB7CgkJCSR1cmwgPSBnZXRfc2V0dGluZygiTk9fUkVTVUxUX1VSTCIpOwoJCQlpZiAoc3RybGVuKCR1cmwpICE9IDApIHsKCQkJCWhlYWRlcigiTG9jYXRpb246ICR1cmwiKTsKCQkJCWV4aXQ7CgkJCX0KCQl9CgkJCgkJaWYgKCRmaXJzdF90aW1lID09IFRSVUUpIHsKCQkJZm9yICgkaSA9ICR3c3ZjX3BhZ2VfaW5kZXg7ICRpIDwgY291bnQoJEl0ZW1zXyk7ICRpKyspIHsKCQkJCSRJdGVtc1tdID0gJEl0ZW1zX1skaV07CgkJCQkkcGFnZV9pbmRleF8gPSAwOwoJCQkJJHBhZ2VzW10gPSAkd3N2Y19wYWdlOwoJCQkJJHBhZ2VfaW5kZXhlc1tdID0gJGk7CgkJCX0KCQkJJGZpcnN0X3RpbWUgPSBGQUxTRTsKCQl9IGVsc2UgewoJCQlmb3IgKCRpdGVtX2luZGV4ID0gMDsgJGl0ZW1faW5kZXggPCBjb3VudCgkSXRlbXNfKTsgJGl0ZW1faW5kZXgrKykgewoJCQkJJEl0ZW1zW10gPSAkSXRlbXNfWyRpdGVtX2luZGV4XTsKCQkJCSRwYWdlc1tdID0gJHdzdmNfcGFnZTsKCQkJCSRwYWdlX2luZGV4ZXNbXSA9ICRpdGVtX2luZGV4OwoJCQl9CgkJfQoJCQoJCWlmIChjb3VudCgkSXRlbXMpID4gJHBhZ2VfaXRlbV9jb3VudCkgewoJCQkkYXJyYXlfY291bnQgPSBjb3VudCgkSXRlbXMpOwoJCQlmb3IgKCRpID0gJHBhZ2VfaXRlbV9jb3VudDsgJGkgPCAkYXJyYXlfY291bnQ7ICRpKyspIHsKCQkJCXVuc2V0KCRJdGVtc1skaV0pOwoJCQl9CgkJCWJyZWFrOwoJCX0KCQkKCQlpZiAoJHRvdGFsX3BhZ2VzIDw9ICR3c3ZjX3BhZ2UpIHsKCQkJYnJlYWs7CgkJfQoJCQoJCXVuc2V0KCRJdGVtc18pOwoJCQoJCSR3c3ZjX3BhZ2UrKzsKCQkKCQlzbGVlcCgxKTsKCX0KfQoKaWYgKGdldF9zZXR0aW5nKCJMSVNUX0lURU1fU0hVRkZMRSIpID09ICIxIikgewoJJGl0ZW1fY291bnQgPSBjb3VudCgkSXRlbXMpOwoJZm9yICgkaSA9IDA7ICRpIDwgJGl0ZW1fY291bnQ7ICRpKyspIHsKCQkkciA9IHJhbmQoMCwgJGl0ZW1fY291bnQgLSAxKTsKCQlpZiAoJGkgIT0gJHIpIHsKCQkJJHZhbCA9ICRJdGVtc1skaV07CgkJCSRJdGVtc1skaV0gPSAkSXRlbXNbJHJdOwoJCQkkSXRlbXNbJHJdID0gJHZhbDsKCQkJJHZhbCA9ICRwYWdlc1skaV07CgkJCSRwYWdlc1skaV0gPSAkcGFnZXNbJHJdOwoJCQkkcGFnZXNbJHJdID0gJHZhbDsKCQkJJHZhbCA9ICRwYWdlX2luZGV4ZXNbJGldOwoJCQkkcGFnZV9pbmRleGVzWyRpXSA9ICRwYWdlX2luZGV4ZXNbJHJdOwoJCQkkcGFnZV9pbmRleGVzWyRyXSA9ICR2YWw7CgkJfQoJfQp9CgppZiAoJGFzcCA9PSAicmFrdXRlbiIgfHwgJGFzcCA9PSAicmFrdXRlbl90cmF2ZWwiKSB7CgkkY2FuX2dldF9jb3VudCA9IG1pbigkdG90YWxfcmVzdWx0cywgJHdzdmNfcGFnZV9pdGVtX2NvdW50ICogJHRvdGFsX3BhZ2VzKTsKCSR0b3RhbF9wYWdlcyA9IGNlaWwoJGNhbl9nZXRfY291bnQgLyAkcGFnZV9pdGVtX2NvdW50KTsKfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCSRjYW5fZ2V0X2NvdW50ID0gbWluKCR0b3RhbF9yZXN1bHRzLCAkd3N2Y19wYWdlX2l0ZW1fY291bnQgKiA0MDApOwoJJHRvdGFsX3BhZ2VzID0gY2VpbCgkY2FuX2dldF9jb3VudCAvICRwYWdlX2l0ZW1fY291bnQpOwp9IGVsc2UgewoJJHRvdGFsX3BhZ2VzID0gY2VpbCgkdG90YWxfcmVzdWx0cyAvICRwYWdlX2l0ZW1fY291bnQpOwp9CgppZiAoJHN1ZmZpeCA9PSAieG1sIikgewoJJGh0bSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJyc3MueG1sIik7CgkkaHRtID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtLCAiRVVDLUpQIiwgIlVURi04Iik7CgkkaHRtID0gc3RyX3JlcGxhY2UoIjwhLS1JVEVNXy0tPiIsICI8IS0tTElTVF9ST1dfLS0+PCEtLUxJU1RfQ09MXy0tPiIsICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCI8IS0tX0lURU0tLT4iLCAiPCEtLV9MSVNUX0NPTC0tPjwhLS1fTElTVF9ST1ctLT4iLCAkaHRtKTsKCSRjb2xzID0gMTsKCSRvdXRfZW5jb2RpbmcgPSAiVVRGLTgiOwp9IGVsc2UgewoJaWYgKCRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJCSRodG0gPSBmaWxlX2dldF9jb250ZW50cygibGlzdF9yYWt1dGVuX3RyYXZlbC5odG1sIik7Cgl9IGVsc2UgewoJCSRodG0gPSBmaWxlX2dldF9jb250ZW50cygibGlzdC5odG1sIik7Cgl9CgkkaHRtID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtLCAiRVVDLUpQIiwgIlNKSVMiKTsKCSRvdXRfZW5jb2RpbmcgPSAiU0pJUyI7Cn0KCiRodG0gPSBnZXRfc3RyX3NwYW4oIkxJU1RfUk9XIiwgJGh0bSwgJGh0bV9saXN0X3Jvdyk7CiRodG1fbGlzdF9yb3cgPSBnZXRfc3RyX3NwYW4oIkxJU1RfQ09MIiwgJGh0bV9saXN0X3JvdywgJGh0bV9pdGVtX2RldGFpbHMpOwoKJGh0bSA9IGdldF9zdHJfc3BhbigiUFJFVl9QQUdFX0xJTksiLCAkaHRtLCAkaHRtX3ByZXZfcGFnZV9saW5rKTsKCiRodG0gPSBnZXRfc3RyX3NwYW4oIk5FWFRfUEFHRV9MSU5LIiwgJGh0bSwgJGh0bV9uZXh0X3BhZ2VfbGluayk7CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJQUkVWX1BBR0VfTElOSzIiLCAkaHRtLCAkaHRtX3ByZXZfcGFnZV9saW5rMik7CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJORVhUX1BBR0VfTElOSzIiLCAkaHRtLCAkaHRtX25leHRfcGFnZV9saW5rMik7CgokaHRtID0gc3RyX3JlcGxhY2UoIntwYWdlX3RpdGxlfSIsICRxLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie2N1cnJlbnRfcGFnZX0iLCAkcGFnZSwgJGh0bSk7CiRodG0gPSBzdHJfcmVwbGFjZSgie2N1cnJlbnRfcGFnZV9mfSIsIG51bWJlcl9mb3JtYXQoJHBhZ2UpLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie3RvdGFsX3BhZ2VzfSIsICR0b3RhbF9wYWdlcywgJGh0bSk7CiRodG0gPSBzdHJfcmVwbGFjZSgie3RvdGFsX3BhZ2VzX2Z9IiwgbnVtYmVyX2Zvcm1hdCgkdG90YWxfcGFnZXMpLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie3RvdGFsX3Jlc3VsdHN9IiwgJHRvdGFsX3Jlc3VsdHMsICRodG0pOwokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9yZXN1bHRzX2Z9IiwgbnVtYmVyX2Zvcm1hdCgkdG90YWxfcmVzdWx0cyksICRodG0pOwoKJGh0bSA9IHN0cl9yZXBsYWNlKCJ7cHViX2RhdGV9IiwgZ2V0X2RhdGVfc3RyaW5nKCksICRodG0pOwoKJGh0bSA9IHJlcGxhY2VfbGluaygkaHRtKTsKCmlmICgkcGFnZSA+IDEpIHsKCWlmICgkcGFnZSA9PSAyKSB7CgkJJGh0bV9wcmV2X3BhZ2VfbGluayA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICIuaHRtbCIsICRodG1fcHJldl9wYWdlX2xpbmspOwoJCSRodG1fcHJldl9wYWdlX2xpbmsyID0gc3RyX3JlcGxhY2UoIntwcmV2X3BhZ2V9IiwgJGVxIC4gIi5odG1sIiwgJGh0bV9wcmV2X3BhZ2VfbGluazIpOwoJfSBlbHNlIHsKCQkkaHRtX3ByZXZfcGFnZV9saW5rID0gc3RyX3JlcGxhY2UoIntwcmV2X3BhZ2V9IiwgJGVxIC4gIl8iIC4gc3RydmFsKCRwYWdlIC0gMSkgLiAiLmh0bWwiLCAkaHRtX3ByZXZfcGFnZV9saW5rKTsKCQkkaHRtX3ByZXZfcGFnZV9saW5rMiA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICJfIiAuIHN0cnZhbCgkcGFnZSAtIDEpIC4gIi5odG1sIiwgJGh0bV9wcmV2X3BhZ2VfbGluazIpOwoJfQoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTkt9IiwgJGh0bV9wcmV2X3BhZ2VfbGluaywgJGh0bSk7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntQUkVWX1BBR0VfTElOSzJ9IiwgJGh0bV9wcmV2X3BhZ2VfbGluazIsICRodG0pOwp9IGVsc2UgewoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTkt9IiwgIiIsICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTksyfSIsICIiLCAkaHRtKTsKfQoKaWYgKGludHZhbCgkcGFnZSkgPCAkdG90YWxfcGFnZXMpIHsKCSRodG1fbmV4dF9wYWdlX2xpbmsgPSBzdHJfcmVwbGFjZSgie25leHRfcGFnZX0iLCAkZXEgLiAiXyIgLiBzdHJ2YWwoJHBhZ2UgKyAxKSAuICIuaHRtbCIsICRodG1fbmV4dF9wYWdlX2xpbmspOwoJJGh0bV9uZXh0X3BhZ2VfbGluazIgPSBzdHJfcmVwbGFjZSgie25leHRfcGFnZX0iLCAkZXEgLiAiXyIgLiBzdHJ2YWwoJHBhZ2UgKyAxKSAuICIuaHRtbCIsICRodG1fbmV4dF9wYWdlX2xpbmsyKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LfSIsICRodG1fbmV4dF9wYWdlX2xpbmssICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7TkVYVF9QQUdFX0xJTksyfSIsICRodG1fbmV4dF9wYWdlX2xpbmsyLCAkaHRtKTsKfSBlbHNlIHsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LfSIsICIiLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LMn0iLCAiIiwgJGh0bSk7Cn0KCiRuYW1lcyA9IGFycmF5KAoJInRpdGxlIiwKCSJkZXRhaWxfcGFnZV91cmwiLAoJImltZ191cmwiLAoJImltZ19zX3VybCIsCgkiaW1nX21fdXJsIiwKCSJpbWdfbF91cmwiLAoJInByaWNlIiwKCSJkZXRhaWxzIiwKCSJoYW5iYWltb3RvIiwKCSJyYXRpbmciLAoJInB1Yl9kYXRlIiwKCSJhZmZpbGlhdGVfdXJsIgopOwoKJGh0bV9pdGVtcyA9ICIiOwppZiAoY291bnQoJEl0ZW1zKSAhPSAwKSB7Cglmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkSXRlbXMpOyAkaSs9JGNvbHMpIHsKCQkkaHRtX2l0ZW1fZGV0YWlsc19hbGwgPSAiIjsKCQlmb3IgKCRqID0gMDsgJGogPCAkY29sczsgJGorKykgewoJCQlpZiAoY291bnQoJEl0ZW1zKSA+ICRpICsgJGopIHsKCQkJCSRpdGVtID0gJEl0ZW1zWyRpICsgJGpdOwoJCQkJaWYgKCRhc3AgPT0gInJha3V0ZW4iKSB7CgkJCQkJJHRpdGxlID0gZ2V0X25vZGUoJGl0ZW0sICJpdGVtTmFtZSIpOwoJCQkJCSRpdGVtQ29kZSA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNvZGUiKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRpdGVtQ29kZSAuICIuaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkaW1nX3VybCA9IGdldF9ub2RlKCRpdGVtLCAibWVkaXVtSW1hZ2VVcmwiKTsKCQkJCQkkaW1nX3NfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJzbWFsbEltYWdlVXJsIik7CgkJCQkJJGltZ19tX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRpbWdfbF91cmwgPSAkaW1nX3VybDsKCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNhcHRpb24iKTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkZGV0YWlscyk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoZ2V0X25vZGUoJGl0ZW0sICJpdGVtUHJpY2UiKSkgLiAisd8iOwoJCQkJCSRoYW5iYWltb3RvID0gZ2V0X25vZGUoJGl0ZW0sICJzaG9wTmFtZSIpOwoJCQkJCSRyYXRpbmcgPSBnZXRfbm9kZSgkaXRlbSwgInJldmlld0F2ZXJhZ2UiKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiYWZmaWxpYXRlVXJsIik7CgkJCQl9IGVsc2VpZiAoJGFzcCA9PSAicmFrdXRlbl90cmF2ZWwiKSB7CgkJCQkJJHRhZ3MgPSBhcnJheSgiaG90ZWxOYW1lIiwgImhvdGVsTm8iLCAiYXJlYVN1bSIsICJob3RlbFNwZWNpYWxTdW0iKTsKCQkJCQlmb3JlYWNoICgkdGFncyBhcyAkdGFnKSB7CgkJCQkJCWV2YWwoIlwkJHt0YWd9ID0gZ2V0X25vZGUoXCRpdGVtLCAnJHt0YWd9Jyk7Iik7CgkJCQkJCWV2YWwoIlwkJHt0YWd9ID0gaHRtbHVuZXNjYXBlKFwkJHt0YWd9KTsiKTsKCQkJCQkJJG5hbWVzW10gPSAkdGFnOwoJCQkJCX0KCQkJCQkkdGl0bGUgPSAkaG90ZWxOYW1lOwoJCQkJCSRpdGVtQ29kZSA9ICRob3RlbE5vOwoJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiLi4vZGV0YWlscy8iIC4gJGl0ZW1Db2RlIC4gIi5odG1sIjsKCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uLyIgLiAkZGV0YWlsX3BhZ2VfdXJsOwoJCQkJCX0KCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gZ2V0X2Z1bGxfdXJsKCRkZXRhaWxfcGFnZV91cmwpOwoJCQkJCSRpbWdfdXJsID0gIiI7CgkJCQkJJGltZ19zX3VybCA9ICIiOwoJCQkJCSRpbWdfbV91cmwgPSAiIjsKCQkJCQkkaW1nX2xfdXJsID0gIiI7CgkJCQkJJGRldGFpbHMgPSBodG1sX3RvX3RleHQoJGhvdGVsU3BlY2lhbFN1bSk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9ICIiOwoJCQkJCSRoYW5iYWltb3RvID0gIiI7CgkJCQkJJHJhdGluZyA9ICIiOwoJCQkJCSRhZmZpbGlhdGVfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJob3RlbEFmZmlsaWF0ZVVybCIpOwoJCQkJfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCQkJCQkkdGl0bGUgPSBnZXRfbm9kZSgkaXRlbSwgIlRpdGxlIik7CgkJCQkJJEFTSU4gPSBnZXRfbm9kZSgkaXRlbSwgIkFTSU4iKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRBU0lOIC4gIi5odG1sIjsKCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uLyIgLiAkZGV0YWlsX3BhZ2VfdXJsOwoJCQkJCX0KCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gZ2V0X2Z1bGxfdXJsKCRkZXRhaWxfcGFnZV91cmwpOwoJCQkJCSRpbWdfdXJsID0gZ2V0X25vZGUoZ2V0X25vZGUoJGl0ZW0sICJNZWRpdW1JbWFnZSIpLCAiVVJMIik7CgkJCQkJaWYgKHN0cmxlbigkaW1nX3VybCkgPT0gMCkgewoJCQkJCQkkaW1nX3VybCA9ICIuLi8uLi9pbWcvbm9pbWFnZV9tLmpwZyI7CgkJCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJCQkkaW1nX3VybCA9ICIuLi8iIC4gJGltZ191cmw7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGltZ19zX3VybCA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiU21hbGxJbWFnZSIpLCAiVVJMIik7CgkJCQkJaWYgKHN0cmxlbigkaW1nX3NfdXJsKSA9PSAwKSB7CgkJCQkJCSRpbWdfc191cmwgPSAiLi4vLi4vaW1nL25vaW1hZ2Vfcy5qcGciOwoJCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkJJGltZ19zX3VybCA9ICIuLi8iIC4gJGltZ19zX3VybDsKCQkJCQkJfQoJCQkJCX0KCQkJCQkkaW1nX21fdXJsID0gJGltZ191cmw7CgkJCQkJJGltZ19sX3VybCA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiTGFyZ2VJbWFnZSIpLCAiVVJMIik7CgkJCQkJaWYgKHN0cmxlbigkaW1nX2xfdXJsKSA9PSAwKSB7CgkJCQkJCSRpbWdfbF91cmwgPSAiLi4vLi4vaW1nL25vaW1hZ2VfbC5qcGciOwoJCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkJJGltZ19sX3VybCA9ICIuLi8iIC4gJGltZ19sX3VybDsKCQkJCQkJfQoJCQkJCX0KCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiRWRpdG9yaWFsUmV2aWV3IiksICJDb250ZW50Iik7CgkJCQkJaWYgKHN0cmxlbigkZGV0YWlscykgPT0gMCkgewoJCQkJCQkkZmVhdHVyZXMgPSBnZXRfbm9kZXMoJGl0ZW0sICJGZWF0dXJlIik7CgkJCQkJCWZvciAoJHogPSAwOyAkeiA8IGNvdW50KCRmZWF0dXJlcyk7ICR6KyspIHsKCQkJCQkJCSRkZXRhaWxzIC49ICRmZWF0dXJlc1skaV0gLiAiXG4iOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRkZXRhaWxzID0gaHRtbF90b190ZXh0KCRkZXRhaWxzKTsKCQkJCQlpZiAobWJfc3RybGVuKCRkZXRhaWxzKSA+ICRpdGVtX3RleHRfbGVuKSB7CgkJCQkJCSRkZXRhaWxzID0gbWJfc3Vic3RyKCRkZXRhaWxzLCAwLCAkaXRlbV90ZXh0X2xlbikgLiAiLi4uIjsKCQkJCQl9CgkJCQkJJGRldGFpbHMgPSBzdHJfcmVwbGFjZSgiXG4iLCAiPGJyPiIsICRkZXRhaWxzKTsKCQkJCQkkcHJpY2UgPSBnZXRfbm9kZShnZXRfbm9kZSgkaXRlbSwgIkxpc3RQcmljZSIpLCAiQW1vdW50Iik7CgkJCQkJaWYgKHN0cmxlbigkcHJpY2UpID09IDApIHsKCQkJCQkJJHByaWNlID0gIqWqobyl16Xzpdel6aWkpbkiOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoJHByaWNlKSAuICKx3yI7CgkJCQkJfQoJCQkJCSRoYW5iYWltb3RvID0gZ2V0X25vZGUoJGl0ZW0sICJQdWJsaXNoZXIiKTsKCQkJCQkkcmF0aW5nID0gZ2V0X25vZGUoZ2V0X25vZGUoJGl0ZW0sICJDdXN0b21lclJldmlld3MiKSwgIkF2ZXJhZ2VSYXRpbmciKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiRGV0YWlsUGFnZVVSTCIpOwoJCQkJfSBlbHNlaWYgKCRhc3AgPT0gImRlbm5vIikgewoJCQkJCSR0aXRsZSA9IGdldF9ub2RlKCRpdGVtLCAiUHJvZHVjdE5hbWUiKTsKCQkJCQkkaXRlbV9pZCA9IGdldF9ub2RlKCRpdGVtLCAiSXRlbUlEIik7CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi9kZXRhaWxzLyR7aXRlbV9pZH0uaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiRGV0YWlsVVJMIik7CgkJCQkJJGltZ191cmwgPSBnZXRfbm9kZSgkaXRlbSwgIkltYWdlVXJsTWVkaXVtIik7CgkJCQkJJGltZ19zX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiSW1hZ2VVcmxTbWFsbCIpOwoJCQkJCSRpbWdfbV91cmwgPSAkaW1nX3VyOwoJCQkJCSRpbWdfbF91cmwgPSBnZXRfbm9kZSgkaXRlbSwgIkltYWdlVXJsTGFyZ2UiKTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dChnZXRfbm9kZSgkaXRlbSwgIkl0ZW1EZXRhaWwiKSk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoZ2V0X25vZGUoJGl0ZW0sICJQcmljZSIpKSAuICKx3yI7CgkJCQkJJGhhbmJhaW1vdG8gPSBnZXRfbm9kZSgkaXRlbSwgIk1hbnVmYWN0dXJlIik7CgkJCQkJaWYgKHN0cmxlbigkaGFuYmFpbW90bykgPT0gMCkgewoJCQkJCQkkaGFuYmFpbW90byA9IGdldF9ub2RlKCRpdGVtLCAiTWFudWZhY3R1cmVyIik7CgkJCQkJfQoJCQkJCSRyYXRpbmcgPSAiIjsKCQkJCX0gZWxzZWlmICgkYXNwID09ICJpbmZvY2FydCIgfHwgJGFzcCA9PSAiaW5mb3RvcCIpIHsKCQkJCQkkdGl0bGUgPSAkaXRlbVtDT0xfVElUTEVdOwoJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiLi4vZGV0YWlscy8iIC4gJGl0ZW1bQ09MX0lURU1fSURdIC4gIi5odG1sIjsKCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uLyIgLiAkZGV0YWlsX3BhZ2VfdXJsOwoJCQkJCX0KCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gZ2V0X2Z1bGxfdXJsKCRkZXRhaWxfcGFnZV91cmwpOwoJCQkJCSRpbWdfdXJsID0gJGl0ZW1bQ09MX0lNR19VUkxdOwoJCQkJCSRpbWdfc191cmwgPSAkaW1nX3VybDsKCQkJCQkkaW1nX21fdXJsID0gJGltZ191cmw7CgkJCQkJJGltZ19sX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRkZXRhaWxzID0gJGl0ZW1bQ09MX0RFVEFJTFNdOwoJCQkJCWlmIChtYl9zdHJsZW4oJGRldGFpbHMpID4gJGl0ZW1fdGV4dF9sZW4pIHsKCQkJCQkJJGRldGFpbHMgPSBtYl9zdWJzdHIoJGRldGFpbHMsIDAsICRpdGVtX3RleHRfbGVuKSAuICIuLi4iOwoJCQkJCX0KCQkJCQkkcHJpY2UgPSBudW1iZXJfZm9ybWF0KCRpdGVtW0NPTF9QUklDRV0pIC4gIrHfIjsKCQkJCQkkaGFuYmFpbW90byA9ICRpdGVtW0NPTF9NQUtFUl07CgkJCQkJJHJhdGluZyA9ICIiOwoJCQkJCSRhZmZpbGlhdGVfdXJsID0gJGl0ZW1bQ09MX0lURU1fVVJMXTsKCQkJCQlpZiAoJGFzcCA9PSAiaW5mb2NhcnQiKSB7CgkJCQkJCSRhZmZpbGlhdGVfdXJsID0gc3RyX3JlcGxhY2UoImFmPSIsICJhZj0iIC4gZ2V0X3NldHRpbmcoIklORk9DQVJUX0FGRklMSUFURV9JRCIpLCAkYWZmaWxpYXRlX3VybCk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJGFmZmlsaWF0ZV91cmwgPSBzdHJfcmVwbGFjZSgiYWlkPSIsICJhaWQ9IiAuIGdldF9zZXR0aW5nKCJJTkZPVE9QX0FGRklMSUFURV9JRCIpLCAkYWZmaWxpYXRlX3VybCk7CgkJCQkJfQoJCQkJfQoJCQkJJHRpdGxlID0gaHRtbHVuZXNjYXBlKCR0aXRsZSk7CgkJCX0gZWxzZSB7CgkJCQkkdGl0bGUgPSAiIjsKCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiIjsKCQkJCSRpbWdfdXJsID0gIi4uLy4uL2ltZy9ub2ltYWdlX20uanBnIjsKCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJJGltZ191cmwgPSAiLi4vIiAuICRpbWdfdXJsOwoJCQkJfQoJCQkJJGltZ19zX3VybCA9ICIuLi8uLi9pbWcvbm9pbWFnZV9zLmpwZyI7CgkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCSRpbWdfc191cmwgPSAiLi4vIiAuICRpbWdfc191cmw7CgkJCQl9CgkJCQkkaW1nX21fdXJsID0gJGltZ191cmw7CgkJCQkkaW1nX2xfdXJsID0gIi4uLy4uL2ltZy9ub2ltYWdlX2wuanBnIjsKCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJJGltZ19sX3VybCA9ICIuLi8iIC4gJGltZ19sX3VybDsKCQkJCX0KCQkJCSRwcmljZSA9ICIiOwoJCQkJJGRldGFpbHMgPSAiIjsKCQkJCSRoYW5iYWltb3RvID0gIiI7CgkJCQkkcmF0aW5nID0gIiI7CgkJCQkkaG90ZWxObyA9ICIiOwoJCQkJJGhvdGVsTmFtZSA9ICIiOwoJCQkJJGFyZWFTdW0gPSAiIjsKCQkJCSRob3RlbFNwZWNpYWxTdW0gPSAiIjsKCQkJCSRhZmZpbGlhdGVfdXJsID0gIiI7CgkJCX0KCQkJaWYgKCRpdGVtX3RpdGxlX2xlbiAhPSAwICYmIG1iX3N0cmxlbigkdGl0bGUpID4gJGl0ZW1fdGl0bGVfbGVuKSB7CgkJCQkkdGl0bGUgPSBtYl9zdWJzdHIoJHRpdGxlLCAwLCAkaXRlbV90aXRsZV9sZW4pIC4gIi4uLiI7CgkJCX0KCQkJJG91dCA9ICRodG1faXRlbV9kZXRhaWxzOwoJCQlmb3JlYWNoICgkbmFtZXMgYXMgJG5hbWUpIHsKCQkJCWV2YWwoIlwkdmFsdWUgPSBcJCR7bmFtZX07Iik7CgkJCQlpZiAoJG5hbWUgPT0gImRldGFpbHMiICYmICRzdWZmaXggPT0gInhtbCIpIHsKCQkJCQkkdmFsdWUgPSBnZXRfY2RhdGEoJHZhbHVlKTsKCQkJCX0KCQkJCSRvdXQgPSBzdHJfcmVwbGFjZSgieyIgLiAkbmFtZSAuICJ9IiwgJHZhbHVlLCAkb3V0KTsKCQkJfQoJCQkkaHRtX2l0ZW1fZGV0YWlsc19hbGwgLj0gJG91dDsKCQl9CgkJJG91dCA9ICRodG1fbGlzdF9yb3c7CgkJJG91dCA9IHN0cl9yZXBsYWNlKCJ7TElTVF9DT0x9IiwgJGh0bV9pdGVtX2RldGFpbHNfYWxsLCAkb3V0KTsKCQkkaHRtX2l0ZW1zIC49ICRvdXQ7Cgl9Cn0KCiRodG0gPSBzdHJfcmVwbGFjZSgie0xJU1RfUk9XfSIsICRodG1faXRlbXMsICRodG0pOwoKJGFzcHMgPSBhcnJheSgicmFrdXRlbiIsICJyYWt1dGVuX3RyYXZlbCIsICJhbWF6b24iLCAiZGVubm8iLCAiaW5mb2NhcnQiLCAiaW5mb3RvcCIpOwpmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkYXNwcyk7ICRpKyspIHsKCWlmICgkYXNwICE9ICRhc3BzWyRpXSkgewoJCSRodG0gPSByZW1vdmVfc3RyX3NwYW4oJGh0bSwgc3RydG91cHBlcigkYXNwc1skaV0pKTsKCX0KfQoKaWYgKCRzdWZmaXggPT0gInhtbCIpIHsKCWhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3htbDsgY2hhcnNldD1VVEYtOCIpOwp9CgpwcmludCBtYl9jb252ZXJ0X2VuY29kaW5nKCRodG0sICRvdXRfZW5jb2RpbmcpOwo="));?>