Created
February 7, 2017 15:51
-
-
Save heiswayi/a7c67c949f77a786c2158769e2b765af to your computer and use it in GitHub Desktop.
Backup of HNExplorer source code -- a PHP file manager.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// | |
// Initialising variables. Don't change these. | |
// | |
$_CONFIG = array(); | |
$_ERROR = ""; | |
$_START_TIME = microtime(TRUE); | |
/* | |
* GENERAL SETTINGS | |
*/ | |
// | |
// Choose a language. See below in the language section for options. | |
// Default: $_CONFIG['lang'] = "en"; | |
// | |
$_CONFIG['lang'] = "en"; | |
// | |
// Display thumbnails when hovering over image entries in the list. | |
// Common image types are supported (jpeg, png, gif). | |
// Pdf files are also supported but require ImageMagick to be installed. | |
// Default: $_CONFIG['thumbnails'] = true; | |
// | |
$_CONFIG['thumbnails'] = true; | |
// | |
// Maximum sizes of the thumbnails. | |
// Default: $_CONFIG['thumbnails_width'] = 200; | |
// Default: $_CONFIG['thumbnails_height'] = 200; | |
// | |
$_CONFIG['thumbnails_width'] = 200; | |
$_CONFIG['thumbnails_height'] = 200; | |
/* | |
* USER INTERFACE | |
*/ | |
// | |
// Will the files be opened in a new window? true/false | |
// Default: $_CONFIG['open_in_new_window'] = false; | |
// | |
$_CONFIG['open_in_new_window'] = false; | |
// | |
// How deep in subfolders will the script search for files? | |
// Set it larger than 0 to display the total used space. | |
// Default: $_CONFIG['calculate_space_level'] = 0; | |
// | |
$_CONFIG['calculate_space_level'] = 0; | |
// | |
// Will the page header be displayed? 0=no, 1=yes. | |
// Default: $_CONFIG['show_top'] = true; | |
// | |
$_CONFIG['show_top'] = true; | |
// | |
// The title for the page | |
// Default: $_CONFIG['main_title'] = "Encode Explorer"; | |
// | |
$_CONFIG['main_title'] = "HNExplorer"; | |
// | |
// The secondary page titles, randomly selected and displayed under the main header. | |
// For example: $_CONFIG['secondary_titles'] = array("Secondary title", "“Secondary title with quotes”"); | |
// Default: $_CONFIG['secondary_titles'] = array(); | |
// | |
$_CONFIG['secondary_titles'] = array("Simple web-based file explorer", "Single PHP file", "Easy to use"); | |
// | |
// Display breadcrumbs (relative path of the location). | |
// Default: $_CONFIG['show_path'] = true; | |
// | |
$_CONFIG['show_path'] = true; | |
// | |
// Display the time it took to load the page. | |
// Default: $_CONFIG['show_load_time'] = true; | |
// | |
$_CONFIG['show_load_time'] = true; | |
// | |
// The time format for the "last changed" column. | |
// Default: $_CONFIG['time_format'] = "d.m.y H:i:s"; | |
// | |
$_CONFIG['time_format'] = "d.m.y H:i:s"; | |
// | |
// Charset. Use the one that suits for you. | |
// Default: $_CONFIG['charset'] = "UTF-8"; | |
// | |
$_CONFIG['charset'] = "UTF-8"; | |
/* | |
* PERMISSIONS | |
*/ | |
// | |
// The array of folder names that will be hidden from the list. | |
// Default: $_CONFIG['hidden_dirs'] = array(); | |
// | |
$_CONFIG['hidden_dirs'] = array(); | |
// | |
// Filenames that will be hidden from the list. | |
// Default: $_CONFIG['hidden_files'] = array(".ftpquota", "index.php", "index.php~", ".htaccess", ".htpasswd"); | |
// | |
$_CONFIG['hidden_files'] = array(".ftpquota", "index.php", "index.php~", ".htaccess", ".htpasswd"); | |
// | |
// Whether authentication is required to see the contents of the page. | |
// If set to false, the page is public. | |
// If set to true, you should specify some users as well (see below). | |
// Important: This only prevents people from seeing the list. | |
// They will still be able to access the files with a direct link. | |
// Default: $_CONFIG['require_login'] = false; | |
// | |
$_CONFIG['require_login'] = false; | |
// | |
// Usernames and passwords for restricting access to the page. | |
// The format is: array(username, password, status) | |
// Status can be either "user" or "admin". User can read the page, admin can upload and delete. | |
// For example: $_CONFIG['users'] = array(array("username1", "password1", "user"), array("username2", "password2", "admin")); | |
// You can also keep require_login=false and specify an admin. | |
// That way everyone can see the page but username and password are needed for uploading. | |
// For example: $_CONFIG['users'] = array(array("username", "password", "admin")); | |
// Default: $_CONFIG['users'] = array(); | |
// | |
$_CONFIG['users'] = array(array("admin", "password", "admin")); | |
// | |
// Permissions for uploading, creating new directories and deleting. | |
// They only apply to admin accounts, regular users can never perform these operations. | |
// Default: | |
// $_CONFIG['upload_enable'] = true; | |
// $_CONFIG['newdir_enable'] = true; | |
// $_CONFIG['delete_enable'] = false; | |
// | |
$_CONFIG['upload_enable'] = true; | |
$_CONFIG['newdir_enable'] = true; | |
$_CONFIG['delete_enable'] = true; | |
/* | |
* UPLOADING | |
*/ | |
// | |
// List of directories where users are allowed to upload. | |
// For example: $_CONFIG['upload_dirs'] = array("./myuploaddir1/", "./mydir/upload2/"); | |
// The path should be relative to the main directory, start with "./" and end with "/". | |
// All the directories below the marked ones are automatically included as well. | |
// If the list is empty (default), all directories are open for uploads, given that the password has been set. | |
// Default: $_CONFIG['upload_dirs'] = array(); | |
// | |
$_CONFIG['upload_dirs'] = array(); | |
// | |
// MIME type that are allowed to be uploaded. | |
// For example, to only allow uploading of common image types, you could use: | |
// $_CONFIG['upload_allow_type'] = array("image/png", "image/gif", "image/jpeg"); | |
// Default: $_CONFIG['upload_allow_type'] = array(); | |
// | |
$_CONFIG['upload_allow_type'] = array(); | |
// | |
// File extensions that are not allowed for uploading. | |
// For example: $_CONFIG['upload_reject_extension'] = array("php", "html", "htm"); | |
// Default: $_CONFIG['upload_reject_extension'] = array(); | |
// | |
$_CONFIG['upload_reject_extension'] = array("php"); | |
/* | |
* LOGGING | |
*/ | |
// | |
// Upload notification e-mail. | |
// If set, an e-mail will be sent every time someone uploads a file or creates a new dirctory. | |
// Default: $_CONFIG['upload_email'] = ""; | |
// | |
$_CONFIG['upload_email'] = ""; | |
// | |
// Logfile name. If set, a log line will be written there whenever a directory or file is accessed. | |
// For example: $_CONFIG['log_file'] = ".log.txt"; | |
// Default: $_CONFIG['log_file'] = ""; | |
// | |
$_CONFIG['log_file'] = ""; | |
/* | |
* SYSTEM | |
*/ | |
// | |
// The starting directory. Normally no need to change this. | |
// Use only relative subdirectories! | |
// Default: $_CONFIG['starting_dir'] = "."; | |
// | |
$_CONFIG['starting_dir'] = "."; | |
// | |
// Location in the server. Usually this does not have to be set manually. | |
// Default: $_CONFIG['basedir'] = ""; | |
// | |
$_CONFIG['basedir'] = ""; | |
// | |
// Big files. If you have some very big files (>4GB), enable this for correct | |
// file size calculation. | |
// Default: $_CONFIG['large_files'] = false; | |
// | |
$_CONFIG['large_files'] = false; | |
// | |
// The session name, which is used as a cookie name. | |
// Change this to something original if you have multiple copies in the same space | |
// and wish to keep their authentication separate. | |
// The value can contain only letters and numbers. For example: MYSESSION1 | |
// More info at: http://www.php.net/manual/en/function.session-name.php | |
// Default: $_CONFIG['session_name'] = ""; | |
// | |
$_CONFIG['session_name'] = ""; | |
/***************************************************************************/ | |
/* TÕLKED */ | |
/* */ | |
/* TRANSLATIONS. */ | |
/***************************************************************************/ | |
$_TRANSLATIONS = array(); | |
// English | |
$_TRANSLATIONS["en"] = array( | |
"file_name" => "File name", | |
"size" => "Size", | |
"last_changed" => "Last changed", | |
"total_used_space" => "Total used space", | |
"free_space" => "Free space", | |
"password" => "Password", | |
"upload" => "Upload", | |
"failed_upload" => "Failed to upload the file!", | |
"failed_move" => "Failed to move the file into the right directory!", | |
"wrong_password" => "Wrong password", | |
"make_directory" => "New directory", | |
"new_dir_failed" => "Failed to create directory", | |
"chmod_dir_failed" => "Failed to change directory rights", | |
"unable_to_read_dir" => "Unable to read directory", | |
"location" => "Location", | |
"root" => "Root", | |
"log_file_permission_error" => "The script does not have permissions to write the log file.", | |
"upload_not_allowed" => "The script configuration does not allow uploading in this directory.", | |
"upload_dir_not_writable" => "This directory does not have write permissions.", | |
"mobile_version" => "Mobile view", | |
"standard_version" => "Standard view", | |
"page_load_time" => "Page loaded in %.2f ms", | |
"wrong_pass" => "Wrong username or password", | |
"username" => "Username", | |
"log_in" => "Login", | |
"upload_type_not_allowed" => "This file type is not allowed for uploading.", | |
"del" => "Delete" // short for Delete | |
); | |
/***************************************************************************/ | |
/* CSS KUJUNDUSE MUUTMISEKS */ | |
/* */ | |
/* CSS FOR TWEAKING THE DESIGN */ | |
/***************************************************************************/ | |
function css() | |
{ | |
?> | |
<style type="text/css"> | |
/*! | |
* Bootstrap v3.0.0 | |
* | |
* Copyright 2013 Twitter, Inc | |
* Licensed under the Apache License v2.0 | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Designed and built with all the love in the world @twitter by @mdo and @fat. | |
*/ | |
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;} | |
audio,canvas,video{display:inline-block;} | |
audio:not([controls]){display:none;height:0;} | |
[hidden]{display:none;} | |
html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} | |
body{margin:0;} | |
a:focus{outline:thin dotted;} | |
a:active,a:hover{outline:0;} | |
h1{font-size:2em;margin:0.67em 0;} | |
abbr[title]{border-bottom:1px dotted;} | |
b,strong{font-weight:bold;} | |
dfn{font-style:italic;} | |
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;} | |
mark{background:#ff0;color:#000;} | |
code,kbd,pre,samp{font-family:monospace, serif;font-size:1em;} | |
pre{white-space:pre-wrap;} | |
q{quotes:"\201C" "\201D" "\2018" "\2019";} | |
small{font-size:80%;} | |
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;} | |
sup{top:-0.5em;} | |
sub{bottom:-0.25em;} | |
img{border:0;} | |
svg:not(:root){overflow:hidden;} | |
figure{margin:0;} | |
fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;} | |
legend{border:0;padding:0;} | |
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;} | |
button,input{line-height:normal;} | |
button,select{text-transform:none;} | |
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;} | |
button[disabled],html input[disabled]{cursor:default;} | |
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;} | |
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;} | |
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;} | |
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} | |
textarea{overflow:auto;vertical-align:top;} | |
table{border-collapse:collapse;border-spacing:0;} | |
*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} | |
html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);} | |
body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333333;background-color:#ffffff;} | |
input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;} | |
button,input,select[multiple],textarea{background-image:none;} | |
a{color:#428bca;text-decoration:none;}a:hover,a:focus{color:#2a6496;text-decoration:underline;} | |
a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} | |
img{vertical-align:middle;} | |
.img-responsive{display:block;max-width:100%;height:auto;} | |
.img-rounded{border-radius:0;} | |
.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;} | |
.img-circle{border-radius:50%;} | |
hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee;} | |
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0;} | |
@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:2cm .5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;} .navbar{display:none;} .table td,.table th{background-color:#fff !important;} .btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important;} .label{border:1px solid #000;} .table{border-collapse:collapse !important;} .table-bordered th,.table-bordered td{border:1px solid #ddd !important;}}p{margin:0 0 10px;} | |
.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4;}@media (min-width:768px){.lead{font-size:21px;}} | |
small{font-size:85%;} | |
cite{font-style:normal;} | |
.text-muted{color:#999999;} | |
.text-primary{color:#428bca;} | |
.text-warning{color:#c09853;} | |
.text-danger{color:#b94a48;} | |
.text-success{color:#468847;} | |
.text-info{color:#3a87ad;} | |
.text-left{text-align:left;} | |
.text-right{text-align:right;} | |
.text-center{text-align:center;} | |
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999999;} | |
h1,h2,h3{margin-top:20px;margin-bottom:10px;} | |
h4,h5,h6{margin-top:10px;margin-bottom:10px;} | |
h1,.h1{font-size:36px;} | |
h2,.h2{font-size:30px;} | |
h3,.h3{font-size:24px;} | |
h4,.h4{font-size:18px;} | |
h5,.h5{font-size:14px;} | |
h6,.h6{font-size:12px;} | |
h1 small,.h1 small{font-size:24px;} | |
h2 small,.h2 small{font-size:18px;} | |
h3 small,.h3 small,h4 small,.h4 small{font-size:14px;} | |
.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee;} | |
ul,ol{margin-top:0;margin-bottom:10px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:0;} | |
.list-unstyled{padding-left:0;list-style:none;} | |
.list-inline{padding-left:0;list-style:none;}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px;} | |
dl{margin-bottom:20px;} | |
dt,dd{line-height:1.428571429;} | |
dt{font-weight:bold;} | |
dd{margin-left:0;} | |
@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} .dl-horizontal dd{margin-left:180px;}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table;} .dl-horizontal dd:after{clear:both;} .dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table;} .dl-horizontal dd:after{clear:both;}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;} | |
abbr.initialism{font-size:90%;text-transform:uppercase;} | |
blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25;} | |
blockquote p:last-child{margin-bottom:0;} | |
blockquote small{display:block;line-height:1.428571429;color:#999999;}blockquote small:before{content:'\2014 \00A0';} | |
blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} | |
blockquote.pull-right small:before{content:'';} | |
blockquote.pull-right small:after{content:'\00A0 \2014';} | |
q:before,q:after,blockquote:before,blockquote:after{content:"";} | |
address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429;} | |
code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace;} | |
code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:0;} | |
pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0;}pre.prettyprint{margin-bottom:20px;} | |
pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0;} | |
.pre-scrollable{max-height:340px;overflow-y:scroll;} | |
.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}.container:before,.container:after{content:" ";display:table;} | |
.container:after{clear:both;} | |
.container:before,.container:after{content:" ";display:table;} | |
.container:after{clear:both;} | |
.row{margin-left:-15px;margin-right:-15px;}.row:before,.row:after{content:" ";display:table;} | |
.row:after{clear:both;} | |
.row:before,.row:after{content:" ";display:table;} | |
.row:after{clear:both;} | |
.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;} | |
.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left;} | |
.col-xs-1{width:8.333333333333332%;} | |
.col-xs-2{width:16.666666666666664%;} | |
.col-xs-3{width:25%;} | |
.col-xs-4{width:33.33333333333333%;} | |
.col-xs-5{width:41.66666666666667%;} | |
.col-xs-6{width:50%;} | |
.col-xs-7{width:58.333333333333336%;} | |
.col-xs-8{width:66.66666666666666%;} | |
.col-xs-9{width:75%;} | |
.col-xs-10{width:83.33333333333334%;} | |
.col-xs-11{width:91.66666666666666%;} | |
.col-xs-12{width:100%;} | |
@media (min-width:768px){.container{max-width:750px;} .col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left;} .col-sm-1{width:8.333333333333332%;} .col-sm-2{width:16.666666666666664%;} .col-sm-3{width:25%;} .col-sm-4{width:33.33333333333333%;} .col-sm-5{width:41.66666666666667%;} .col-sm-6{width:50%;} .col-sm-7{width:58.333333333333336%;} .col-sm-8{width:66.66666666666666%;} .col-sm-9{width:75%;} .col-sm-10{width:83.33333333333334%;} .col-sm-11{width:91.66666666666666%;} .col-sm-12{width:100%;} .col-sm-push-1{left:8.333333333333332%;} .col-sm-push-2{left:16.666666666666664%;} .col-sm-push-3{left:25%;} .col-sm-push-4{left:33.33333333333333%;} .col-sm-push-5{left:41.66666666666667%;} .col-sm-push-6{left:50%;} .col-sm-push-7{left:58.333333333333336%;} .col-sm-push-8{left:66.66666666666666%;} .col-sm-push-9{left:75%;} .col-sm-push-10{left:83.33333333333334%;} .col-sm-push-11{left:91.66666666666666%;} .col-sm-pull-1{right:8.333333333333332%;} .col-sm-pull-2{right:16.666666666666664%;} .col-sm-pull-3{right:25%;} .col-sm-pull-4{right:33.33333333333333%;} .col-sm-pull-5{right:41.66666666666667%;} .col-sm-pull-6{right:50%;} .col-sm-pull-7{right:58.333333333333336%;} .col-sm-pull-8{right:66.66666666666666%;} .col-sm-pull-9{right:75%;} .col-sm-pull-10{right:83.33333333333334%;} .col-sm-pull-11{right:91.66666666666666%;} .col-sm-offset-1{margin-left:8.333333333333332%;} .col-sm-offset-2{margin-left:16.666666666666664%;} .col-sm-offset-3{margin-left:25%;} .col-sm-offset-4{margin-left:33.33333333333333%;} .col-sm-offset-5{margin-left:41.66666666666667%;} .col-sm-offset-6{margin-left:50%;} .col-sm-offset-7{margin-left:58.333333333333336%;} .col-sm-offset-8{margin-left:66.66666666666666%;} .col-sm-offset-9{margin-left:75%;} .col-sm-offset-10{margin-left:83.33333333333334%;} .col-sm-offset-11{margin-left:91.66666666666666%;}}@media (min-width:992px){.container{max-width:970px;} .col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left;} .col-md-1{width:8.333333333333332%;} .col-md-2{width:16.666666666666664%;} .col-md-3{width:25%;} .col-md-4{width:33.33333333333333%;} .col-md-5{width:41.66666666666667%;} .col-md-6{width:50%;} .col-md-7{width:58.333333333333336%;} .col-md-8{width:66.66666666666666%;} .col-md-9{width:75%;} .col-md-10{width:83.33333333333334%;} .col-md-11{width:91.66666666666666%;} .col-md-12{width:100%;} .col-md-push-0{left:auto;} .col-md-push-1{left:8.333333333333332%;} .col-md-push-2{left:16.666666666666664%;} .col-md-push-3{left:25%;} .col-md-push-4{left:33.33333333333333%;} .col-md-push-5{left:41.66666666666667%;} .col-md-push-6{left:50%;} .col-md-push-7{left:58.333333333333336%;} .col-md-push-8{left:66.66666666666666%;} .col-md-push-9{left:75%;} .col-md-push-10{left:83.33333333333334%;} .col-md-push-11{left:91.66666666666666%;} .col-md-pull-0{right:auto;} .col-md-pull-1{right:8.333333333333332%;} .col-md-pull-2{right:16.666666666666664%;} .col-md-pull-3{right:25%;} .col-md-pull-4{right:33.33333333333333%;} .col-md-pull-5{right:41.66666666666667%;} .col-md-pull-6{right:50%;} .col-md-pull-7{right:58.333333333333336%;} .col-md-pull-8{right:66.66666666666666%;} .col-md-pull-9{right:75%;} .col-md-pull-10{right:83.33333333333334%;} .col-md-pull-11{right:91.66666666666666%;} .col-md-offset-0{margin-left:0;} .col-md-offset-1{margin-left:8.333333333333332%;} .col-md-offset-2{margin-left:16.666666666666664%;} .col-md-offset-3{margin-left:25%;} .col-md-offset-4{margin-left:33.33333333333333%;} .col-md-offset-5{margin-left:41.66666666666667%;} .col-md-offset-6{margin-left:50%;} .col-md-offset-7{margin-left:58.333333333333336%;} .col-md-offset-8{margin-left:66.66666666666666%;} .col-md-offset-9{margin-left:75%;} .col-md-offset-10{margin-left:83.33333333333334%;} .col-md-offset-11{margin-left:91.66666666666666%;}}@media (min-width:1200px){.container{max-width:1170px;} .col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left;} .col-lg-1{width:8.333333333333332%;} .col-lg-2{width:16.666666666666664%;} .col-lg-3{width:25%;} .col-lg-4{width:33.33333333333333%;} .col-lg-5{width:41.66666666666667%;} .col-lg-6{width:50%;} .col-lg-7{width:58.333333333333336%;} .col-lg-8{width:66.66666666666666%;} .col-lg-9{width:75%;} .col-lg-10{width:83.33333333333334%;} .col-lg-11{width:91.66666666666666%;} .col-lg-12{width:100%;} .col-lg-push-0{left:auto;} .col-lg-push-1{left:8.333333333333332%;} .col-lg-push-2{left:16.666666666666664%;} .col-lg-push-3{left:25%;} .col-lg-push-4{left:33.33333333333333%;} .col-lg-push-5{left:41.66666666666667%;} .col-lg-push-6{left:50%;} .col-lg-push-7{left:58.333333333333336%;} .col-lg-push-8{left:66.66666666666666%;} .col-lg-push-9{left:75%;} .col-lg-push-10{left:83.33333333333334%;} .col-lg-push-11{left:91.66666666666666%;} .col-lg-pull-0{right:auto;} .col-lg-pull-1{right:8.333333333333332%;} .col-lg-pull-2{right:16.666666666666664%;} .col-lg-pull-3{right:25%;} .col-lg-pull-4{right:33.33333333333333%;} .col-lg-pull-5{right:41.66666666666667%;} .col-lg-pull-6{right:50%;} .col-lg-pull-7{right:58.333333333333336%;} .col-lg-pull-8{right:66.66666666666666%;} .col-lg-pull-9{right:75%;} .col-lg-pull-10{right:83.33333333333334%;} .col-lg-pull-11{right:91.66666666666666%;} .col-lg-offset-0{margin-left:0;} .col-lg-offset-1{margin-left:8.333333333333332%;} .col-lg-offset-2{margin-left:16.666666666666664%;} .col-lg-offset-3{margin-left:25%;} .col-lg-offset-4{margin-left:33.33333333333333%;} .col-lg-offset-5{margin-left:41.66666666666667%;} .col-lg-offset-6{margin-left:50%;} .col-lg-offset-7{margin-left:58.333333333333336%;} .col-lg-offset-8{margin-left:66.66666666666666%;} .col-lg-offset-9{margin-left:75%;} .col-lg-offset-10{margin-left:83.33333333333334%;} .col-lg-offset-11{margin-left:91.66666666666666%;}}table{max-width:100%;background-color:transparent;} | |
th{text-align:left;} | |
.table{width:100%;margin-bottom:20px;}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #dddddd;} | |
.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd;} | |
.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0;} | |
.table tbody+tbody{border-top:2px solid #dddddd;} | |
.table .table{background-color:#ffffff;} | |
.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px;} | |
.table-bordered{border:1px solid #dddddd;}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd;} | |
.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px;} | |
.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;} | |
.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5;} | |
table col[class*="col-"]{float:none;display:table-column;} | |
table td[class*="col-"],table th[class*="col-"]{float:none;display:table-cell;} | |
.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5;} | |
.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6;} | |
.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3;} | |
.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7;} | |
.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7;} | |
.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5;} | |
.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be;} | |
@media (max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;border:1px solid #dddddd;}.table-responsive>.table{margin-bottom:0;background-color:#fff;}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap;} .table-responsive>.table-bordered{border:0;}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0;} .table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0;} .table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0;}}fieldset{padding:0;margin:0;border:0;} | |
legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5;} | |
label{display:inline-block;margin-bottom:5px;font-weight:bold;} | |
input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} | |
input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal;} | |
input[type="file"]{display:block;} | |
select[multiple],select[size]{height:auto;} | |
select optgroup{font-size:inherit;font-style:inherit;font-family:inherit;} | |
input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} | |
input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto;} | |
.form-control:-moz-placeholder{color:#999999;} | |
.form-control::-moz-placeholder{color:#999999;} | |
.form-control:-ms-input-placeholder{color:#999999;} | |
.form-control::-webkit-input-placeholder{color:#999999;} | |
.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555555;vertical-align:middle;background-color:#ffffff;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);} | |
.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eeeeee;} | |
textarea.form-control{height:auto;} | |
.form-group{margin-bottom:15px;} | |
.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px;vertical-align:middle;}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer;} | |
.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px;} | |
.radio+.radio,.checkbox+.checkbox{margin-top:-5px;} | |
.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer;} | |
.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px;} | |
input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed;} | |
.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0;}select.input-sm{height:30px;line-height:30px;} | |
textarea.input-sm{height:auto;} | |
.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:0;}select.input-lg{height:45px;line-height:45px;} | |
textarea.input-lg{height:auto;} | |
.has-warning .help-block,.has-warning .control-label{color:#c09853;} | |
.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;} | |
.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3;} | |
.has-error .help-block,.has-error .control-label{color:#b94a48;} | |
.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;} | |
.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede;} | |
.has-success .help-block,.has-success .control-label{color:#468847;} | |
.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;} | |
.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8;} | |
.form-control-static{margin-bottom:0;padding-top:7px;} | |
.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;} | |
@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;} .form-inline .form-control{display:inline-block;} .form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;} .form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0;}} | |
.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px;} | |
.form-horizontal .form-group{margin-left:-15px;margin-right:-15px;}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table;} | |
.form-horizontal .form-group:after{clear:both;} | |
.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table;} | |
.form-horizontal .form-group:after{clear:both;} | |
@media (min-width:768px){.form-horizontal .control-label{text-align:right;}} | |
.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} | |
.btn:hover,.btn:focus{color:#333333;text-decoration:none;} | |
.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);} | |
.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;} | |
.btn-default{color:#333333;background-color:#ffffff;border-color:#cccccc;}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333333;background-color:#ebebeb;border-color:#adadad;} | |
.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none;} | |
.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#ffffff;border-color:#cccccc;} | |
.btn-primary{color:#ffffff;background-color:#428bca;border-color:#357ebd;}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#ffffff;background-color:#3276b1;border-color:#285e8e;} | |
.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none;} | |
.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd;} | |
.btn-warning{color:#ffffff;background-color:#f0ad4e;border-color:#eea236;}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#ffffff;background-color:#ed9c28;border-color:#d58512;} | |
.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none;} | |
.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236;} | |
.btn-danger{color:#ffffff;background-color:#d9534f;border-color:#d43f3a;}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#ffffff;background-color:#d2322d;border-color:#ac2925;} | |
.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none;} | |
.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a;} | |
.btn-success{color:#ffffff;background-color:#5cb85c;border-color:#4cae4c;}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#ffffff;background-color:#47a447;border-color:#398439;} | |
.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none;} | |
.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c;} | |
.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#46b8da;}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#ffffff;background-color:#39b3d7;border-color:#269abc;} | |
.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none;} | |
.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da;} | |
.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0;}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;} | |
.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent;} | |
.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent;} | |
.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none;} | |
.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:0;} | |
.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0;} | |
.btn-xs{padding:1px 5px;} | |
.btn-block{display:block;width:100%;padding-left:0;padding-right:0;} | |
.btn-block+.btn-block{margin-top:5px;} | |
input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;} | |
.btn-default .caret{border-top-color:#333333;} | |
.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff;} | |
.dropup .btn-default .caret{border-bottom-color:#333333;} | |
.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff;} | |
.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle;}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left;}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2;} | |
.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none;} | |
.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px;} | |
.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table;} | |
.btn-toolbar:after{clear:both;} | |
.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table;} | |
.btn-toolbar:after{clear:both;} | |
.btn-toolbar .btn-group{float:left;} | |
.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px;} | |
.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0;} | |
.btn-group>.btn:first-child{margin-left:0;}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0;} | |
.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;} | |
.btn-group>.btn-group{float:left;} | |
.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0;} | |
.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;} | |
.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;} | |
.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} | |
.btn-group-xs>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0;padding:1px 5px;} | |
.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0;} | |
.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:0;} | |
.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;} | |
.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px;} | |
.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);} | |
.btn .caret{margin-left:0;} | |
.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0;} | |
.dropup .btn-lg .caret{border-width:0 5px 5px;} | |
.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%;} | |
.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table;} | |
.btn-group-vertical>.btn-group:after{clear:both;} | |
.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table;} | |
.btn-group-vertical>.btn-group:after{clear:both;} | |
.btn-group-vertical>.btn-group>.btn{float:none;} | |
.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0;} | |
.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0;} | |
.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;} | |
.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0;} | |
.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0;} | |
.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0;} | |
.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0;} | |
.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate;}.btn-group-justified .btn{float:none;display:table-cell;width:1%;} | |
[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none;} | |
.input-group{position:relative;display:table;border-collapse:separate;}.input-group.col{float:none;padding-left:0;padding-right:0;} | |
.input-group .form-control{width:100%;margin-bottom:0;} | |
.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:0;}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px;} | |
textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto;} | |
.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0;}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px;} | |
textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto;} | |
.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell;}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0;} | |
.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle;} | |
.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:0;}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:0;} | |
.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:0;} | |
.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0;} | |
.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0;} | |
.input-group-addon:first-child{border-right:0;} | |
.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;} | |
.input-group-addon:last-child{border-left:0;} | |
.input-group-btn{position:relative;white-space:nowrap;} | |
.input-group-btn>.btn{position:relative;}.input-group-btn>.btn+.btn{margin-left:-4px;} | |
.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2;} | |
.nav{margin-bottom:0;padding-left:0;list-style:none;}.nav:before,.nav:after{content:" ";display:table;} | |
.nav:after{clear:both;} | |
.nav:before,.nav:after{content:" ";display:table;} | |
.nav:after{clear:both;} | |
.nav>li{position:relative;display:block;}.nav>li>a{position:relative;display:block;padding:10px 15px;}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;} | |
.nav>li.disabled>a{color:#999999;}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed;} | |
.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#428bca;} | |
.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5;} | |
.nav>li>a>img{max-width:none;} | |
.nav-tabs{border-bottom:1px solid #dddddd;}.nav-tabs>li{float:left;margin-bottom:-1px;}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:0 0 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} | |
.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default;} | |
.nav-tabs.nav-justified{width:100%;border-bottom:0;}.nav-tabs.nav-justified>li{float:none;}.nav-tabs.nav-justified>li>a{text-align:center;} | |
@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%;}}.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;margin-right:0;} | |
.nav-tabs.nav-justified>.active>a{border-bottom-color:#ffffff;} | |
.nav-pills>li{float:left;}.nav-pills>li>a{border-radius:5px;} | |
.nav-pills>li+li{margin-left:2px;} | |
.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#428bca;} | |
.nav-stacked>li{float:none;}.nav-stacked>li+li{margin-top:2px;margin-left:0;} | |
.nav-justified{width:100%;}.nav-justified>li{float:none;}.nav-justified>li>a{text-align:center;} | |
@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%;}} | |
.nav-tabs-justified{border-bottom:0;}.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;margin-right:0;} | |
.nav-tabs-justified>.active>a{border-bottom-color:#ffffff;} | |
.tabbable:before,.tabbable:after{content:" ";display:table;} | |
.tabbable:after{clear:both;} | |
.tabbable:before,.tabbable:after{content:" ";display:table;} | |
.tabbable:after{clear:both;} | |
.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} | |
.tab-content>.active,.pill-content>.active{display:block;} | |
.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca;} | |
.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496;} | |
.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0;} | |
.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent;}.navbar:before,.navbar:after{content:" ";display:table;} | |
.navbar:after{clear:both;} | |
.navbar:before,.navbar:after{content:" ";display:table;} | |
.navbar:after{clear:both;} | |
@media (min-width:768px){.navbar{border-radius:0;}} | |
.navbar-header:before,.navbar-header:after{content:" ";display:table;} | |
.navbar-header:after{clear:both;} | |
.navbar-header:before,.navbar-header:after{content:" ";display:table;} | |
.navbar-header:after{clear:both;} | |
@media (min-width:768px){.navbar-header{float:left;}} | |
.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1);-webkit-overflow-scrolling:touch;}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table;} | |
.navbar-collapse:after{clear:both;} | |
.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table;} | |
.navbar-collapse:after{clear:both;} | |
.navbar-collapse.in{overflow-y:auto;} | |
@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none;}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important;} .navbar-collapse.in{overflow-y:visible;} .navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px;} .navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px;} .navbar-collapse .navbar-text:last-child{margin-right:0;}} | |
.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px;}@media (min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0;}} | |
.navbar-static-top{border-width:0 0 1px;}@media (min-width:768px){.navbar-static-top{border-radius:0;}} | |
.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px;}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0;}} | |
.navbar-fixed-top{z-index:1030;top:0;} | |
.navbar-fixed-bottom{bottom:0;margin-bottom:0;} | |
.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none;} | |
@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px;}} | |
.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:0;}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;} | |
.navbar-toggle .icon-bar+.icon-bar{margin-top:4px;} | |
@media (min-width:768px){.navbar-toggle{display:none;}} | |
.navbar-nav{margin:7.5px -15px;}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;} | |
@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none;}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px;} .navbar-nav .open .dropdown-menu>li>a{line-height:20px;}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none;}}@media (min-width:768px){.navbar-nav{float:left;margin:0;}.navbar-nav>li{float:left;}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px;}} | |
@media (min-width:768px){.navbar-left{float:left !important;} .navbar-right{float:right !important;}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);margin-top:8px;margin-bottom:8px;}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;} .navbar-form .form-control{display:inline-block;} .navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;} .navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0;}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px;}} | |
@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none;}} | |
.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0;} | |
.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0;} | |
.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{left:auto;right:0;} | |
.navbar-btn{margin-top:8px;margin-bottom:8px;} | |
.navbar-text{float:left;margin-top:15px;margin-bottom:15px;}@media (min-width:768px){.navbar-text{margin-left:15px;margin-right:15px;}} | |
.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#777777;}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent;} | |
.navbar-default .navbar-text{color:#777777;} | |
.navbar-default .navbar-nav>li>a{color:#777777;}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333333;background-color:transparent;} | |
.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555555;background-color:#e7e7e7;} | |
.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent;} | |
.navbar-default .navbar-toggle{border-color:#dddddd;}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd;} | |
.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc;} | |
.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6;} | |
.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;} | |
.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555555;}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555555;border-bottom-color:#555555;} | |
.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777777;border-bottom-color:#777777;} | |
@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777777;}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333333;background-color:transparent;} .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555555;background-color:#e7e7e7;} .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent;}} | |
.navbar-default .navbar-link{color:#777777;}.navbar-default .navbar-link:hover{color:#333333;} | |
.navbar-inverse{background-color:#222222;border-color:#080808;}.navbar-inverse .navbar-brand{color:#999999;}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent;} | |
.navbar-inverse .navbar-text{color:#999999;} | |
.navbar-inverse .navbar-nav>li>a{color:#999999;}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent;} | |
.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#080808;} | |
.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent;} | |
.navbar-inverse .navbar-toggle{border-color:#333333;}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333333;} | |
.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff;} | |
.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010;} | |
.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#ffffff;} | |
.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} | |
.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999999;border-bottom-color:#999999;} | |
.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;} | |
@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808;} .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999999;}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent;} .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#080808;} .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent;}} | |
.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover{color:#ffffff;} | |
.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:0;}.breadcrumb>li{display:inline-block;}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc;} | |
.breadcrumb>.active{color:#999999;} | |
.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:0;}.pagination>li{display:inline;}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px;} | |
.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0;} | |
.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0;} | |
.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eeeeee;} | |
.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#428bca;border-color:#428bca;cursor:default;} | |
.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed;} | |
.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;} | |
.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0;} | |
.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0;} | |
.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;} | |
.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0;} | |
.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0;} | |
.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center;}.pager:before,.pager:after{content:" ";display:table;} | |
.pager:after{clear:both;} | |
.pager:before,.pager:after{content:" ";display:table;} | |
.pager:after{clear:both;} | |
.pager li{display:inline;}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px;} | |
.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee;} | |
.pager .next>a,.pager .next>span{float:right;} | |
.pager .previous>a,.pager .previous>span{float:left;} | |
.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed;} | |
.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;}.label[href]:hover,.label[href]:focus{color:#ffffff;text-decoration:none;cursor:pointer;} | |
.label:empty{display:none;} | |
.label-default{background-color:#999999;}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080;} | |
.label-primary{background-color:#428bca;}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9;} | |
.label-success{background-color:#5cb85c;}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44;} | |
.label-info{background-color:#5bc0de;}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5;} | |
.label-warning{background-color:#f0ad4e;}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f;} | |
.label-danger{background-color:#d9534f;}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c;} | |
.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999999;border-radius:10px;}.badge:empty{display:none;} | |
a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;} | |
.btn .badge{position:relative;top:-1px;} | |
a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#ffffff;} | |
.nav-pills>li>a>.badge{margin-left:3px;} | |
.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eeeeee;}.jumbotron h1{line-height:1;color:inherit;} | |
.jumbotron p{line-height:1.4;} | |
.container .jumbotron{border-radius:0;} | |
@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px;}.container .jumbotron{padding-left:60px;padding-right:60px;} .jumbotron h1{font-size:63px;}} | |
.thumbnail{padding:4px;line-height:1.428571429;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;display:block;}.thumbnail>img{display:block;max-width:100%;height:auto;} | |
a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca;} | |
.thumbnail>img{margin-left:auto;margin-right:auto;} | |
.thumbnail .caption{padding:9px;color:#333333;} | |
.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:0;}.alert h4{margin-top:0;color:inherit;} | |
.alert .alert-link{font-weight:bold;} | |
.alert>p,.alert>ul{margin-bottom:0;} | |
.alert>p+p{margin-top:5px;} | |
.alert-dismissable{padding-right:35px;}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit;} | |
.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}.alert-success hr{border-top-color:#c9e2b3;} | |
.alert-success .alert-link{color:#356635;} | |
.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}.alert-info hr{border-top-color:#a6e1ec;} | |
.alert-info .alert-link{color:#2d6987;} | |
.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853;}.alert-warning hr{border-top-color:#f8e5be;} | |
.alert-warning .alert-link{color:#a47e3c;} | |
.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}.alert-danger hr{border-top-color:#e6c1c7;} | |
.alert-danger .alert-link{color:#953b39;} | |
@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);} | |
.progress-bar{float:left;width:0%;height:100%;font-size:12px;color:#ffffff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-transition:width 0.6s ease;transition:width 0.6s ease;} | |
.progress-striped .progress-bar{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:40px 40px;} | |
.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} | |
.progress-bar-success{background-color:#5cb85c;}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} | |
.progress-bar-info{background-color:#5bc0de;}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} | |
.progress-bar-warning{background-color:#f0ad4e;}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} | |
.progress-bar-danger{background-color:#d9534f;}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} | |
.media,.media-body{overflow:hidden;zoom:1;} | |
.media,.media .media{margin-top:15px;} | |
.media:first-child{margin-top:0;} | |
.media-object{display:block;} | |
.media-heading{margin:0 0 5px;} | |
.media>.pull-left{margin-right:10px;} | |
.media>.pull-right{margin-left:10px;} | |
.media-list{padding-left:0;list-style:none;} | |
.list-group{margin-bottom:20px;padding-left:0;} | |
.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd;}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0;} | |
.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0;} | |
.list-group-item>.badge{float:right;} | |
.list-group-item>.badge+.badge{margin-right:5px;} | |
a.list-group-item{color:#555555;}a.list-group-item .list-group-item-heading{color:#333333;} | |
a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5;} | |
.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#428bca;border-color:#428bca;}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit;} | |
.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7;} | |
.list-group-item-heading{margin-top:0;margin-bottom:5px;} | |
.list-group-item-text{margin-bottom:0;line-height:1.3;} | |
.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:0 1px 1px rgba(0, 0, 0, 0.05);} | |
.panel-body{padding:15px;}.panel-body:before,.panel-body:after{content:" ";display:table;} | |
.panel-body:after{clear:both;} | |
.panel-body:before,.panel-body:after{content:" ";display:table;} | |
.panel-body:after{clear:both;} | |
.panel>.list-group{margin-bottom:0;}.panel>.list-group .list-group-item{border-width:1px 0;}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0;} | |
.panel>.list-group .list-group-item:last-child{border-bottom:0;} | |
.panel-heading+.list-group .list-group-item:first-child{border-top-width:0;} | |
.panel>.table{margin-bottom:0;} | |
.panel>.panel-body+.table{border-top:1px solid #dddddd;} | |
.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1;} | |
.panel-title{margin-top:0;margin-bottom:0;font-size:16px;}.panel-title>a{color:inherit;} | |
.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1;} | |
.panel-group .panel{margin-bottom:0;border-radius:0;overflow:hidden;}.panel-group .panel+.panel{margin-top:5px;} | |
.panel-group .panel-heading{border-bottom:0;}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #dddddd;} | |
.panel-group .panel-footer{border-top:0;}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd;} | |
.panel-default{border-color:#dddddd;}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd;}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#dddddd;} | |
.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#dddddd;} | |
.panel-primary{border-color:#428bca;}.panel-primary>.panel-heading{color:#ffffff;background-color:#428bca;border-color:#428bca;}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca;} | |
.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca;} | |
.panel-success{border-color:#d6e9c6;}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6;}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6;} | |
.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6;} | |
.panel-warning{border-color:#fbeed5;}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5;}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5;} | |
.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5;} | |
.panel-danger{border-color:#eed3d7;}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7;}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7;} | |
.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7;} | |
.panel-info{border-color:#bce8f1;}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1;}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1;} | |
.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1;} | |
.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} | |
.well-lg{padding:24px;border-radius:0;} | |
.well-sm{padding:9px;border-radius:0;} | |
.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);} | |
button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} | |
.clearfix:before,.clearfix:after{content:" ";display:table;} | |
.clearfix:after{clear:both;} | |
.pull-right{float:right !important;} | |
.pull-left{float:left !important;} | |
.hide{display:none !important;} | |
.show{display:block !important;} | |
.invisible{visibility:hidden;} | |
.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} | |
.affix{position:fixed;} | |
@-ms-viewport{width:device-width;}@media screen and (max-width:400px){@-ms-viewport{width:320px;}}.hidden{display:none !important;visibility:hidden !important;} | |
.visible-xs{display:none !important;}tr.visible-xs{display:none !important;} | |
th.visible-xs,td.visible-xs{display:none !important;} | |
@media (max-width:767px){.visible-xs{display:block !important;}tr.visible-xs{display:table-row !important;} th.visible-xs,td.visible-xs{display:table-cell !important;}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block !important;}tr.visible-xs.visible-sm{display:table-row !important;} th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell !important;}} | |
@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block !important;}tr.visible-xs.visible-md{display:table-row !important;} th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell !important;}} | |
@media (min-width:1200px){.visible-xs.visible-lg{display:block !important;}tr.visible-xs.visible-lg{display:table-row !important;} th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell !important;}} | |
.visible-sm{display:none !important;}tr.visible-sm{display:none !important;} | |
th.visible-sm,td.visible-sm{display:none !important;} | |
@media (max-width:767px){.visible-sm.visible-xs{display:block !important;}tr.visible-sm.visible-xs{display:table-row !important;} th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell !important;}} | |
@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important;}tr.visible-sm{display:table-row !important;} th.visible-sm,td.visible-sm{display:table-cell !important;}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block !important;}tr.visible-sm.visible-md{display:table-row !important;} th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell !important;}} | |
@media (min-width:1200px){.visible-sm.visible-lg{display:block !important;}tr.visible-sm.visible-lg{display:table-row !important;} th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell !important;}} | |
.visible-md{display:none !important;}tr.visible-md{display:none !important;} | |
th.visible-md,td.visible-md{display:none !important;} | |
@media (max-width:767px){.visible-md.visible-xs{display:block !important;}tr.visible-md.visible-xs{display:table-row !important;} th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell !important;}} | |
@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block !important;}tr.visible-md.visible-sm{display:table-row !important;} th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell !important;}} | |
@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important;}tr.visible-md{display:table-row !important;} th.visible-md,td.visible-md{display:table-cell !important;}}@media (min-width:1200px){.visible-md.visible-lg{display:block !important;}tr.visible-md.visible-lg{display:table-row !important;} th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell !important;}} | |
.visible-lg{display:none !important;}tr.visible-lg{display:none !important;} | |
th.visible-lg,td.visible-lg{display:none !important;} | |
@media (max-width:767px){.visible-lg.visible-xs{display:block !important;}tr.visible-lg.visible-xs{display:table-row !important;} th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell !important;}} | |
@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block !important;}tr.visible-lg.visible-sm{display:table-row !important;} th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell !important;}} | |
@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block !important;}tr.visible-lg.visible-md{display:table-row !important;} th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell !important;}} | |
@media (min-width:1200px){.visible-lg{display:block !important;}tr.visible-lg{display:table-row !important;} th.visible-lg,td.visible-lg{display:table-cell !important;}} | |
.hidden-xs{display:block !important;}tr.hidden-xs{display:table-row !important;} | |
th.hidden-xs,td.hidden-xs{display:table-cell !important;} | |
@media (max-width:767px){.hidden-xs{display:none !important;}tr.hidden-xs{display:none !important;} th.hidden-xs,td.hidden-xs{display:none !important;}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none !important;}tr.hidden-xs.hidden-sm{display:none !important;} th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none !important;}} | |
@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none !important;}tr.hidden-xs.hidden-md{display:none !important;} th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none !important;}} | |
@media (min-width:1200px){.hidden-xs.hidden-lg{display:none !important;}tr.hidden-xs.hidden-lg{display:none !important;} th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none !important;}} | |
.hidden-sm{display:block !important;}tr.hidden-sm{display:table-row !important;} | |
th.hidden-sm,td.hidden-sm{display:table-cell !important;} | |
@media (max-width:767px){.hidden-sm.hidden-xs{display:none !important;}tr.hidden-sm.hidden-xs{display:none !important;} th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none !important;}} | |
@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important;}tr.hidden-sm{display:none !important;} th.hidden-sm,td.hidden-sm{display:none !important;}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none !important;}tr.hidden-sm.hidden-md{display:none !important;} th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none !important;}} | |
@media (min-width:1200px){.hidden-sm.hidden-lg{display:none !important;}tr.hidden-sm.hidden-lg{display:none !important;} th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none !important;}} | |
.hidden-md{display:block !important;}tr.hidden-md{display:table-row !important;} | |
th.hidden-md,td.hidden-md{display:table-cell !important;} | |
@media (max-width:767px){.hidden-md.hidden-xs{display:none !important;}tr.hidden-md.hidden-xs{display:none !important;} th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none !important;}} | |
@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none !important;}tr.hidden-md.hidden-sm{display:none !important;} th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none !important;}} | |
@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important;}tr.hidden-md{display:none !important;} th.hidden-md,td.hidden-md{display:none !important;}}@media (min-width:1200px){.hidden-md.hidden-lg{display:none !important;}tr.hidden-md.hidden-lg{display:none !important;} th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none !important;}} | |
.hidden-lg{display:block !important;}tr.hidden-lg{display:table-row !important;} | |
th.hidden-lg,td.hidden-lg{display:table-cell !important;} | |
@media (max-width:767px){.hidden-lg.hidden-xs{display:none !important;}tr.hidden-lg.hidden-xs{display:none !important;} th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none !important;}} | |
@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none !important;}tr.hidden-lg.hidden-sm{display:none !important;} th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none !important;}} | |
@media (min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none !important;}tr.hidden-lg.hidden-md{display:none !important;} th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none !important;}} | |
@media (min-width:1200px){.hidden-lg{display:none !important;}tr.hidden-lg{display:none !important;} th.hidden-lg,td.hidden-lg{display:none !important;}} | |
.visible-print{display:none !important;}tr.visible-print{display:none !important;} | |
th.visible-print,td.visible-print{display:none !important;} | |
@media print{.visible-print{display:block !important;}tr.visible-print{display:table-row !important;} th.visible-print,td.visible-print{display:table-cell !important;} .hidden-print{display:none !important;}tr.hidden-print{display:none !important;} th.hidden-print,td.hidden-print{display:none !important;}} | |
.form-signin { | |
max-width: 330px; | |
padding: 15px; | |
margin: 0 auto; | |
} | |
.form-signin .form-signin-heading, | |
.form-signin .checkbox { | |
margin-bottom: 10px; | |
} | |
.form-signin .checkbox { | |
font-weight: normal; | |
} | |
.form-signin .form-control { | |
position: relative; | |
font-size: 16px; | |
height: auto; | |
padding: 10px; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
box-sizing: border-box; | |
} | |
.form-signin .form-control:focus { | |
z-index: 2; | |
} | |
.form-signin input[type="text"] { | |
margin-bottom: -1px; | |
border-bottom-left-radius: 0; | |
border-bottom-right-radius: 0; | |
} | |
.form-signin input[type="password"] { | |
margin-bottom: 10px; | |
border-top-left-radius: 0; | |
border-top-right-radius: 0; | |
} | |
#thumb { | |
position:absolute; | |
border: 1px solid #CDD2D6; | |
background:#f8f9fa; | |
display:none; | |
padding:3px; | |
} | |
#thumb img { | |
display:block; | |
} | |
</style> | |
<?php | |
} | |
/***************************************************************************/ | |
/* PILTIDE KOODID */ | |
/* Saad neid ise oma piltidest juurde genereerida base64 konverteriga */ | |
/* Näiteks siin: http://www.motobit.com/util/base64-decoder-encoder.asp */ | |
/* Või siin: http://www.greywyvern.com/code/php/binary2base64 */ | |
/* Või kasuta lihtsalt PHP base64_encode() funktsiooni */ | |
/* */ | |
/* IMAGE CODES IN BASE64 */ | |
/* You can generate your own with a converter */ | |
/* Like here: http://www.motobit.com/util/base64-decoder-encoder.asp */ | |
/* Or here: http://www.greywyvern.com/code/php/binary2base64 */ | |
/* Or just use PHP base64_encode() function */ | |
/***************************************************************************/ | |
$_IMAGES = array(); | |
$_IMAGES["arrow_down"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABbSURBVCjPY/jPgB8yDCkFB/7v+r/5/+r/ | |
i/7P+N/3DYuC7V93/d//fydQ0Zz/9eexKFgtsejLiv8b/8/8X/WtUBGrGyZLdH6f8r/sW64cTkdW | |
SRS+zpQbgiEJAI4UCqdRg1A6AAAAAElFTkSuQmCC"; | |
$_IMAGES["arrow_up"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABbSURBVCjPY/jPgB8yDDkFmyVWv14kh1PB | |
eoll31f/n/ytUw6rgtUSi76s+L/x/8z/Vd8KFbEomPt16f/1/1f+X/S/7X/qeSwK+v63/K/6X/g/ | |
83/S/5hvQywkAdMGCdCoabZeAAAAAElFTkSuQmCC"; | |
$_IMAGES["del"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSE | |
UVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5 | |
YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHri | |
I0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzeb | |
sDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxo | |
n/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmsl | |
vhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE | |
6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCz | |
DT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2 | |
FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V | |
7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxU | |
c3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg=="; | |
$_IMAGES["archive"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJmSURBVDjLhZNNS5RRGIav8+HMvDNO5ZhO | |
YqXQF2FgVNRCCKM2EbQ1ok2b/AG16F/0ge5qUwitghbWooikiIhI3AQVFER+VsyMztg7vuecp4U2 | |
ORH5wLM5cK7n5r65lYgAoJTaDhQBw/9nAfgiIgEAEWENcjiO43KSJN45J//aOI5lZGTkBtALaBFp | |
AhxNksRXq1Wp1WqNrVQqUiqVZH5+XpxzMjs7K6Ojow2Imri9Z1Dntjwo2dObZr7vpKXFoDVAwFpN | |
vR6za9du+vr6KRQKrKysEEJgbGzs5vDw8DX1/N6Rrx0HOrpfvOqnWs0CCgQkaJTJEkIAHENDFygW | |
i01mWGuP2Vw+KnT3djPUM0eLzZO4L6ikztQz6Dl2i4ePxgk+IYoylMtlQgg45+js7FyFKKUk/llh | |
evplg9zTtR8RC0AmSlGtrGCMxVqF9x5j/gRlRQLZbIbt3fvW4lwmpS0IhCA4FwgEjDForVFK/Ta9 | |
oYDa8jdmpt83Hndu86DaEQkgHgkBrXXT5QaA4FuiqI3itl4IPzHWk7G5NQUBQgISUEoBYIxpVlAr | |
le9+fCbntFY6qM2Z4BOWazFzS13UPrwjlUqzuFhtXF9NZZ0Cn7hLc59mrly+/uPQ+OO3T+6PP8W7 | |
OpH1fJ6cpLU1hUsSphcqRLlNFHK6GXD84nuvlCoDS1FrgZn28+T5zom933jzeoKpyZeY9oPceOJp | |
z1e4erbtLw/WTTBZWVpaVNmcYuvWDk6eOsPAwCCLseHOpCOfNg0vgACg1rXxSL1enzDGZAC9QSOD | |
9345nU4PrgfsWKvzRp9/jwcWfgF7VEKXfHY5kwAAAABJRU5ErkJggg=="; | |
$_IMAGES["audio"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIvSURBVDjLjZPLaxNRFIeriP+AO7Gg7nRX | |
qo1ogoKCK0Fbig8QuxKhPop04SYLNYqlKpEmQlDBRRcFFWlBqqJYLVpbq6ktaRo0aWmamUxmJpN5 | |
ZvKoP++9mmlqWuzAt7jc+X2Hcy6nDkAdhXxbCI2Epv+wlbDeyVUJGm3bzpVKpcVyuYyVIPcIBAL3 | |
qiXVgiYaNgwDpmk6qKoKRVEgCAKT8DyPYDDoSCrhdYHrO9qzkdOQvp+E+O04hC+tED63gBs+QiDn | |
hQgTWJYFWiQUCv2RUEH/g4YNXwdcT/VEJ6xkF8zEDRixq1CnriD94SikH08gikJNS2wmVLDwybON | |
H3GbNt8DY+YMrDk/tGkvhOFmKPE+pxVJkpDJZMBx3JJAHN+/MTPq8amxdtj8fWjhwzB+diH5ag9y | |
8V6QubDhUYmmaWwesiwvCYRRtyv9ca9oc37kk3egTbbBiPowP+iGOHGT0A1h7BrS43ehiXHous5E | |
joCEx3IzF6FMnYMcPgs95iOCW1DDXqTfnEBqsBnRR9shTvYibyhsiBRHwL13dabe7r797uHOx3Kk | |
m1T2IDfhhTRyAfMDh5Aauox8Ns5aKRQKDNrSsiHSZ6SHoq1i9nkDuNfHkHi2D9loHwtSisUig4ZX | |
FaSG2pB8cZBUPY+ila0JV1Mj8F/a3DHbfwDq3Mtlb12R/EuNoKN10ylLmv612h6swKIj+CvZRQZk | |
0ou1hMm/OtveKkE9laxhnSvQ1a//DV9axd5NSHlCAAAAAElFTkSuQmCC"; | |
$_IMAGES["code"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHtSURBVDjLjZM9T9tQFIYpQ5eOMBKlW6eW | |
IQipa8RfQKQghEAKqZgKFQgmFn5AWyVDCipVQZC2EqBWlEqdO2RCpAssQBRsx1+1ndix8wFvfW6w | |
cUhQsfTI0j33PD7n+N4uAF2E+/S5RFwG/8Njl24/LyCIOI6j1+v1y0ajgU64cSSTybdBSVAwSMmm | |
acKyLB/DMKBpGkRRZBJBEJBKpXyJl/yABLTBtm1Uq1X2JsrlMnRdhyRJTFCpVEAfSafTTUlQoFs1 | |
luxBAkoolUqQZbmtJTYTT/AoHInOfpcwtVtkwcSBgrkDGYph+60oisIq4Xm+VfB0+U/P0Lvj3NwP | |
GfHPTcHMvoyFXwpe7UmQtAqTUCU0D1VVbwTPVk5jY19Fe3ZfQny7CE51WJDXqpjeEUHr45ki9rIq | |
a4dmQiJfMLItGEs/FcQ2ucbRmdnSYy5vYWyLx/w3EaMfLmBaDpMQvuDJ65PY8Dpnz3wpYmLtApzc | |
rIAqmfrEgdZH1grY/a36w6Xz0DKD8ES25/niYS6+wWE8mWfByY8cXmYEJFYLkHUHtVqNQcltAvoL | |
D3v7o/FUHsNvzlnwxfsCEukC/ho3yUHaBN5Buo17Ojtyl+DqrnvQgUtfcC0ZcAdkUeA+ye7eMru9 | |
AUGIJPe4zh509UP/AAfNypi8oj/mAAAAAElFTkSuQmCC"; | |
$_IMAGES["database"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHVSURBVDjLjZPLaiJBFIZNHmJWCeQdMuT1 | |
Mi/gYlARBRUkao+abHUhmhgU0QHtARVxJ0bxhvfGa07Of5Iu21yYFPyLrqrz1f+f6rIRkQ3icca6 | |
ZF39RxesU1VnAVyuVqvJdrvd73Y7+ky8Tk6n87cVYgVcoXixWNByuVSaTqc0Ho+p1+sJpNvtksvl | |
UhCb3W7/cf/w+BSLxfapVIqSySRlMhnSdZ2GwyHN53OaTCbU7/cFYBgG4RCPx/MKub27+1ur1Xqj | |
0YjW6zWxCyloNBqUSCSkYDab0WAw+BBJeqLFtQpvGoFqAlAEaZomuc0ocAQnnU7nALiJ3uh8whgn | |
ttttarVaVCgUpCAUCgnQhMAJ+gG3CsDZa7xh1mw2ZbFSqYgwgsGgbDQhcIWeAHSIoP1pcGeNarUq | |
gFKpJMLw+/0q72azkYhmPAWIRmM6AGbXc7kc5fN5AXi9XgWACwAguLEAojrfsVGv1yV/sVikcrks | |
AIfDIYUQHEAoPgLwT3GdzWYNdBfXh3xwApDP5zsqtkoBwuHwaSAQ+OV2u//F43GKRCLEc5ROpwVo | |
OngvBXj7jU/wwZPPX72DT7RXgDfIT27QEgvfKea9c3m9FsA5IN94zqbw9M9fAEuW+zzj8uLvAAAA | |
AElFTkSuQmCC"; | |
$_IMAGES["directory"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLxZO7ihRBFIa/6u0ZW7GHBUV0 | |
UQQTZzd3QdhMQxOfwMRXEANBMNQX0MzAzFAwEzHwARbNFDdwEd31Mj3X7a6uOr9BtzNjYjKBJ6ni | |
cP7v3KqcJFaxhBVtZUAK8OHlld2st7Xl3DJPVONP+zEUV4HqL5UDYHr5xvuQAjgl/Qs7TzvOOVAj | |
xjlC+ePSwe6DfbVegLVuT4r14eTr6zvA8xSAoBLzx6pvj4l+DZIezuVkG9fY2H7YRQIMZIBwycmz | |
H1/s3F8AapfIPNF3kQk7+kw9PWBy+IZOdg5Ug3mkAATy/t0usovzGeCUWTjCz0B+Sj0ekfdvkZ3a | |
bBv+U4GaCtJ1iEm6ANQJ6fEzrG/engcKw/wXQvEKxSEKQxRGKE7Izt+DSiwBJMUSm71rguMYhQKr | |
BygOIRStf4TiFFRBvbRGKiQLWP29yRSHKBTtfdBmHs0BUpgvtgF4yRFR+NUKi0XZcYjCeCG2smkz | |
LAHkbRBmP0/Uk26O5YnUActBp1GsAI+S5nRJJJal5K1aAMrq0d6Tm9uI6zjyf75dAe6tx/SsWeD/ | |
/o2/Ab6IH3/h25pOAAAAAElFTkSuQmCC"; | |
$_IMAGES["graphics"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH8SURBVDjLjZPLaxNRFIfHLrpx10WbghXx | |
H7DQx6p14cadiCs31Y2LLizYhdBFWyhYaFUaUxLUQFCxL61E+0gofWGLRUqGqoWp2JpGG8g4ybTJ | |
JJm86897Ls4QJIm98DED9/6+mXNmjiAIwhlGE6P1P5xjVAEQiqHVlMlkYvl8/rhQKKAUbB92u91W | |
SkKrlcLJZBK6rptomoZoNApFUbhElmU4HA4u8YzU1PsmWryroxYrF9CBdDqNbDbLr0QikUAsFkM4 | |
HOaCVCoFesjzpwMuaeXuthYcw4rtvG4KKGxAAgrE43FEIhGzlJQWxE/RirQ6i8/T7XjXV2szBawM | |
8yDdU91GKaqqInQgwf9xCNmoB7LYgZn+Oud0T121KfiXYokqf8X+5jAyR3NQvtzEq96z4os7lhqz | |
ieW6TxJN3UVg8yEPqzu38P7xRVy+cPoay52qKDhUf0HaWsC3xRvstd3Qvt9mTWtEOPAJf/+L8oKA | |
fwfLnil43z7Bkusqdr2X4Btvg1+c5fsVBZJ/H9aXbix/2EAouAVx4zVmHl2BtOrkPako2DsIwule | |
xKhnG/cmfbg+uIbukXkooR/I5XKcioLu+8/QNTyGzqE36OidQNeDJayLe7yZBuUEv8t9iRIcU6Z4 | |
FprZ36fTxknC7GyCBrBY0ECSE4yzAY1+gyH4Ay9cw2Ifwv9mAAAAAElFTkSuQmCC"; | |
$_IMAGES["image"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGWSURBVBgZpcE/a1NhGMbh3/OeN56cKq2D | |
p6AoCOKmk4uCn8DNycEOIojilr2TaBfRzVnESQR3Bz+FFDoWA2IjtkRqmpyc97k9qYl/IQV7XSaJ | |
w4g0VlZfP0m13dwepPbuiH85fyhyWCx4/ubxjU6kkdxWHt69VC6XpZlFBAhwJgwJJHAmRKorbj94 | |
ewvoRBrbuykvT5R2/+lLTp05Tp45STmEJYJBMAjByILxYeM9jzr3GCczGpHGYAQhRM6fO8uFy1fJ | |
QoaUwCKYEcwwC4QQaGUBd36KTDmQ523axTGQmEcIEBORKQfG1ZDxcA/MkBxXwj1ggCQyS9TVAMmZ | |
iUxJ8Ln/kS+9PmOvcSW+jrao0mmMH5bzHfa+9UGBmciUBJ+2Fmh1h+yTQCXSkJkdCrpd8btIwwEJ | |
QnaEkOXMk7XaiF8CUxL/JdKQOwb0Ntc5SG9zHXQNd/ZFGsaEeLa2ChjzXQcqZiKNxSL0vR4unVww | |
MENMCATib0ZdV+QtE41I42geXt1Ze3dlMNZFdw6Ut6CIvKBhkjiM79Pyq1YUmtkKAAAAAElFTkSu | |
QmCC"; | |
$_IMAGES["presentation"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHeSURBVDjLjZO/i1NBEMc/u+/lBYxiLkgU | |
7vRstLEUDyxtxV68ykIMWlocaGHrD1DxSAqxNf4t115jo6DYhCRCEsk733s7u2PxkuiRoBkYdmGZ | |
z3xndsaoKgDGmC3gLBDxbxsA31U1AKCqzCBXsywbO+e8iOgqz7JM2+32W+AiYFX1GGDHOeen06mm | |
abrwyWSio9FI+/2+ioj2ej3tdDoLiJm+bimAhgBeUe9RmbkrT5wgT97RaDQoioIQAt1ud7/Var1h | |
+uq+/s9+PLilw+FwqSRgJ1YpexHSKenHF4DFf/uC3b7CydsPsafraO5IkoTxeEwIARGh2WwCYNUJ | |
AOmHZ5y4eY/a7h4hPcIdHvDz/fMSnjviOCZJEiqVCtVqdfEl8RygHkz9DLZWQzOHisd9OizfckcU | |
RRhjMMbMm14CQlEC/NfPjPd2CSJQCEEEDWYBsNZijFkaCqu5Ky+blwl5geaOUDg0c8TnNssSClkE | |
R1GEtXYZcOruI6ILl1AJqATirW02Hr8sFThBVZfklyXMFdQbbDzdXzm78z4Bx7KXTcwdgzs3yizu | |
zxAhHvVh4avqBzAzaQa4JiIHgGE9C3EcX7ezhVIgeO9/AWGdYO/9EeDNX+t8frbOdk0FHhj8BvUs | |
fP0TH5dOAAAAAElFTkSuQmCC"; | |
$_IMAGES["spreadsheet"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIpSURBVDjLjZNPSFRRFMZ/9707o0SOOshM | |
0x/JFtUmisKBooVEEUThsgi3KS0CN0G2lagWEYkSUdsRWgSFG9sVFAW1EIwQqRZiiDOZY804b967 | |
954249hUpB98y/PjO5zzKREBQCm1E0gDPv9XHpgTEQeAiFCDHAmCoBhFkTXGyL8cBIGMjo7eA3YD | |
nog0ALJRFNlSqSTlcrnulZUVWV5elsXFRTHGyMLCgoyNjdUhanCyV9ayOSeIdTgnOCtY43DWYY3j | |
9ulxkskkYRjinCOXy40MDAzcZXCyVzZS38MeKRQKf60EZPXSXInL9y+wLZMkCMs0RR28mJ2grSWJ | |
Eo+lH9/IpNPE43GKxSLOOYwxpFIpAPTWjiaOtZ+gLdFKlJlD8u00xWP8lO/M5+e5efEB18b70Vqj | |
lMJai++vH8qLqoa+nn4+fJmiNNPCvMzQnIjzZuo1V88Ns3/HAcKKwfd9tNZorYnFYuuAMLDMfJ3m | |
+fQznr7L0Vk9zGpLmezB4zx++YggqhAFEZ7n4ft+HVQHVMoB5++cJNWaRrQwMjHM9qCLTFcnJJq5 | |
9WSIMLAopQDwfR/P8+oAbaqWK2eGSGxpxVrDnvQ+3s++4tPnj4SewYscUdUgIiilcM41/uXZG9kN | |
z9h9aa+EYdjg+hnDwHDq+iGsaXwcZ6XhsdZW+FOqFk0B3caYt4Bic3Ja66NerVACOGttBXCbGbbW | |
rgJW/VbnXbU6e5tMYIH8L54Xq0cq018+AAAAAElFTkSuQmCC"; | |
$_IMAGES["textdocument"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIdSURBVDjLjZO7a5RREMV/9/F9yaLBzQY3 | |
CC7EpBGxU2O0EBG0sxHBUitTWYitYCsiiJL0NvlfgoWSRpGA4IMsm43ZXchmv8e9MxZZN1GD5MCB | |
W8yce4aZY1QVAGPMaWAacPwfm8A3VRUAVJWhyIUsy7plWcYQgh7GLMt0aWnpNTADWFX9Q2C+LMu4 | |
s7Oj/X5/xF6vp51OR1utloYQtNls6vLy8kjE3Huz9qPIQjcUg/GZenVOokIEiSBBCKUSQ+TFwwa1 | |
Wo2iKBARVlZW3iwuLr7izssPnwZ50DLIoWz9zPT+s/fabrf/GQmY97GIIXGWp28/08si5+oV1jcG | |
TCSO6nHH2pddYqmkaUq320VECCFQr9cBsBIVBbJcSdXQmK7Q6Qsnq54sj2gBplS896RpSpIkjI2N | |
jVZitdh7jAOSK6trXcpC2GjlfP1esHD+GDYozjm893jvSZJkXyAWe+ssc6W5G9naLqkaw/pGxBrl | |
1tVpJCrWWpxzI6GRgOQKCv2BYHPl5uUatROeSsVy7eIkU9UUiYoxBgDnHNbagw4U6yAWwpmphNvX | |
T6HAhAZuLNRx1iDDWzHG/L6ZEbyJVLa2c54/PgsKgyzw5MHcqKC9nROK/aaDvwN4KYS7j959DHk2 | |
PtuYnBUBFUEVVBQRgzX7I/wNM7RmgEshhFXAcDSI9/6KHQZKAYkxDgA5SnOMcReI5kCcG8M42yM6 | |
iMDmL261eaOOnqrOAAAAAElFTkSuQmCC"; | |
$_IMAGES["unknown"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC4SURBVCjPdZFbDsIgEEWnrsMm7oGGfZro | |
hxvU+Iq1TyjU60Bf1pac4Yc5YS4ZAtGWBMk/drQBOVwJlZrWYkLhsB8UV9K0BUrPGy9cWbng2CtE | |
EUmLGppPjRwpbixUKHBiZRS0p+ZGhvs4irNEvWD8heHpbsyDXznPhYFOyTjJc13olIqzZCHBouE0 | |
FRMUjA+s1gTjaRgVFpqRwC8mfoXPPEVPS7LbRaJL2y7bOifRCTEli3U7BMWgLzKlW/CuebZPAAAA | |
AElFTkSuQmCC"; | |
$_IMAGES["vectorgraphics"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIWSURBVDjLhZNPbxJRFMWhRrYu3NrExIUb | |
dzWte6M7d34Eo2Hjxm8gwZUxIYEARUKAWgwbV0BpxAW11bpQFrCoCVEMDplhQMow782/enx3WsiU | |
0jrJ2bz7zu+9e95cHwAfSXzXhFaEVv+j60JLM58HsGIYxsi27SPHcbBIoo5oNBrxQryAVTJPJhPo | |
uu6q0+mgVquh0WhAlmUX0uv1EIvFZpCp2U8A2sA5h2maYIyhUChA0zTU63UoiuICaJ0OSSaTx5B5 | |
AJnpqqVSCbmNTWxVt9FsNtHv98+05GYyD7AsC5VKBZvFd/j2k6Etc6gjHfLgELKiujeRJGkxQGSA | |
YDCIx8+eI/ORIb3Lkf0sWvmio9aaoC2NoQ7+QFUHCwFr5XIZ8bfvhZFhq2XgU9tEb2Tj99DCgcTx | |
9YeOg64GZTCGPQdYEnpaLBbxZl9HfIejo1rg5nGvti3CMyxouonhIYM8ZG7NBWSz2YepVKobiUR+ | |
UXjrwry+wzBm9qnAqD03YHohbsASUP+ly2u+XC7XzmQyt9LpdJc2xuscr0ULU9NUFC6JDiFRCy4g | |
n88/EWqFw+EEmfL7HK8+8FOAqdmrWYjC7E8kElcCgcAdWmx2LbzY5mCmc+YWXp33H/w1LQehKhPP | |
ZuK8mTjR0QxwArktQtKpsLHHEarwC81ir+ZOrwewTBCiXr157/7d0PfqjQcvH10w1jT6y/8A/nHJ | |
HcAgm2AAAAAASUVORK5CYII="; | |
$_IMAGES["video"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIfSURBVDjLpZNPaBNBGMXfbrubzBqbg4kL | |
0lJLgiVKE/AP6Kl6UUFQNAeDIAjVS08aELx59GQPAREV/4BeiqcqROpRD4pUNCJSS21OgloISWME | |
Z/aPb6ARdNeTCz92mO+9N9/w7RphGOJ/nsH+olqtvg+CYJR8q9VquThxuVz+oJTKeZ63Uq/XC38E | |
0Jj3ff8+OVupVGLbolkzQw5HOqAxQU4wXWWnZrykmYD0QsgAOJe9hpEUcPr8i0GaJ8n2vs/sL2h8 | |
R66TpVfWTdETHWE6GRGKjGiiKNLii5BSLpN7pBHpgMYhMkm8tPUWz3sL2D1wFaY/jvnWcTTaE5Dy | |
jMfTT5J0XIAiTRYn3ASwZ1MKbTmN7z+KaHUOYqmb1fcPiNa4kQBuyvWAHYfcHGzDgYcx9NKrwJYH | |
CAyF21JiPWBnXMAQOea6bmn+4ueYGZi8gtymNVobF7BG5prNpjd+eW6X4BSUD0gOdCpzA8MpA/v2 | |
v15kl4+pK0emwHSbjJGBlz+vYM1fQeDrYOBTdzOGvDf6EFNr+LYjHbBgsaCLxr+moNQjU2vYhRXp | |
gIUOmSWWnsJRfjlOZhrexgtYDZ/gWbetNRbNs6QT10GJglNk64HMaGgbAkoMo5fiFNy7CKDQUGqE | |
5r38YktxAfSqW7Zt33l66WtkAkACjuNsaLVaDxlw5HdJ/86aYrG4WCgUZD6fX+jv/U0ymfxoWVZo | |
muZyf+8XqfGP49CCrBUAAAAASUVORK5CYII="; | |
$_IMAGES["webpage"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJwSURBVDjLjZPdT1JhHMetvyO3/gfLKy+6 | |
8bLV2qIAq7UyG6IrdRPL5hs2U5FR0MJIAqZlh7BVViI1kkyyiPkCyUtztQYTYbwJE8W+Pc8pjofK | |
1dk+OxfP+X3O83srAVBCIc8eQhmh/B/sJezm4niCsvX19cTm5uZWPp/H3yDnUKvVKr6ELyinwWtr | |
a8hkMhzJZBLxeBwrKyusJBwOQ6PRcJJC8K4DJ/dXM04DOswNqNOLybsRo9N6LCy7kUgkEIlEWEE2 | |
mwX9iVar/Smhglqd8IREKwya3qhg809gPLgI/XsrOp/IcXVMhqnFSayurv6RElsT6ZCoov5u1fzU | |
VwvcKRdefVuEKRCA3OFHv2MOxtlBdFuaMf/ZhWg0yt4kFAoVCZS3Hd1gkpOwRt9h0LOES3YvamzP | |
cdF7A6rlPrSbpbhP0kmlUmw9YrHYtoDku2T6pEZ/2ICXEQ8kTz+g2TkNceAKKv2nIHachn6qBx1M | |
I5t/Op1mRXzBd31AiRafBp1vZyEcceGCzQ6p24yjEzocGT6LUacS0iExcrkcK6Fsp6AXLRnmFOjy | |
PMIZixPHmAAOGxZQec2OQyo7zpm6cNN6GZ2kK1RAofPAr8GA4oUMrdNNkIw/wPFhDwSjX3Dwlg0C | |
Qy96HreiTlcFZsaAjY0NNvh3QUXtHeHcoKMNA7NjqLd8xHmzDzXDRvRO1KHtngTyhzL4SHeooAAn | |
KMxBtUYQbGWa0Dc+AsWzSVy3qkjeItLCFsz4XoNMaRFFAm4SyTXbmQa2YHQSGacR/pAXO+zGFif4 | |
JdlHCpShBzstEz+YfJtmt5cnKKWS/1jnAnT1S38AGTynUFUTzJcAAAAASUVORK5CYII="; | |
$_IMAGES["7z"] = $_IMAGES["archive"]; | |
$_IMAGES["as"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIqSURBVDjLjZPNi1JRGMan/ooWDbSKNq2s | |
gZqh0UgqKVoOU7OooEWLgZi+JIaYGolaRAS60JXuxJWoIC6E0KAgAzGbCqpFmua393qv9+PoPJ33 | |
THPHcYy68HDPvee8v/e8zznvFIApEn8Octm4Zv6hQ1z7rbgRgE3X9S5jbDgYDDBJfB5er/flKGQU | |
MEPBiqJAVVVLkiSh0+mgVqsJSLVahc/nsyDbwfsIQAs0TYNhGNDevIX29BnUxx50u13U63UB6Pf7 | |
oCR+v38LMg6gYCOdhnb1GgaeVajnL0CWZTQajT0lCU/GAea379AWFsHu3kJ/4TLUO/etUprNpthJ | |
pVL5C4Ax6I/WwVbvoe9+AMazMvrHzSMI7YT8aLVakwHs8xdoS1eguC7CeJUBa3fEwkKhgEwmI+pP | |
8/Ly+fxkgP78BZj7NgYP3ZDn7FDXPGJhKpVCuVwW/tA7HA7vBawdPrJEmZl7hQc7IJ2YtwCxWEyU | |
IgzmCgaDuwF157kDlVOnC+bKMmS7E8a79zA3PsEs/0Q8Hkc2m4VpmkLkB5URjUa3AMpZ1+uew/lV | |
mnMw/cZ1qOtPrGOirKVSCclk0gKQQqGQOFYB6NnPKPKsfdNYvgnJdQnsV23XWRMkkUig3W6LMSkQ | |
COyUIJ+ch3R8Fj+O2j6YHzc2J/VAsVgUEBpHIhHkcjkaDy0P/hh5jBuk0sQ4gO4AXSIa09b595Cv | |
7YnuHQFME+Q/2nlb1PrTvwGo2K3gWVH3FgAAAABJRU5ErkJggg=="; | |
$_IMAGES["avi"] = $_IMAGES["video"]; | |
$_IMAGES["bz2"] = $_IMAGES["archive"]; | |
$_IMAGES["c"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHdSURBVDjLjZNLS+NgFIad+R0KwuzcSQdd | |
unTWXraKA4KCuFKcWYqgVbE4TKJWNyqC2oHKoDBeEBF04UpFUVQqUoemSVOTJr2lrb5+5xsTUy+j | |
gYdc3yfnnOQrAVBCsK2U4WFUvUE546OTcwk82WxWz+fzt4VCAS/B7kMQhB9uiVtQReFkMolUKuWQ | |
SCSgaRpkWeYSSZIgiqIjscMfSEAPZDIZWJbF94RpmtB1HYqicEE6nQa9xO/3/5OQoM57/qm2a3PG | |
tyzDtxzF/FYMe6c6F1DAMAzEYrFnLfGZ1A9devqC8o2wpmL8jwJhRcbw7ygGAxJYS7xvuxVVVXkl | |
kUjkUdAshgP+DRVfureXbPPcuoKe2b/QDKtIQpXQPOLx+KOgf0nGCCu9smHiu7u8IGuDBHRsS6gd | |
mgmJHEHfLwn9wSgqagc6Xvt8RC6X48MlCeEI2ibDIS8TVDYGBHfAO3ONowvTOacqSEBQNY6gpvOk | |
p3cxgq8/Q8ZxyISWsDAwfY32sSscnhk8SFAFBIWLBPQZq1sOvjX5LozOqTBaxSu0jF5iYVV+FnZT | |
JLB/pN0DDTv7WlHvtuQpLwrYxbv/DfIJt47gQfKZDShFN94TZs+afPW6BGUkecdytqGlX3YPTr7m | |
omspN0YAAAAASUVORK5CYII="; | |
$_IMAGES["cab"] = $_IMAGES["archive"]; | |
$_IMAGES["cpp"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH/SURBVDjLjZPNaxNRFMWrf4cFwV13JVKX | |
Luta61apIChIV0rblUqhjYpRcUaNboxIqxFTQgVti4hQQTe1C7FFSUmnmvmM85XJzCSpx3efzmTS | |
RtqBw7yZ9+5v7rl3bg+AHhK7DjClmAZ20UGm/XFcApAKgsBqNptbrVYL3cT2IQjCnSQkCRig4Fqt | |
Bs/zYtm2DdM0oaoqh8iyDFEUY0gUvI8AdMD3fYRhyO8k13VhWRY0TeOAer0O+kg2m/0LIcDx9LdD | |
gxff5jJzKjJzCmbe6fi0anEABTiOA13Xd1jiNTlxfT01UVB/CfMG7r/WILxScaOo4FpeBrPEfUdW | |
DMPgmVQqlTbgtCjls4sGjl16PxuRny5oGH3yA7oZoPjR4BDbqeHlksLrUa1W24DJWRU3Wer9Qw/G | |
k+kVmA2lGuDKtMQzsVwfl6c3eE3IUgyYeCFjsqCgb3DqQhJwq/gTY7lyV61Jdhtw7qFUSjNA/8m8 | |
kASkc5tYXnN4BvTs1kO23uAdIksx4OjI19Grzys4c7fkfCm5MO0QU483cf5eGcurNq8BWfD8kK11 | |
HtwBoDYeGV4ZO5X57ow8knBWLGP49jqevVF5IKnRaOxQByD6kT6smFj6bHb0OoJsV1cAe/n7f3PQ | |
RVsx4B/kMCuQRxt7CWZnXT69CUAvQfYwzpFo9Hv/AD332dKni9XnAAAAAElFTkSuQmCC"; | |
$_IMAGES["cs"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJOSURBVDjLjZPbaxNBFMarf4cFwb9AIgXB | |
R18Enyw+i1gs4g01kphSlPjQeAtNzNqGNLVpNCGhEvBS21Rr0ZIK6ovFiKbNbXNpdpNsstncUz9n | |
NiauErEDHwMz8/1mzjlz+gD0UZGxh0hFNPAf7SXa3fUpAKparVZoNpvbrVYLvUT2YbFYTEqIEjBA | |
zZIkoVwud1UsFiEIAjKZjAxJp9NgGKYL6Zh3UQA9UK1WUa/X5ZmqVCqhUCiA4zgZUKlUQC+xWq1t | |
CAUM3v6+74hu2cH4eUz6OcwFcvgYEmUANYiiiFF3Aq5XHIJRCeqHLOJbFcg5OW6Mqm495fL2NznY | |
l7OwveYxsZSF6QUHEpIc9+eQgOvuFL6EMjC6wrg4GZZfIwOGbazX8TaPY/qAr5Ms72oOBt8WknwV | |
em8KWmcCY0/S0E1HcXYyhjNMBAYH2waYF8izl3I4eGLqmjLjz9by+PRNxCMS0k0C0c+yMDjj0Mwm | |
MOGJ4+Vqtg0Yn+dwf5HH/sG75/4uWzAiwbfCQ+dMYSGQxdhMHMPmMFY+8MgX623AiDu9+YAADg35 | |
LErzHU8SGkcSI4+T0DoSuGRnoZ5mcdIUwdC9zd85OHpjQzP+nMOVmZj4NSZBKNVh9LbN6xslnGai | |
8CxmMP+Ol81criwntgugZTysDmovTEXEUVcKV8lt520s5kjJvP4MTpkjyApVXCZmvTWKRqMh6w9A | |
5yO9Xy9ijUgZCi1lL/UEkMUf/+qDHtruAn5BDpAvXKYbOzGTsyW5exWAfgrZQTt3RFu//yfHVsX/ | |
fi5tjwAAAABJRU5ErkJggg=="; | |
$_IMAGES["css"] = $_IMAGES["code"]; | |
$_IMAGES["doc"] = $_IMAGES["textdocument"]; | |
$_IMAGES["docx"] = $_IMAGES["textdocument"]; | |
$_IMAGES["exe"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEkSURBVCjPbdE9S0IBGIbhxxobWxP8D8r5 | |
I60RLg0NNTS21VBRQwg1aA4VOAWBpBVCFhKUtkVJtPQx9GFFWh49x3P0bvAjjsWzXrzvcAtpREEZ | |
fQtoACEkpKBVdpouv7NYi3SJkAynWcXExKTCJ6+4PLPeIZJPhksdmzp1vilTwqVGlWhEgR6wsbGp | |
U+OLt94rGfJ1gIOLi4OFSYV3Sjx5QXdtkiHFx//gjiwlTshyT5LV3T8gwy3HFLnhkCuWmB3qA0Uu | |
2WGOZVIUmN/ru5CiwAsLNLCI8cg+i3hAggMeiNOgwQbXRJnwghoX5DkiTow0OcLJ8HAbtLpkkzwJ | |
CuTY4pQppgeFFLJNtxMrzSRFtlnhvDXO6Fk7ll8hb+wZxpChoPzoB6aiXIYcSLDWAAAAAElFTkSu | |
QmCC"; | |
$_IMAGES["gz"] = $_IMAGES["archive"]; | |
$_IMAGES["gif"] = $_IMAGES["image"]; | |
$_IMAGES["h"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHtSURBVDjLjZNLS9xQFMe138C9A/0OynyB | |
UjeFQjduROi2MMtCEalS0ToLEdQMdEShoKDWRymKigWxII7PhaB9aBFUJjHJpHlnnvbfe27NJcVI | |
DfwIyT3nd885cOoA1BHsaWQ0MZL/4SHjgciLCJpKpZJVrVava7Ua4mDnkCRpKCqJCpKU7HkefN8X | |
2LYN0zShqiqXKIqCTCYjJGFyPQkooFgsolwu8zfhui4sy4KmaVwQBAHokmw2+1cSClpSUmr12MP7 | |
LQunii8klOA4DnRdv9USn0koePRiJDW+aTGBjcOLgAewlnjfYSuFQoFXIsvybQF9jG2avIKFPQtz | |
OyZmcyZMtywkVAnNwzCMeMG7jV+YyFmQ1g30L2kYWitAWtZFJdQOzYREsYLhzwZGGF+OHez/9PD2 | |
k4aeeYUHVyoVPheSELGCwRUdA+zG/VMPeycu3iyo6J5WxDxIQFA1QtCauUwPrOpIPh/vSC+qSC/q | |
PHn3u4uu2Su8nsrzZKqAoOR/BO2j+Q+DTPC0/2CdSu79qOLVlIyXk3l0zsjomJYxv6ELQYgQPOk7 | |
a2jpOnmcaG57tvuD3fzNxc5XB9sEm0XuyMb5VcCriBI7A/bz9117EMO1ENxImtmAfDq4TzKLdfn2 | |
RgQJktxjnUNo9RN/AFmTwlP7TY1uAAAAAElFTkSuQmCC"; | |
$_IMAGES["htm"] = $_IMAGES["webpage"]; | |
$_IMAGES["html"] = $_IMAGES["webpage"]; | |
$_IMAGES["iso"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIsSURBVDjLjZNfa9NQGIdnP4cDv8Nkn8PL | |
6UfwSgQZOoSBYkUvZLN1lMFArQyHrsIuWkE3ug2t1K3O0LXrZotdlzZp0qZp/qc9P8852qyyigs8 | |
F8nJ7znveZN3DMAYg14XKROUyf9wiRIKckOCCcdxNN/3+71eD6Og64hEInPDkmHBJAsbhgHTNAM6 | |
nQ7a7TYkSeKSer2OaDQaSAbhC7efJGY28gZWPrUQTyt4l2lCKLfR7XahaRpkWeYCy7LANonFYr8l | |
qzt26PUXIxzf7pCfioeS5EI2fVQkG+GVH0hlRVqFjmazeeZIvCc0PBXf1ohu96GZBEnBQMMmcAjg | |
eH3cWRKQyTf4URRF4ZWIongqoOFURXZpUEOt1YNm+BzDI6AeFKo6IqsF3g9d13k/VFU9FSytK9V8 | |
zUJiR0WbBh+/2cVich+trodvNQeFEwvTsa/8C7Dzs54wUSBYeN+ofq+ageDZmoBX64dQdRcbByaE | |
qoGbTzPwPA+u63IJIxDMrR2nDkUTR6oPxSJ8ZxYuNlxsHtnYLal48DIH+om5gMGqCQSP3lam7i+X | |
SMfp40AFsjWCrbKHdMlGpeng2uxHpHM1XgGDhf8S3Fsuhe4+3w9PL+6RvbKGguhAODaRLSq4OvsB | |
L5JFvutAMCAQDH6kK9fnZyKJAm4tZHFj/jMexnPYzJ3w0kdxRsBu6EPyrzkYQT8Q/JFcpqWabOE8 | |
Yfpul0/vkGCcSc4xzgPY6I//AmC87eKq4rrzAAAAAElFTkSuQmCC"; | |
$_IMAGES["java"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVDjLjZPJa1NRFIera/8ECy7dV7tx | |
kb2UOoDgzo0R3YuLrFwWIVglWQRtN0GCLkIixJDJQJKGQOYBA4akmec5eSFT/XnPsXlNsWIffOTd | |
d3O+e+6PezcAbBDiuS7YEmz/hxuCq3LdmmBrOp32F4vFyXK5xEWIeWg0mnfrknXBNhWPx2NIkiQz | |
GAzQ6/XQaDRYUqvVoNVqZQkXGwyGm2q1+k00GkUkEkE4HEYwGGQCgQDS6TSKxSILJpMJaBGdTvdH | |
YjKZHvp8vuNsNot6vc7QavRLq1UqFcTjcbhcLrmLFZyJ2+0u9Pt9hC1f8OHpDt4/uoO3928zmscK | |
HD5/gKPPB8jn8yxpNpuoVqtnAqPRiOFwiPGgB/fhPr7uvcJH5S4Ont3Dp5dP8G3/NX4cfedCi8XC | |
eXQ6nTOBzWaT5vM5J0yTFFy325WhtmkbhN1ux2g04gVlgcfj+UmDUqkEh8OBcrnM7xRaLpdDIpHg | |
cSqVYihEYr0DL61O6fv9fhQKBd4vhUrpk6DdbsNsNrN8Nptxt7JApVK9EMW9TCbDEgqI2qUOSELv | |
JPF6vbw9Kj4nEM81pVJ5V6/XH8diMQ6IaLVaLAmFQnA6nfyNslohC05P4RWFQrFLHVitVoYSF2cE | |
yWSSgxOn9Bx/CWggPv761z24gBNZcCq5JQKSaOIyxeK/I769a4JNklziOq+gq7/5Gx172kZga+XW | |
AAAAAElFTkSuQmCC"; | |
$_IMAGES["jpg"] = $_IMAGES["image"]; | |
$_IMAGES["jpeg"] = $_IMAGES["image"]; | |
$_IMAGES["js"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHdSURBVDjLjZNPaxNBGIdrLwURLznWgkcv | |
IrQhRw9FGgy01IY0TVsQ0q6GFkT0kwjJId9AP4AHP4Q9FO2hJ7El2+yf7OzMbja7Sf0578QdNybF | |
LjwszLu/Z2femZkDMEfI54FkRVL4Dw8l8zqXEawMBgM2HA6vR6MRZiHraDabH7KSrKBA4SAIEIah | |
xvd9eJ6HbrerJKZpotVqaUkavkMC+iCKIsRxrN6EEAKMMViWpQT9fh/0k3a7PZZkBUPmqXAKCSjA | |
OYdt21NLUj1JBYW7C6vi6BC8vKWKQXUXQcNA5Nh6KY7jqJl0Op1JwY/Hi7mLp/lT/uoA/OX2WLC3 | |
C9FoQBwfILKulIRmQv1wXfevwHmyuMPXS5Fv1MHrFSTmhSomnUvw/Spo3C+vg3/+pJZDPSGRFvil | |
NV+8PUZvoziKvn+d3LZvJ/BelMDevIZXK2EQCiUhtMDM53bY5rOIGXtwjU3EVz/HM5Az8eplqPFK | |
EfzLR91cOg8TPTgr3MudFx+d9owK7KMNVfQOtyQ1OO9qiHsWkiRRUHhKQLuwfH9+1XpfhVVfU0V3 | |
//k4zFwdzjIlSA/Sv8jTOZObBL9uugczuNaCP5K8bFBIhduE5bdC3d6MYIkkt7jOKXT1l34DkIu9 | |
e0agZjoAAAAASUVORK5CYII="; | |
$_IMAGES["mov"] = $_IMAGES["video"]; | |
$_IMAGES["mp3"] = $_IMAGES["audio"]; | |
$_IMAGES["mp4"] = $_IMAGES["audio"]; | |
$_IMAGES["mpeg"] = $_IMAGES["video"]; | |
$_IMAGES["mpg"] = $_IMAGES["video"]; | |
$_IMAGES["odg"] = $_IMAGES["vectorgraphics"]; | |
$_IMAGES["odp"] = $_IMAGES["presentation"]; | |
$_IMAGES["ods"] = $_IMAGES["spreadsheet"]; | |
$_IMAGES["odt"] = $_IMAGES["textdocument"]; | |
$_IMAGES["pdf"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHhSURBVDjLjZPLSxtRFIfVZRdWi0oFBf+B | |
rhRx5dKVYKG4tLhRqlgXPmIVJQiC60JCCZYqFHQh7rrQlUK7aVUUfCBRG5RkJpNkkswrM5NEf73n | |
6gxpHujAB/fOvefjnHM5VQCqCPa1MNoZnU/Qxqhx4woE7ZZlpXO53F0+n0c52Dl8Pt/nQkmhoJOC | |
dUWBsvQJ2u4ODMOAwvapVAqSJHGJKIrw+/2uxAmuJgFdMDUVincSxvEBTNOEpmlIp9OIxWJckMlk | |
oOs6AoHAg6RYYNs2kp4RqOvfuIACVFVFPB4vKYn3pFjAykDSOwVta52vqW6nlEQiwTMRBKGygIh9 | |
GEDCMwZH6EgoE+qHLMuVBdbfKwjv3yE6Ogjz/PQ/CZVDPSFRRYE4/RHy1y8wry8RGWGSqyC/nM1m | |
eX9IQpQV2JKIUH8vrEgYmeAFwuPDCHa9QehtD26HBhCZnYC8ucGzKSsIL8wgsjiH1PYPxL+vQvm5 | |
B/3sBMLyIm7GhhCe90BaWykV/Gp+VR9oqPVe9vfBTsruM1HtBKVPmFIUNusBrV3B4ev6bsbyXlPd | |
kbr/u+StHUkxruBPY+0KY8f38oWX/byvNAdluHNLeOxDB+uyQQfPCWZ3NT69BYJWkjxjnB1o9Fv/ | |
ASQ5s+ABz8i2AAAAAElFTkSuQmCC"; | |
$_IMAGES["php"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGsSURBVDjLjZNLSwJRFICtFv2AgggS2vQL | |
DFvVpn0Pi4iItm1KItvWJqW1pYsRemyyNILARbZpm0WtrJ0kbmbUlHmr4+t0z60Z7oSSAx935txz | |
vrlPBwA4EPKMEVwE9z+ME/qtOkbgqtVqUqPRaDWbTegE6YdQKBRkJazAjcWapoGu6xayLIMoilAo | |
FKhEEAQIh8OWxCzuQwEmVKtVMAyDtoiqqiBJEhSLRSqoVCqAP+E47keCAvfU5sDQ8MRs/OYNtr1x | |
2PXdwuJShLLljcFlNAW5HA9khLYp0TUhSYMLHm7PLEDS7zyw3ybRqyfg+TyBtwl2sDP1nKWFiUSa | |
zFex3tk45sXjL1Aul20CGTs+syVY37igBbwg03eMsfH9gwSsrZ+Doig2QZsdNiZmMkVrKmwc18az | |
HKELyQrOMEHTDJp8HXu1hostG8dY8PiRngdWMEq467ZwbDxwlIR8XrQLcBvn5k9Gpmd8fn/gHlZW | |
T20C/D4k8eTDB3yVFKjX6xSbgD1If8G970Q3QbvbPehAyxL8SibJEdaxo5dikqvS28sInCjp4Tqb | |
4NV3fgPirZ4pD4KS4wAAAABJRU5ErkJggg=="; | |
$_IMAGES["png"] = $_IMAGES["image"]; | |
$_IMAGES["pps"] = $_IMAGES["presentation"]; | |
$_IMAGES["ppsx"] = $_IMAGES["presentation"]; | |
$_IMAGES["ppt"] = $_IMAGES["presentation"]; | |
$_IMAGES["pptx"] = $_IMAGES["presentation"]; | |
$_IMAGES["psd"] = $_IMAGES["graphics"]; | |
$_IMAGES["rar"] = $_IMAGES["archive"]; | |
$_IMAGES["rb"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIESURBVDjLjZNPTxNBGIexid9CEr8DBr8C | |
HEiMVoomJiQkxBIM3dgIiaIESJTGGpVtyXIzHhoM4SIe9KAnEi4clQtJEczWFrbdP93d7s7u/JwZ | |
7XYJBdnkyRxmfs/MvO9OD4AeDvuuMPoY/f/hKiMR5WKCvlarpRNCwiAI0A02D1mW38QlcUE/Dzeb | |
Tdi2HWEYBhqNBqrVqpBUKhUUCoVI0g5f4gK+wHVdeJ4nRo5lWdB1HbVaTQgcxwHfRFGUvxIuCKYf | |
zmqZyZ2wKIO8fQ3/1Uv4Sy/QWliAO/sU9qMZmFMS3HfvT1xJ1ITOZJ9RpQi6+RH0y2fQb19BP23C | |
VhRo+TysXA71+XkcMIk6fAfHK6tQVfWEoESXngNra0C5DHZJYGMDZiaD35IEi41qOo3vc3MoJ1Oo | |
j92HpmkdQZiVEsHUAzl88hjY3gYIAdbXYQ0MoDo4CH1kBHssvH8jCf3eGKzDXzBNsyNoF/HH7WSJ | |
ZLPA7i6wtQVnaAhmKoXjxUX8vDkMY3Qcnm6IInJOCS4nEte9QhF+RhInIRMTcFhYvZWCcXcUPmsl | |
7w6H/w+nBFEb5SLc8TTo8jLq7M4m25mHfd8X8PC5AtHrXB5NdmwRrnfCcc4VCEnpA8jREasp6cpZ | |
AnrWO+hCGAn+Sa6xAtl84iJhttYSrzcm6OWSCzznNvzp9/4BgwKvG3Zq1eoAAAAASUVORK5CYII="; | |
$_IMAGES["sln"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJQSURBVDjLjZNvSBNxGMeX9O+FOAkaLbeh | |
ozdGRGiMQqTIlEqJMIig3oxl0YxcgYt6FUZRryLYwpFWCr2wXgjBIMJMYhFjgZSiEXOg5c5N593u | |
dne7u+2+3V3tT22SBx/uxe/5fu7uuefRAdCpKJdJoVHB9h9qFSryuSJBYzqdpiRJymYyGZRDOYfH | |
43lULCkW2NRwKpUCy7J5kskkSJJELBbTJARBwOv15iW58AZVoBbwPA9BELS7CsMwoCgK8XhcE3Ac | |
B/UhPp/vtyQnGBi03pYXjyAbPQuRD2sSbmUFVN9NLJ5ux9DryZJP0nqiChzjl48Oh9oYRPTAXBVk | |
sgnS0hRWu7uxXG/EfL0ZZ9yjGHgb1t4kGo0WBO6AvcUVsFP9oTZZjlQCP7ZA/r4JpHM3lup2Im6p | |
RsRai2PX/GjoDWEk8BWJRKIg6P147mfP+CW63d16RUyOQP5SA6rLAsKyA0TNNizvM4D9/A4Tk2Ec | |
7nuPE0+vgqbpgqBnzLl6vv8N3+x4eEsS0mAvHAJhMoAw6kHUVUF4rkeWHAKXZtA15kDL6C6tkXmB | |
ffiZs/P+NE7dC4pBhwsJY6USVjBtBO/bCswrbfq2GS+Ce9DwyooHoRvaPPzVxI67IVfHnQA+2JqQ | |
MFQgur0anP8J5IVmYEopmdbh5YQO1wMu0BxdKlB/44GLg48/HT8J8uBesH6/ViDxC5DnWiHPWjAz | |
0wleYCGKokaJIDdI/6JMZ1nWEshr7UEZsnnBH8l+ZfpY9WA9YaWW0ba3SGBWJetY5xzq6pt/AY6/ | |
mKmzshF5AAAAAElFTkSuQmCC"; | |
$_IMAGES["sql"] = $_IMAGES["database"]; | |
$_IMAGES["tar"] = $_IMAGES["archive"]; | |
$_IMAGES["tgz"] = $_IMAGES["archive"]; | |
$_IMAGES["txt"] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0 | |
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADoSURBVBgZBcExblNBGAbA2ceegTRBuIKO | |
giihSZNTcC5LUHAihNJR0kGKCDcYJY6D3/77MdOinTvzAgCw8ysThIvn/VojIyMjIyPP+bS1sUQI | |
V2s95pBDDvmbP/mdkft83tpYguZq5Jh/OeaYh+yzy8hTHvNlaxNNczm+la9OTlar1UdA/+C2A4tr | |
RCnD3jS8BB1obq2Gk6GU6QbQAS4BUaYSQAf4bhhKKTFdAzrAOwAxEUAH+KEM01SY3gM6wBsEAQB0 | |
gJ+maZoC3gI6iPYaAIBJsiRmHU0AALOeFC3aK2cWAACUXe7+AwO0lc9eTHYTAAAAAElFTkSuQmCC"; | |
$_IMAGES["wav"] = $_IMAGES["audio"]; | |
$_IMAGES["wma"] = $_IMAGES["audio"]; | |
$_IMAGES["wmv"] = $_IMAGES["video"]; | |
$_IMAGES["xcf"] = $_IMAGES["graphics"]; | |
$_IMAGES["xls"] = $_IMAGES["spreadsheet"]; | |
$_IMAGES["xlsx"] = $_IMAGES["spreadsheet"]; | |
$_IMAGES["xml"] = $_IMAGES["code"]; | |
$_IMAGES["zip"] = $_IMAGES["archive"]; | |
/***************************************************************************/ | |
/* EDASIST KOODI EI OLE TARVIS MUUTA */ | |
/* */ | |
/* HERE COMES THE CODE. */ | |
/* DON'T CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING ;) */ | |
/***************************************************************************/ | |
// | |
// The class that displays images (icons and thumbnails) | |
// | |
class ImageServer | |
{ | |
// | |
// Checks if an image is requested and displays one if needed | |
// | |
public static function showImage() | |
{ | |
global $_IMAGES; | |
if(isset($_GET['img'])) | |
{ | |
if(strlen($_GET['img']) > 0) | |
{ | |
$mtime = gmdate('r', filemtime($_SERVER['SCRIPT_FILENAME'])); | |
$etag = md5($mtime.$_SERVER['SCRIPT_FILENAME']); | |
if ((isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $mtime) | |
|| (isset($_SERVER['HTTP_IF_NONE_MATCH']) && str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == $etag)) | |
{ | |
header('HTTP/1.1 304 Not Modified'); | |
return true; | |
} | |
else { | |
header('ETag: "'.$etag.'"'); | |
header('Last-Modified: '.$mtime); | |
header('Content-type: image/gif'); | |
if(isset($_IMAGES[$_GET['img']])) | |
print base64_decode($_IMAGES[$_GET['img']]); | |
else | |
print base64_decode($_IMAGES["unknown"]); | |
} | |
} | |
return true; | |
} | |
else if(isset($_GET['thumb'])) | |
{ | |
if(strlen($_GET['thumb']) > 0 && EncodeExplorer::getConfig('thumbnails') == true) | |
{ | |
ImageServer::showThumbnail($_GET['thumb']); | |
} | |
return true; | |
} | |
return false; | |
} | |
public static function isEnabledPdf() | |
{ | |
if(class_exists("Imagick")) | |
return true; | |
return false; | |
} | |
public static function openPdf($file) | |
{ | |
if(!ImageServer::isEnabledPdf()) | |
return null; | |
$im = new Imagick($file.'[0]'); | |
$im->setImageFormat( "png" ); | |
$str = $im->getImageBlob(); | |
$im2 = imagecreatefromstring($str); | |
return $im2; | |
} | |
// | |
// Creates and returns a thumbnail image object from an image file | |
// | |
public static function createThumbnail($file) | |
{ | |
if(is_int(EncodeExplorer::getConfig('thumbnails_width'))) | |
$max_width = EncodeExplorer::getConfig('thumbnails_width'); | |
else | |
$max_width = 200; | |
if(is_int(EncodeExplorer::getConfig('thumbnails_height'))) | |
$max_height = EncodeExplorer::getConfig('thumbnails_height'); | |
else | |
$max_height = 200; | |
if(File::isPdfFile($file)) | |
$image = ImageServer::openPdf($file); | |
else | |
$image = ImageServer::openImage($file); | |
if($image == null) | |
return; | |
imagealphablending($image, true); | |
imagesavealpha($image, true); | |
$width = imagesx($image); | |
$height = imagesy($image); | |
$new_width = $max_width; | |
$new_height = $max_height; | |
if(($width/$height) > ($new_width/$new_height)) | |
$new_height = $new_width * ($height / $width); | |
else | |
$new_width = $new_height * ($width / $height); | |
if($new_width >= $width && $new_height >= $height) | |
{ | |
$new_width = $width; | |
$new_height = $height; | |
} | |
$new_image = ImageCreateTrueColor($new_width, $new_height); | |
imagealphablending($new_image, true); | |
imagesavealpha($new_image, true); | |
$trans_colour = imagecolorallocatealpha($new_image, 0, 0, 0, 127); | |
imagefill($new_image, 0, 0, $trans_colour); | |
imagecopyResampled ($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); | |
return $new_image; | |
} | |
// | |
// Function for displaying the thumbnail. | |
// Includes attempts at cacheing it so that generation is minimised. | |
// | |
public static function showThumbnail($file) | |
{ | |
if(filemtime($file) < filemtime($_SERVER['SCRIPT_FILENAME'])) | |
$mtime = gmdate('r', filemtime($_SERVER['SCRIPT_FILENAME'])); | |
else | |
$mtime = gmdate('r', filemtime($file)); | |
$etag = md5($mtime.$file); | |
if ((isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $mtime) | |
|| (isset($_SERVER['HTTP_IF_NONE_MATCH']) && str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == $etag)) | |
{ | |
header('HTTP/1.1 304 Not Modified'); | |
return; | |
} | |
else | |
{ | |
header('ETag: "'.$etag.'"'); | |
header('Last-Modified: '.$mtime); | |
header('Content-Type: image/png'); | |
$image = ImageServer::createThumbnail($file); | |
imagepng($image); | |
} | |
} | |
// | |
// A helping function for opening different types of image files | |
// | |
public static function openImage ($file) | |
{ | |
$size = getimagesize($file); | |
switch($size["mime"]) | |
{ | |
case "image/jpeg": | |
$im = imagecreatefromjpeg($file); | |
break; | |
case "image/gif": | |
$im = imagecreatefromgif($file); | |
break; | |
case "image/png": | |
$im = imagecreatefrompng($file); | |
break; | |
default: | |
$im=null; | |
break; | |
} | |
return $im; | |
} | |
} | |
// | |
// The class for logging user activity | |
// | |
class Logger | |
{ | |
public static function log($message) | |
{ | |
global $encodeExplorer; | |
if(strlen(EncodeExplorer::getConfig('log_file')) > 0) | |
{ | |
if(Location::isFileWritable(EncodeExplorer::getConfig('log_file'))) | |
{ | |
$message = "[" . date("Y-m-d h:i:s", mktime()) . "] ".$message." (".$_SERVER["HTTP_USER_AGENT"].")\n"; | |
error_log($message, 3, EncodeExplorer::getConfig('log_file')); | |
} | |
else | |
$encodeExplorer->setErrorString("log_file_permission_error"); | |
} | |
} | |
public static function logAccess($path, $isDir) | |
{ | |
$message = $_SERVER['REMOTE_ADDR']." ".GateKeeper::getUserName()." accessed "; | |
$message .= $isDir?"dir":"file"; | |
$message .= " ".$path; | |
Logger::log($message); | |
} | |
public static function logQuery() | |
{ | |
if(isset($_POST['log']) && strlen($_POST['log']) > 0) | |
{ | |
Logger::logAccess($_POST['log'], false); | |
return true; | |
} | |
else | |
return false; | |
} | |
public static function logCreation($path, $isDir) | |
{ | |
$message = $_SERVER['REMOTE_ADDR']." ".GateKeeper::getUserName()." created "; | |
$message .= $isDir?"dir":"file"; | |
$message .= " ".$path; | |
Logger::log($message); | |
} | |
public static function emailNotification($path, $isFile) | |
{ | |
if(strlen(EncodeExplorer::getConfig('upload_email')) > 0) | |
{ | |
$message = "This is a message to let you know that ".GateKeeper::getUserName()." "; | |
$message .= ($isFile?"uploaded a new file":"created a new directory")." in Encode Explorer.\n\n"; | |
$message .= "Path : ".$path."\n"; | |
$message .= "IP : ".$_SERVER['REMOTE_ADDR']."\n"; | |
mail(EncodeExplorer::getConfig('upload_email'), "Upload notification", $message); | |
} | |
} | |
} | |
// | |
// The class controls logging in and authentication | |
// | |
class GateKeeper | |
{ | |
public static function init() | |
{ | |
global $encodeExplorer; | |
if(strlen(EncodeExplorer::getConfig("session_name")) > 0) | |
session_name(EncodeExplorer::getConfig("session_name")); | |
if(count(EncodeExplorer::getConfig("users")) > 0) | |
session_start(); | |
else | |
return; | |
if(isset($_GET['logout'])) | |
{ | |
$_SESSION['ee_user_name'] = null; | |
$_SESSION['ee_user_pass'] = null; | |
} | |
if(isset($_POST['user_pass']) && strlen($_POST['user_pass']) > 0) | |
{ | |
if(GateKeeper::isUser((isset($_POST['user_name'])?$_POST['user_name']:""), $_POST['user_pass'])) | |
{ | |
$_SESSION['ee_user_name'] = isset($_POST['user_name'])?$_POST['user_name']:""; | |
$_SESSION['ee_user_pass'] = $_POST['user_pass']; | |
$addr = $_SERVER['PHP_SELF']; | |
if(isset($_GET['m'])) | |
$addr .= "?m"; | |
else if(isset($_GET['s'])) | |
$addr .= "?s"; | |
header( "Location: ".$addr); | |
} | |
else | |
$encodeExplorer->setErrorString("wrong_pass"); | |
} | |
} | |
public static function isUser($userName, $userPass) | |
{ | |
foreach(EncodeExplorer::getConfig("users") as $user) | |
{ | |
if($user[1] == $userPass) | |
{ | |
if(strlen($userName) == 0 || $userName == $user[0]) | |
{ | |
return true; | |
} | |
} | |
} | |
return false; | |
} | |
public static function isLoginRequired() | |
{ | |
if(EncodeExplorer::getConfig("require_login") == false){ | |
return false; | |
} | |
return true; | |
} | |
public static function isUserLoggedIn() | |
{ | |
if(isset($_SESSION['ee_user_name']) && isset($_SESSION['ee_user_pass'])) | |
{ | |
if(GateKeeper::isUser($_SESSION['ee_user_name'], $_SESSION['ee_user_pass'])) | |
return true; | |
} | |
return false; | |
} | |
public static function isAccessAllowed() | |
{ | |
if(!GateKeeper::isLoginRequired() || GateKeeper::isUserLoggedIn()) | |
return true; | |
return false; | |
} | |
public static function isUploadAllowed(){ | |
if(EncodeExplorer::getConfig("upload_enable") == true && GateKeeper::isUserLoggedIn() == true && GateKeeper::getUserStatus() == "admin") | |
return true; | |
return false; | |
} | |
public static function isNewdirAllowed(){ | |
if(EncodeExplorer::getConfig("newdir_enable") == true && GateKeeper::isUserLoggedIn() == true && GateKeeper::getUserStatus() == "admin") | |
return true; | |
return false; | |
} | |
public static function isDeleteAllowed(){ | |
if(EncodeExplorer::getConfig("delete_enable") == true && GateKeeper::isUserLoggedIn() == true && GateKeeper::getUserStatus() == "admin") | |
return true; | |
return false; | |
} | |
public static function getUserStatus(){ | |
if(GateKeeper::isUserLoggedIn() == true && EncodeExplorer::getConfig("users") != null && is_array(EncodeExplorer::getConfig("users"))){ | |
foreach(EncodeExplorer::getConfig("users") as $user){ | |
if($user[0] != null && $user[0] == $_SESSION['ee_user_name']) | |
return $user[2]; | |
} | |
} | |
return null; | |
} | |
public static function getUserName() | |
{ | |
if(GateKeeper::isUserLoggedIn() == true && isset($_SESSION['ee_user_name']) && strlen($_SESSION['ee_user_name']) > 0) | |
return $_SESSION['ee_user_name']; | |
if(isset($_SERVER["REMOTE_USER"]) && strlen($_SERVER["REMOTE_USER"]) > 0) | |
return $_SERVER["REMOTE_USER"]; | |
if(isset($_SERVER['PHP_AUTH_USER']) && strlen($_SERVER['PHP_AUTH_USER']) > 0) | |
return $_SERVER['PHP_AUTH_USER']; | |
return "an anonymous user"; | |
} | |
public static function showLoginBox(){ | |
if(!GateKeeper::isUserLoggedIn() && count(EncodeExplorer::getConfig("users")) > 0) | |
return true; | |
return false; | |
} | |
} | |
// | |
// The class for any kind of file managing (new folder, upload, etc). | |
// | |
class FileManager | |
{ | |
function newFolder($location, $dirname) | |
{ | |
global $encodeExplorer; | |
if(strlen($dirname) > 0) | |
{ | |
$forbidden = array(".", "/", "\\"); | |
for($i = 0; $i < count($forbidden); $i++) | |
{ | |
$dirname = str_replace($forbidden[$i], "", $dirname); | |
} | |
if(!$location->uploadAllowed()) | |
{ | |
// The system configuration does not allow uploading here | |
$encodeExplorer->setErrorString("upload_not_allowed"); | |
} | |
else if(!$location->isWritable()) | |
{ | |
// The target directory is not writable | |
$encodeExplorer->setErrorString("upload_dir_not_writable"); | |
} | |
else if(!mkdir($location->getDir(true, false, false, 0).$dirname, 0777)) | |
{ | |
// Error creating a new directory | |
$encodeExplorer->setErrorString("new_dir_failed"); | |
} | |
else if(!chmod($location->getDir(true, false, false, 0).$dirname, 0777)) | |
{ | |
// Error applying chmod 777 | |
$encodeExplorer->setErrorString("chmod_dir_failed"); | |
} | |
else | |
{ | |
// Directory successfully created, sending e-mail notification | |
Logger::logCreation($location->getDir(true, false, false, 0).$dirname, true); | |
Logger::emailNotification($location->getDir(true, false, false, 0).$dirname, false); | |
} | |
} | |
} | |
function uploadFile($location, $userfile) | |
{ | |
global $encodeExplorer; | |
$name = basename($userfile['name']); | |
if(get_magic_quotes_gpc()) | |
$name = stripslashes($name); | |
$upload_dir = $location->getFullPath(); | |
$upload_file = $upload_dir . $name; | |
if(function_exists("finfo_open") && function_exists("finfo_file")) | |
$mime_type = File::getFileMime($userfile['tmp_name']); | |
else | |
$mime_type = $userfile['type']; | |
$extension = File::getFileExtension($userfile['name']); | |
if(!$location->uploadAllowed()) | |
{ | |
$encodeExplorer->setErrorString("upload_not_allowed"); | |
} | |
else if(!$location->isWritable()) | |
{ | |
$encodeExplorer->setErrorString("upload_dir_not_writable"); | |
} | |
else if(!is_uploaded_file($userfile['tmp_name'])) | |
{ | |
$encodeExplorer->setErrorString("failed_upload"); | |
} | |
else if(is_array(EncodeExplorer::getConfig("upload_allow_type")) && count(EncodeExplorer::getConfig("upload_allow_type")) > 0 && !in_array($mime_type, EncodeExplorer::getConfig("upload_allow_type"))) | |
{ | |
$encodeExplorer->setErrorString("upload_type_not_allowed"); | |
} | |
else if(is_array(EncodeExplorer::getConfig("upload_reject_extension")) && count(EncodeExplorer::getConfig("upload_reject_extension")) > 0 && in_array($extension, EncodeExplorer::getConfig("upload_reject_extension"))) | |
{ | |
$encodeExplorer->setErrorString("upload_type_not_allowed"); | |
} | |
else if(!@move_uploaded_file($userfile['tmp_name'], $upload_file)) | |
{ | |
$encodeExplorer->setErrorString("failed_move"); | |
} | |
else | |
{ | |
chmod($upload_file, 0755); | |
Logger::logCreation($location->getDir(true, false, false, 0).$name, false); | |
Logger::emailNotification($location->getDir(true, false, false, 0).$name, true); | |
} | |
} | |
public static function delete_dir($dir) { | |
if (is_dir($dir)) { | |
$objects = scandir($dir); | |
foreach ($objects as $object) { | |
if ($object != "." && $object != "..") { | |
if (filetype($dir."/".$object) == "dir") | |
FileManager::delete_dir($dir."/".$object); | |
else | |
unlink($dir."/".$object); | |
} | |
} | |
reset($objects); | |
rmdir($dir); | |
} | |
} | |
public static function delete_file($file){ | |
if(is_file($file)){ | |
unlink($file); | |
} | |
} | |
// | |
// The main function, checks if the user wants to perform any supported operations | |
// | |
function run($location) | |
{ | |
if(isset($_POST['userdir']) && strlen($_POST['userdir']) > 0){ | |
if($location->uploadAllowed() && GateKeeper::isUserLoggedIn() && GateKeeper::isAccessAllowed() && GateKeeper::isNewdirAllowed()){ | |
$this->newFolder($location, $_POST['userdir']); | |
} | |
} | |
if(isset($_FILES['userfile']['name']) && strlen($_FILES['userfile']['name']) > 0){ | |
if($location->uploadAllowed() && GateKeeper::isUserLoggedIn() && GateKeeper::isAccessAllowed() && GateKeeper::isUploadAllowed()){ | |
$this->uploadFile($location, $_FILES['userfile']); | |
} | |
} | |
if(isset($_GET['del'])){ | |
if(GateKeeper::isUserLoggedIn() && GateKeeper::isAccessAllowed() && GateKeeper::isDeleteAllowed()){ | |
$split_path = Location::splitPath($_GET['del']); | |
$path = ""; | |
for($i = 0; $i < count($split_path); $i++){ | |
$path .= $split_path[$i]; | |
if($i + 1 < count($split_path)) | |
$path .= "/"; | |
} | |
if($path == "" || $path == "/" || $path == "\\" || $path == ".") | |
return; | |
if(is_dir($path)) | |
FileManager::delete_dir($path); | |
else if(is_file($path)) | |
FileManager::delete_file($path); | |
} | |
} | |
} | |
} | |
// | |
// Dir class holds the information about one directory in the list | |
// | |
class Dir | |
{ | |
var $name; | |
var $location; | |
// | |
// Constructor | |
// | |
function Dir($name, $location) | |
{ | |
$this->name = $name; | |
$this->location = $location; | |
} | |
function getName() | |
{ | |
return $this->name; | |
} | |
function getNameHtml() | |
{ | |
return htmlspecialchars($this->name); | |
} | |
function getNameEncoded() | |
{ | |
return rawurlencode($this->name); | |
} | |
// | |
// Debugging output | |
// | |
function debug() | |
{ | |
print("Dir name (htmlspecialchars): ".$this->getName()."\n"); | |
print("Dir location: ".$this->location->getDir(true, false, false, 0)."\n"); | |
} | |
} | |
// | |
// File class holds the information about one file in the list | |
// | |
class File | |
{ | |
var $name; | |
var $location; | |
var $size; | |
//var $extension; | |
var $type; | |
var $modTime; | |
// | |
// Constructor | |
// | |
function File($name, $location) | |
{ | |
$this->name = $name; | |
$this->location = $location; | |
$this->type = File::getFileType($this->location->getDir(true, false, false, 0).$this->getName()); | |
$this->size = File::getFileSize($this->location->getDir(true, false, false, 0).$this->getName()); | |
$this->modTime = filemtime($this->location->getDir(true, false, false, 0).$this->getName()); | |
} | |
function getName() | |
{ | |
return $this->name; | |
} | |
function getNameEncoded() | |
{ | |
return rawurlencode($this->name); | |
} | |
function getNameHtml() | |
{ | |
return htmlspecialchars($this->name); | |
} | |
function getSize() | |
{ | |
return $this->size; | |
} | |
function getType() | |
{ | |
return $this->type; | |
} | |
function getModTime() | |
{ | |
return $this->modTime; | |
} | |
// | |
// Determine the size of a file | |
// | |
public static function getFileSize($file) | |
{ | |
$sizeInBytes = filesize($file); | |
// If filesize() fails (with larger files), try to get the size from unix command line. | |
if (EncodeExplorer::getConfig("large_files") == true || !$sizeInBytes || $sizeInBytes < 0) { | |
$sizeInBytes=exec("ls -l '$file' | awk '{print $5}'"); | |
} | |
return $sizeInBytes; | |
} | |
public static function getFileType($filepath) | |
{ | |
/* | |
* This extracts the information from the file contents. | |
* Unfortunately it doesn't properly detect the difference between text-based file types. | |
* | |
$mime_type = File::getMimeType($filepath); | |
$mime_type_chunks = explode("/", $mime_type, 2); | |
$type = $mime_type_chunks[1]; | |
*/ | |
return File::getFileExtension($filepath); | |
} | |
public static function getFileMime($filepath) | |
{ | |
$fhandle = finfo_open(FILEINFO_MIME); | |
$mime_type = finfo_file($fhandle, $filepath); | |
$mime_type_chunks = preg_split('/\s+/', $mime_type); | |
$mime_type = $mime_type_chunks[0]; | |
$mime_type_chunks = explode(";", $mime_type); | |
$mime_type = $mime_type_chunks[0]; | |
return $mime_type; | |
} | |
public static function getFileExtension($filepath) | |
{ | |
return strtolower(pathinfo($filepath, PATHINFO_EXTENSION)); | |
} | |
// | |
// Debugging output | |
// | |
function debug() | |
{ | |
print("File name: ".$this->getName()."\n"); | |
print("File location: ".$this->location->getDir(true, false, false, 0)."\n"); | |
print("File size: ".$this->size."\n"); | |
print("File modTime: ".$this->modTime."\n"); | |
} | |
function isImage() | |
{ | |
$type = $this->getType(); | |
if($type == "png" || $type == "jpg" || $type == "gif" || $type == "jpeg") | |
return true; | |
return false; | |
} | |
function isPdf() | |
{ | |
if(strtolower($this->getType()) == "pdf") | |
return true; | |
return false; | |
} | |
public static function isPdfFile($file) | |
{ | |
if(File::getFileType($file) == "pdf") | |
return true; | |
return false; | |
} | |
function isValidForThumb() | |
{ | |
if($this->isImage() || ($this->isPdf() && ImageServer::isEnabledPdf())) | |
return true; | |
return false; | |
} | |
} | |
class Location | |
{ | |
var $path; | |
// | |
// Split a file path into array elements | |
// | |
public static function splitPath($dir) | |
{ | |
$dir = stripslashes($dir); | |
$path1 = preg_split("/[\\\\\/]+/", $dir); | |
$path2 = array(); | |
for($i = 0; $i < count($path1); $i++) | |
{ | |
if($path1[$i] == ".." || $path1[$i] == "." || $path1[$i] == "") | |
continue; | |
$path2[] = $path1[$i]; | |
} | |
return $path2; | |
} | |
// | |
// Get the current directory. | |
// Options: Include the prefix ("./"); URL-encode the string; HTML-encode the string; return directory n-levels up | |
// | |
function getDir($prefix, $encoded, $html, $up) | |
{ | |
$dir = ""; | |
if($prefix == true) | |
$dir .= "./"; | |
for($i = 0; $i < ((count($this->path) >= $up && $up > 0)?count($this->path)-$up:count($this->path)); $i++) | |
{ | |
$temp = $this->path[$i]; | |
if($encoded) | |
$temp = rawurlencode($temp); | |
if($html) | |
$temp = htmlspecialchars($temp); | |
$dir .= $temp."/"; | |
} | |
return $dir; | |
} | |
function getPathLink($i, $html) | |
{ | |
if($html) | |
return htmlspecialchars($this->path[$i]); | |
else | |
return $this->path[$i]; | |
} | |
function getFullPath() | |
{ | |
return (strlen(EncodeExplorer::getConfig('basedir')) > 0?EncodeExplorer::getConfig('basedir'):dirname($_SERVER['SCRIPT_FILENAME']))."/".$this->getDir(true, false, false, 0); | |
} | |
// | |
// Debugging output | |
// | |
function debug() | |
{ | |
print_r($this->path); | |
print("Dir with prefix: ".$this->getDir(true, false, false, 0)."\n"); | |
print("Dir without prefix: ".$this->getDir(false, false, false, 0)."\n"); | |
print("Upper dir with prefix: ".$this->getDir(true, false, false, 1)."\n"); | |
print("Upper dir without prefix: ".$this->getDir(false, false, false, 1)."\n"); | |
} | |
// | |
// Set the current directory | |
// | |
function init() | |
{ | |
if(!isset($_GET['dir']) || strlen($_GET['dir']) == 0) | |
{ | |
$this->path = $this->splitPath(EncodeExplorer::getConfig('starting_dir')); | |
} | |
else | |
{ | |
$this->path = $this->splitPath($_GET['dir']); | |
} | |
} | |
// | |
// Checks if the current directory is below the input path | |
// | |
function isSubDir($checkPath) | |
{ | |
for($i = 0; $i < count($this->path); $i++) | |
{ | |
if(strcmp($this->getDir(true, false, false, $i), $checkPath) == 0) | |
return true; | |
} | |
return false; | |
} | |
// | |
// Check if uploading is allowed into the current directory, based on the configuration | |
// | |
function uploadAllowed() | |
{ | |
if(EncodeExplorer::getConfig('upload_enable') != true) | |
return false; | |
if(EncodeExplorer::getConfig('upload_dirs') == null || count(EncodeExplorer::getConfig('upload_dirs')) == 0) | |
return true; | |
$upload_dirs = EncodeExplorer::getConfig('upload_dirs'); | |
for($i = 0; $i < count($upload_dirs); $i++) | |
{ | |
if($this->isSubDir($upload_dirs[$i])) | |
return true; | |
} | |
return false; | |
} | |
function isWritable() | |
{ | |
return is_writable($this->getDir(true, false, false, 0)); | |
} | |
public static function isDirWritable($dir) | |
{ | |
return is_writable($dir); | |
} | |
public static function isFileWritable($file) | |
{ | |
if(file_exists($file)) | |
{ | |
if(is_writable($file)) | |
return true; | |
else | |
return false; | |
} | |
else if(Location::isDirWritable(dirname($file))) | |
return true; | |
else | |
return false; | |
} | |
} | |
class EncodeExplorer | |
{ | |
var $location; | |
var $dirs; | |
var $files; | |
var $sort_by; | |
var $sort_as; | |
var $mobile; | |
var $logging; | |
var $spaceUsed; | |
var $lang; | |
// | |
// Determine sorting, calculate space. | |
// | |
function init() | |
{ | |
$this->sort_by = ""; | |
$this->sort_as = ""; | |
if(isset($_GET["sort_by"]) && isset($_GET["sort_as"])) | |
{ | |
if($_GET["sort_by"] == "name" || $_GET["sort_by"] == "size" || $_GET["sort_by"] == "mod") | |
if($_GET["sort_as"] == "asc" || $_GET["sort_as"] == "desc") | |
{ | |
$this->sort_by = $_GET["sort_by"]; | |
$this->sort_as = $_GET["sort_as"]; | |
} | |
} | |
if(strlen($this->sort_by) <= 0 || strlen($this->sort_as) <= 0) | |
{ | |
$this->sort_by = "name"; | |
$this->sort_as = "desc"; | |
} | |
global $_TRANSLATIONS; | |
if(isset($_GET['lang']) && isset($_TRANSLATIONS[$_GET['lang']])) | |
$this->lang = $_GET['lang']; | |
else | |
$this->lang = EncodeExplorer::getConfig("lang"); | |
$this->logging = false; | |
if(EncodeExplorer::getConfig("log_file") != null && strlen(EncodeExplorer::getConfig("log_file")) > 0) | |
$this->logging = true; | |
} | |
// | |
// Read the file list from the directory | |
// | |
function readDir() | |
{ | |
global $encodeExplorer; | |
// | |
// Reading the data of files and directories | |
// | |
if($open_dir = @opendir($this->location->getFullPath())) | |
{ | |
$this->dirs = array(); | |
$this->files = array(); | |
while ($object = readdir($open_dir)) | |
{ | |
if($object != "." && $object != "..") | |
{ | |
if(is_dir($this->location->getDir(true, false, false, 0)."/".$object)) | |
{ | |
if(!in_array($object, EncodeExplorer::getConfig('hidden_dirs'))) | |
$this->dirs[] = new Dir($object, $this->location); | |
} | |
else if(!in_array($object, EncodeExplorer::getConfig('hidden_files'))) | |
$this->files[] = new File($object, $this->location); | |
} | |
} | |
closedir($open_dir); | |
} | |
else | |
{ | |
$encodeExplorer->setErrorString("unable_to_read_dir");; | |
} | |
} | |
// | |
// A recursive function for calculating the total used space | |
// | |
function sum_dir($start_dir, $ignore_files, $levels = 1) | |
{ | |
if ($dir = opendir($start_dir)) | |
{ | |
$total = 0; | |
while ((($file = readdir($dir)) !== false)) | |
{ | |
if (!in_array($file, $ignore_files)) | |
{ | |
if ((is_dir($start_dir . '/' . $file)) && ($levels - 1 >= 0)) | |
{ | |
$total += $this->sum_dir($start_dir . '/' . $file, $ignore_files, $levels-1); | |
} | |
elseif (is_file($start_dir . '/' . $file)) | |
{ | |
$total += File::getFileSize($start_dir . '/' . $file) / 1024; | |
} | |
} | |
} | |
closedir($dir); | |
return $total; | |
} | |
} | |
function calculateSpace() | |
{ | |
if(EncodeExplorer::getConfig('calculate_space_level') <= 0) | |
return; | |
$ignore_files = array('..', '.'); | |
$start_dir = getcwd(); | |
$spaceUsed = $this->sum_dir($start_dir, $ignore_files, EncodeExplorer::getConfig('calculate_space_level')); | |
$this->spaceUsed = round($spaceUsed/1024, 3); | |
} | |
function sort() | |
{ | |
if(is_array($this->files)){ | |
usort($this->files, "EncodeExplorer::cmp_".$this->sort_by); | |
if($this->sort_as == "desc") | |
$this->files = array_reverse($this->files); | |
} | |
if(is_array($this->dirs)){ | |
usort($this->dirs, "EncodeExplorer::cmp_name"); | |
if($this->sort_by == "name" && $this->sort_as == "desc") | |
$this->dirs = array_reverse($this->dirs); | |
} | |
} | |
function makeArrow($sort_by) | |
{ | |
if($this->sort_by == $sort_by && $this->sort_as == "asc") | |
{ | |
$sort_as = "desc"; | |
$img = "arrow_up"; | |
} | |
else | |
{ | |
$sort_as = "asc"; | |
$img = "arrow_down"; | |
} | |
if($sort_by == "name") | |
$text = $this->getString("file_name"); | |
else if($sort_by == "size") | |
$text = $this->getString("size"); | |
else if($sort_by == "mod") | |
$text = $this->getString("last_changed"); | |
return "<a href=\"".$this->makeLink(false, false, $sort_by, $sort_as, null, $this->location->getDir(false, true, false, 0))."\"> | |
$text <img alt=\"".$sort_as."\" src=\"?img=".$img."\" /></a>"; | |
} | |
function makeLink($switchVersion, $logout, $sort_by, $sort_as, $delete, $dir) | |
{ | |
$link = "?"; | |
if($logout == true) | |
{ | |
$link .= "logout"; | |
return $link; | |
} | |
if(isset($this->lang) && $this->lang != EncodeExplorer::getConfig("lang")) | |
$link .= "lang=".$this->lang."&"; | |
if($sort_by != null && strlen($sort_by) > 0) | |
$link .= "sort_by=".$sort_by."&"; | |
if($sort_as != null && strlen($sort_as) > 0) | |
$link .= "sort_as=".$sort_as."&"; | |
$link .= "dir=".$dir; | |
if($delete != null) | |
$link .= "&del=".$delete; | |
return $link; | |
} | |
function makeIcon($l) | |
{ | |
$l = strtolower($l); | |
return "?img=".$l; | |
} | |
function formatModTime($time) | |
{ | |
$timeformat = "d.m.y H:i:s"; | |
if(EncodeExplorer::getConfig("time_format") != null && strlen(EncodeExplorer::getConfig("time_format")) > 0) | |
$timeformat = EncodeExplorer::getConfig("time_format"); | |
return date($timeformat, $time); | |
} | |
function formatSize($size) | |
{ | |
$sizes = Array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'); | |
$y = $sizes[0]; | |
for ($i = 1; (($i < count($sizes)) && ($size >= 1024)); $i++) | |
{ | |
$size = $size / 1024; | |
$y = $sizes[$i]; | |
} | |
return round($size, 2)." ".$y; | |
} | |
// | |
// Debugging output | |
// | |
function debug() | |
{ | |
print("Explorer location: ".$this->location->getDir(true, false, false, 0)."\n"); | |
for($i = 0; $i < count($this->dirs); $i++) | |
$this->dirs[$i]->output(); | |
for($i = 0; $i < count($this->files); $i++) | |
$this->files[$i]->output(); | |
} | |
// | |
// Comparison functions for sorting. | |
// | |
public static function cmp_name($b, $a) | |
{ | |
return strcasecmp($a->name, $b->name); | |
} | |
public static function cmp_size($a, $b) | |
{ | |
return ($a->size - $b->size); | |
} | |
public static function cmp_mod($b, $a) | |
{ | |
return ($a->modTime - $b->modTime); | |
} | |
// | |
// The function for getting a translated string. | |
// Falls back to english if the correct language is missing something. | |
// | |
public static function getLangString($stringName, $lang) | |
{ | |
global $_TRANSLATIONS; | |
if(isset($_TRANSLATIONS[$lang]) && is_array($_TRANSLATIONS[$lang]) | |
&& isset($_TRANSLATIONS[$lang][$stringName])) | |
return $_TRANSLATIONS[$lang][$stringName]; | |
else if(isset($_TRANSLATIONS["en"]))// && is_array($_TRANSLATIONS["en"]) | |
//&& isset($_TRANSLATIONS["en"][$stringName])) | |
return $_TRANSLATIONS["en"][$stringName]; | |
else | |
return "Translation error"; | |
} | |
function getString($stringName) | |
{ | |
return EncodeExplorer::getLangString($stringName, $this->lang); | |
} | |
// | |
// The function for getting configuration values | |
// | |
public static function getConfig($name) | |
{ | |
global $_CONFIG; | |
if(isset($_CONFIG) && isset($_CONFIG[$name])) | |
return $_CONFIG[$name]; | |
return null; | |
} | |
public static function setError($message) | |
{ | |
global $_ERROR; | |
if(isset($_ERROR) && strlen($_ERROR) > 0) | |
;// keep the first error and discard the rest | |
else | |
$_ERROR = $message; | |
} | |
function setErrorString($stringName) | |
{ | |
EncodeExplorer::setError($this->getString($stringName)); | |
} | |
// | |
// Main function, activating tasks | |
// | |
function run($location) | |
{ | |
$this->location = $location; | |
$this->calculateSpace(); | |
$this->readDir(); | |
$this->sort(); | |
$this->outputHtml(); | |
} | |
public function printLoginBox() | |
{ | |
?> | |
<form class="form-signin" enctype="multipart/form-data" action="<?php print $this->makeLink(false, false, null, null, null, ""); ?>" method="post"> | |
<?php | |
if(GateKeeper::isLoginRequired()) | |
{ | |
$require_username = false; | |
foreach(EncodeExplorer::getConfig("users") as $user){ | |
if($user[0] != null && strlen($user[0]) > 0){ | |
$require_username = true; | |
break; | |
} | |
} | |
if($require_username) | |
{ | |
?> | |
<h2 class="form-signin-heading">HNE</h2> | |
<input type="text" name="user_name" id="user_name" class="form-control" placeholder="<?php print $this->getString("username"); ?>" autofocus> | |
<?php | |
} | |
?> | |
<input type="password" name="user_pass" id="user_pass" class="form-control" placeholder="<?php print $this->getString("password"); ?>"> | |
<input type="submit" class="btn btn-lg btn-primary btn-block" value="<?php print $this->getString("log_in"); ?>"> | |
</form> | |
<?php | |
} | |
} | |
// | |
// Printing the actual page | |
// | |
function outputHtml() | |
{ | |
global $_ERROR; | |
global $_START_TIME; | |
?> | |
<!DOCTYPE html> | |
<html lang="<?php print $this->getConfig('lang'); ?>"> | |
<head> | |
<?php css(); ?> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<meta name="description" content="HNExplorer, a simple web-based file explorer written in a single PHP file."> | |
<meta name="author" content="Heiswayi Nrird"> | |
<?php | |
if(($this->getConfig('log_file') != null && strlen($this->getConfig('log_file')) > 0) | |
|| ($this->getConfig('thumbnails') != null && $this->getConfig('thumbnails') == true) | |
|| (GateKeeper::isDeleteAllowed())) | |
{ | |
?> | |
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> | |
<script type="text/javascript"> | |
//<![CDATA[ | |
$(document).ready(function() { | |
<?php | |
if(GateKeeper::isDeleteAllowed()){ | |
?> | |
$('td.del a').click(function(){ | |
var answer = confirm('Are you sure you want to delete : \'' + $(this).parent().parent().children("td.name").children("a").html() + "\' ?"); | |
return answer; | |
}); | |
<?php | |
} | |
if($this->logging == true) | |
{ | |
?> | |
function logFileClick(path) | |
{ | |
$.ajax({ | |
async: false, | |
type: "POST", | |
data: {log: path}, | |
contentType: "application/x-www-form-urlencoded; charset=UTF-8", | |
cache: false | |
}); | |
} | |
$("a.file").click(function(){ | |
logFileClick("<?php print $this->location->getDir(true, true, false, 0);?>" + $(this).html()); | |
return true; | |
}); | |
<?php | |
} | |
if(EncodeExplorer::getConfig("thumbnails") == true) | |
{ | |
?> | |
function positionThumbnail(e) { | |
xOffset = 30; | |
yOffset = 10; | |
$("#thumb").css("left",(e.clientX + xOffset) + "px"); | |
diff = 0; | |
if(e.clientY + $("#thumb").height() > $(window).height()) | |
diff = e.clientY + $("#thumb").height() - $(window).height(); | |
$("#thumb").css("top",(e.pageY - yOffset - diff) + "px"); | |
} | |
$("a.thumb").hover(function(e){ | |
$("#thumb").remove(); | |
$("body").append("<div id=\"thumb\"><img src=\"?thumb="+ $(this).attr("href") +"\" alt=\"Preview\" \/><\/div>"); | |
positionThumbnail(e); | |
$("#thumb").fadeIn("medium"); | |
}, | |
function(){ | |
$("#thumb").remove(); | |
}); | |
$("a.thumb").mousemove(function(e){ | |
positionThumbnail(e); | |
}); | |
$("a.thumb").click(function(e){$("#thumb").remove(); return true;}); | |
<?php | |
} | |
?> | |
}); | |
//]]> | |
</script> | |
<?php | |
} | |
?> | |
<title><?php if(EncodeExplorer::getConfig('main_title') != null) print EncodeExplorer::getConfig('main_title'); ?></title> | |
</head> | |
<body> | |
<div class="container"> | |
<?php | |
// | |
// Print the error (if there is something to print) | |
// | |
if(isset($_ERROR) && strlen($_ERROR) > 0) | |
{ | |
print "<div id=\"error\" class=\"alert alert-danger\">".$_ERROR."</div>"; | |
} | |
?> | |
<div id="frame"> | |
<?php | |
if(EncodeExplorer::getConfig('show_top') == true) | |
{ | |
if(GateKeeper::isAccessAllowed()) | |
{ | |
?> | |
<div class="row"> | |
<center> | |
<a href="<?php print $this->makeLink(false, false, null, null, null, ""); ?>"><h3><?php if(EncodeExplorer::getConfig('main_title') != null) print EncodeExplorer::getConfig('main_title'); ?></h3></a> | |
<?php | |
if(EncodeExplorer::getConfig("secondary_titles") != null && is_array(EncodeExplorer::getConfig("secondary_titles")) && count(EncodeExplorer::getConfig("secondary_titles")) > 0) | |
{ | |
$secondary_titles = EncodeExplorer::getConfig("secondary_titles"); | |
print "<h4>".$secondary_titles[array_rand($secondary_titles)]."</h4>\n"; | |
} | |
?> | |
</center> | |
</div> | |
<?php | |
} | |
} | |
// Checking if the user is allowed to access the page, otherwise showing the login box | |
if(!GateKeeper::isAccessAllowed()) | |
{ | |
$this->printLoginBox(); | |
} | |
else | |
{ | |
if(EncodeExplorer::getConfig("show_path") == true) | |
{ | |
?> | |
<div class="row"> | |
<ol class="breadcrumb" style="margin-bottom:5px;margin-top:20px;"> | |
<li><a href="?dir="><?php print $this->getString("root"); ?></a></li> | |
<?php | |
for($i = 0; $i < count($this->location->path); $i++) | |
{ | |
print "<li><a href=\"".$this->makeLink(false, false, null, null, null, $this->location->getDir(false, true, false, count($this->location->path) - $i - 1))."\">"; | |
print $this->location->getPathLink($i, true); | |
print "</a></li>\n"; | |
} | |
?> | |
</ol> | |
<?php | |
} | |
?> | |
<!-- START: List table --> | |
<div class="table-responsive"> | |
<table class="table table-bordered table-striped"> | |
<thead> | |
<tr> | |
<th class="icon"> </th> | |
<th class="name"><?php print $this->makeArrow("name");?></th> | |
<th class="size text-center"><?php print $this->makeArrow("size"); ?></th> | |
<th class="changed text-center"><?php print $this->makeArrow("mod"); ?></th> | |
<?php if(GateKeeper::isDeleteAllowed()){?> | |
<th class="del text-center"><?php print EncodeExplorer::getString("del"); ?></th> | |
<?php } ?> | |
</tr> | |
</thead> | |
<tbody> | |
<tr> | |
<td class="icon text-center"><img alt="dir" src="?img=directory" /></td> | |
<td class="long" colspan="4"> | |
<a class="item" href="<?php print $this->makeLink(false, false, null, null, null, $this->location->getDir(false, true, false, 1)); ?>">..</a> | |
</td> | |
</tr> | |
<?php | |
// | |
// Ready to display folders and files. | |
// | |
$row = 1; | |
// | |
// Folders first | |
// | |
if($this->dirs) | |
{ | |
foreach ($this->dirs as $dir) | |
{ | |
print "<tr>\n"; | |
print "<td class=\"icon text-center\"><img alt=\"dir\" src=\"?img=directory\" /></td>\n"; | |
print "<td class=\"name\" colspan=\"3\">\n"; | |
print "<a href=\"".$this->makeLink(false, false, null, null, null, $this->location->getDir(false, true, false, 0).$dir->getNameEncoded())."\" class=\"item dir\">"; | |
print $dir->getNameHtml(); | |
print "</a>\n"; | |
print "</td>\n"; | |
if(GateKeeper::isDeleteAllowed()){ | |
print "<td class=\"del text-center\"><a href=\"".$this->makeLink(false, false, null, null, $this->location->getDir(false, true, false, 0).$dir->getNameEncoded(), $this->location->getDir(false, true, false, 0))."\" alt=\"Delete\"><img src=\"?img=del\" alt=\"Delete\" /></a></td>"; | |
} | |
print "</tr>\n"; | |
} | |
} | |
// | |
// Now the files | |
// | |
if($this->files) | |
{ | |
$count = 0; | |
foreach ($this->files as $file) | |
{ | |
print "<tr>\n"; | |
print "<td class=\"icon text-center\"><img alt=\"".$file->getType()."\" src=\"".$this->makeIcon($file->getType())."\" /></td>\n"; | |
print "<td class=\"name\">\n"; | |
print "\t\t<a href=\"".$this->location->getDir(false, true, false, 0).$file->getNameEncoded()."\""; | |
if(EncodeExplorer::getConfig('open_in_new_window') == true) | |
print "target=\"_blank\""; | |
print " class=\"item file"; | |
if($file->isValidForThumb()) | |
print " thumb"; | |
print "\">"; | |
print $file->getNameHtml(); | |
print "</a>\n"; | |
print "</td>\n"; | |
print "<td class=\"size text-center\">".$this->formatSize($file->getSize())."</td>\n"; | |
print "<td class=\"changed text-center\">".$this->formatModTime($file->getModTime())."</td>\n"; | |
if(GateKeeper::isDeleteAllowed()){ | |
print "<td class=\"del text-center\"><a href=\"".$this->makeLink(false, false, null, null, $this->location->getDir(false, true, false, 0).$file->getNameEncoded(), $this->location->getDir(false, true, false, 0))."\" alt=\"Delete\"><img src=\"?img=del\" alt=\"Delete\" /></a></td>"; | |
} | |
print "</tr>\n"; | |
} | |
} | |
// | |
// The files and folders have been displayed | |
// | |
?> | |
</tbody> | |
</table> | |
</div> | |
<!-- END: List table --> | |
</div> | |
<?php | |
} | |
?> | |
</div> | |
<?php | |
if(GateKeeper::isAccessAllowed() && GateKeeper::showLoginBox()){ | |
?> | |
<!-- START: Login area --> | |
<div class="row well well-small"> | |
<form enctype="multipart/form-data" action="" method="post"> | |
<div id="login_bar"> | |
<?php print $this->getString("username"); ?>: | |
<input type="text" name="user_name" value="" id="user_name" /> | |
<?php print $this->getString("password"); ?>: | |
<input type="password" name="user_pass" id="user_pass" /> | |
<input type="submit" class="submit" value="<?php print $this->getString("log_in"); ?>" /> | |
</div> | |
</form> | |
</div> | |
<!-- END: Login area --> | |
<?php | |
} | |
if(GateKeeper::isAccessAllowed() && $this->location->uploadAllowed() && (GateKeeper::isUploadAllowed() || GateKeeper::isNewdirAllowed())) | |
{ | |
?> | |
<!-- START: Upload area --> | |
<div class="row well well-small"> | |
<form enctype="multipart/form-data" action="" method="post" role="form"> | |
<div id="upload"> | |
<?php | |
if(GateKeeper::isNewdirAllowed()){ | |
?> | |
<div id="newdir_container" class="col-md-6"> | |
<input name="userdir" type="text" class="upload_dirname" /> | |
<input type="submit" value="<?php print $this->getString("make_directory"); ?>" /> | |
</div> | |
<?php | |
} | |
if(GateKeeper::isUploadAllowed()){ | |
?> | |
<div id="upload_container" class="col-md-6"> | |
<input name="userfile" type="file" class="upload_file" /> | |
<input type="submit" value="<?php print $this->getString("upload"); ?>" class="upload_sumbit" /> | |
</div> | |
<?php | |
} | |
?> | |
</div> | |
</form> | |
</div> | |
<!-- END: Upload area --> | |
<?php | |
} | |
?> | |
<!-- START: Info area --> | |
<div class="row"> | |
<p class="text-center"> | |
<?php | |
if(GateKeeper::isAccessAllowed()) | |
{ | |
if(GateKeeper::isUserLoggedIn()) | |
print "<a href=\"".$this->makeLink(false, true, null, null, null, "")."\">Logout</a> • "; | |
if(GateKeeper::isAccessAllowed() && $this->getConfig("calculate_space_level") > 0) | |
{ | |
print $this->getString("total_used_space").": ".$this->spaceUsed." MB • "; | |
} | |
if($this->getConfig("show_load_time") == true) | |
{ | |
printf($this->getString("page_load_time")." • ", (microtime(TRUE) - $_START_TIME)*1000); | |
} | |
} | |
?> | |
© <a href="http://apps.nrird.info">Nrird Apps</a>, Sept. 2013 | |
</p> | |
</div> | |
<!-- END: Info area --> | |
</div><!-- /.container --> | |
</body> | |
</html> | |
<?php | |
} | |
} | |
// | |
// This is where the system is activated. | |
// We check if the user wants an image and show it. If not, we show the explorer. | |
// | |
$encodeExplorer = new EncodeExplorer(); | |
$encodeExplorer->init(); | |
GateKeeper::init(); | |
if(!ImageServer::showImage() && !Logger::logQuery()) | |
{ | |
$location = new Location(); | |
$location->init(); | |
if(GateKeeper::isAccessAllowed()) | |
{ | |
Logger::logAccess($location->getDir(true, false, false, 0), true); | |
$fileManager = new FileManager(); | |
$fileManager->run($location); | |
} | |
$encodeExplorer->run($location); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment