<?php
/** Adminer Editor - Compact database editor
* @link https://www.adminer.org/
* @author Jakub Vrana, https://www.vrana.cz/
* @copyright 2009 Jakub Vrana
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 6.0.0
*/namespace
Adminer;const
VERSION="6.0.0";error_reporting(24575);set_error_handler(function($gc,$ic){return!!preg_match('~^Undefined (array key|offset|index)~',$ic);},E_WARNING|E_NOTICE);$Ac=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Ac||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$W){$Rh=filter_input_array(constant("INPUT$W"),FILTER_UNSAFE_RAW);if($Rh)$$W=$Rh;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection($g=null){return($g?:Db::$instance);}function
adminer(){return
Adminer::$instance;}function
driver(){return
Driver::$instance;}function
connect(){$sb=adminer()->credentials();$F=Driver::connect($sb[0],$sb[1],$sb[2]);return(is_object($F)?$F:null);}function
idf_unescape($r){if(!preg_match('~^[`\'"[]~',$r))return$r;$de=substr($r,-1);return
str_replace($de.$de,$de,substr($r,1,-1));}function
q($O){return
connection()->quote($O);}function
idx($qa,$u,$i=null){return($qa&&array_key_exists($u,$qa)?$qa[$u]:$i);}function
number($W){return
preg_replace('~[^0-9]+~','',$W);}function
int_type(){return'(tiny|small|medium|big)?int(eger|\d)?';}function
number_type(){return'(^('.int_type().'|decimal|numeric|real|(binary_|half_|scaled_)?float\d?|(binary_)?double( precision)?|(small)?money)$)';}function
remove_slashes(array$Y,$Ac=false){$F=array();foreach($Y
as$u=>$W)$F[stripslashes($u)]=(is_array($W)?remove_slashes($W,$Ac):($Ac?$W:stripslashes($W)));return$F;}function
bracket_escape($r,$xa=false){static$Ah=array(':'=>':1',']'=>':2','['=>':3','"'=>':4','='=>':5');return
strtr($r,($xa?array_flip($Ah):$Ah));}function
url_escape($O){static$Ah=array();if(!$Ah){$Ah=array(' '=>'+');foreach(str_split("\"'<>#%&+=?".ini_get("arg_separator.input"))as$Ka)$Ah[$Ka]=sprintf('%%%02X',ord($Ka));for($p=0;$p<256;$p++){if($p<32||$p>126)$Ah[chr($p)]=sprintf('%%%02X',$p);}}return
strtr((string)$O,$Ah);}function
min_version($ii,$se="",$g=null){$g=connection($g);$Hg=$g->server_info;if($se&&preg_match('~([\d.]+)-MariaDB~',$Hg,$y)){$Hg=$y[1];$ii=$se;}return$ii&&version_compare($Hg,$ii)>=0;}function
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
ini_set($mf,$X){return(function_exists('ini_set')?\ini_set($mf,$X):false);}function
ini_bool($Ed){$W=ini_get($Ed);return(preg_match('~^(on|true|yes)$~i',$W)||(int)$W);}function
ini_bytes($Ed){$W=ini_get($Ed);switch(strtolower(substr($W,-1))){case'g':$W=(int)$W*1024;case'm':$W=(int)$W*1024;case'k':$W=(int)$W*1024;}return$W;}function
max_input_vars($G,$vf){$we=(int)ini_get("max_input_vars");return($we?(int)floor(($we-$vf)/$G):0);}function
max_input_vars_error(){$Ed="max_input_vars";return
sprintf('Bol prekročený maximálny počet povolených polí. Zvýšte prosím %s.',"<b>$Ed = ".ini_get($Ed)."</b>");}function
sid(){static$F;if($F===null)$F=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$F;}function
set_password($hi,$K,$U,$B){$_SESSION["pwds"][$hi][$K][$U]=($_COOKIE["adminer_key"]&&is_string($B)?array(encrypt_string($B,$_COOKIE["adminer_key"])):$B);}function
get_password(){$F=get_session("pwds");if(is_array($F))$F=($_COOKIE["adminer_key"]?decrypt_string($F[0],$_COOKIE["adminer_key"]):false);return$F;}function
get_val($D,$k=0,$eb=null){$eb=connection($eb);$E=$eb->query($D);if(!is_object($E))return
false;$G=$E->fetch_row();return($G?$G[$k]:false);}function
get_vals($D,$d=0){$F=array();$E=connection()->query($D);if(is_object($E)){while($G=$E->fetch_row())$F[]=$G[$d];}return$F;}function
get_key_vals($D,$g=null,$Kg=true){$g=connection($g);$F=array();$E=$g->query($D);if(is_object($E)){while($G=$E->fetch_row()){if($Kg)$F[$G[0]]=$G[1];else$F[]=$G[0];}}return$F;}function
get_rows($D,$g=null,$j="<p class='error'>"){$eb=connection($g);$F=array();$E=$eb->query($D);if(is_object($E)){while($G=$E->fetch_assoc())$F[]=$G;}elseif(!$E&&!$g&&$j&&(defined('Adminer\PAGE_HEADER')||$j=="-- "))echo$j.error()."\n";return$F;}function
unique_array($G,array$t){foreach($t
as$s){if(preg_match("~^(PRIMARY|UNIQUE)$~",$s["type"])&&!$s["partial"]){$F=array();foreach($s["columns"]as$u){if(!isset($G[$u]))continue
2;$F[$u]=$G[$u];}return$F;}}}function
escape_key($u){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$u,$y))return$y[1].idf_escape(idf_unescape($y[2])).$y[3];return
idf_escape($u);}function
where(array$Z,array$l=array()){$F=array();foreach((array)$Z["where"]as$u=>$W){$u=bracket_escape($u,true);$d=escape_key($u);$k=idx($l,$u,array());$wc=$k["type"];$Nd=$k&&(is_blob($k)||preg_match('~binary~',$wc));$F[]=$d.($Nd&&!is_utf8($W)?" = ".driver()->quoteBinary($W):(JUSH=="sql"&&$wc=="json"?" = CAST(".q($W)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$k["full_type"])?"::jsonb = ".q($W)."::jsonb":(JUSH=="sql"&&is_numeric($W)&&preg_match('~\.~',$W)?" LIKE ".q($W):(JUSH=="mssql"&&strpos($wc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$W)):" = ".unconvert_field($k,q($W)))))));if(JUSH=="sql"&&preg_match('~char|text~',$wc)&&preg_match("~[^ -@]~",$W))$F[]="$d = ".q($W)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$u)$F[]=escape_key($u)." IS NULL";return
implode(" AND ",$F);}function
where_columns(array$l){$F=array();foreach((array)$_GET["null"]as$u)$F[$u]=true;foreach((array)$_GET["where"]as$u=>$W){$u=bracket_escape($u,true);foreach($l
as$z=>$k){if($u==$z||strpos($u,idf_escape($z))!==false)$F[$z]=true;}}return$F;}function
where_check($W,array$l=array()){parse_str($W,$Ma);remove_slashes(array(&$Ma));return
where($Ma,$l);}function
where_link($p,$d,$X,$kf="="){$jf=($X!==null?$kf:"IS NULL");return"&where[$p][col]=".url_escape($d).($jf!=first(adminer()->operators())?"&where[$p][op]=".url_escape($jf):"")."&where[$p][val]=".url_escape($X);}function
convert_fields(array$e,array$l,array$I=array()){$F="";foreach($e
as$u=>$W){if($I&&!in_array(idf_escape($u),$I))continue;$ra=convert_field($l[$u]);if($ra)$F
.=", $ra AS ".idf_escape($u);}return$F;}function
cookie_path(){return
strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),array(";"=>"%3B",","=>"%2C"));}function
cookie($z,$X,$je=2592000){header("Set-Cookie: $z=".rawurlencode($X).($je?"; expires=".gmdate("D, d M Y H:i:s",time()+$je)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"").($z=="adminer_import"?"":"; HttpOnly")."; SameSite=lax",false);}function
get_url($Wh,$kb){$http_response_header=null;$hc=array();set_error_handler(function($gc,$j)use(&$hc){$hc[]=preg_replace('~^file_get_contents\([^)]*\):\s*~','',$j);return
true;});$F=file_get_contents($Wh,false,$kb);restore_error_handler();$kd=(function_exists('http_get_last_response_headers')?http_get_last_response_headers():$http_response_header);return
array($F,(preg_match('~^HTTP/[\d.]+ (\d+)~',idx($kd,0,''),$y)?$y[1]:''),(array)$kd,($F===false?implode("\n",$hc):''),);}function
get_settings($nb){parse_str($_COOKIE[$nb],$Lg);return$Lg;}function
get_setting($u,$nb="adminer_settings",$i=null){return
idx(get_settings($nb),$u,$i);}function
save_settings(array$Lg,$nb="adminer_settings"){$X=http_build_query($Lg+get_settings($nb));cookie($nb,$X);$_COOKIE[$nb]=$X;}function
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==PHP_SESSION_NONE))session_start();}function
stop_session($Ic=false){$Yh=ini_bool("session.use_cookies");if(!$Yh||$Ic){session_write_close();if($Yh&&ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($u){return$_SESSION[$u][DRIVER][SERVER][$_GET["username"]];}function
set_session($u,$W){$_SESSION[$u][DRIVER][SERVER][$_GET["username"]]=$W;}function
auth_url($hi,$K,$U,$h=null){$Vh=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($h!==null?"db|":"").($hi=='mssql'||$hi=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Vh,$y);return"$y[1]?".(sid()?SID."&":"").($_GET["ext"]?"ext=".url_escape($_GET["ext"])."&":"").($hi!="server"||$K!=""?url_escape($hi)."=".url_escape($K)."&":"")."username=".url_escape($U).($h!=""?"&db=".url_escape($h):"").($y[2]?"&$y[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($oe,$Ge=null){if($Ge!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($oe!==null?$oe:$_SERVER["REQUEST_URI"]))][]=$Ge;}if($oe!==null){if($oe=="")$oe=".";header("Location: $oe");exit;}}function
query_redirect($D,$oe,$Ge,$hg=true,$nc=true,$sc=false,$rh=""){if($nc){$Yg=microtime(true);$sc=!connection()->query($D);$rh=format_time($Yg);}$Vg=($D?adminer()->messageQuery($D,$rh,$sc):"");if($sc){adminer()->error
.=error().$Vg.script("messagesPrint();")."<br>";return
false;}if($hg)redirect($oe,$Ge.$Vg);return
true;}class
Queries{static$queries=array();static$start=0;}function
queries($D){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$D:(preg_match('~;$~',$D)?"DELIMITER ;;\n$D;\nDELIMITER ":$D).";");return
connection()->query($D);}function
apply_queries($D,array$R,$jc='Adminer\table'){foreach($R
as$P){if(!queries("$D ".$jc($P)))return
false;}return
true;}function
queries_redirect($oe,$Ge,$hg){$bg=implode("\n",Queries::$queries);$rh=format_time(Queries::$start);return
query_redirect($bg,$oe,$Ge,$hg,false,!$hg,$rh);}function
format_time($Yg){return
sprintf('%.3f s',max(0,microtime(true)-$Yg));}function
relative_uri(){return
preg_replace_callback('~^[^?]*~',function($y){return
str_replace(":","%3A",$y[0]);},preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($Af=""){return
substr(preg_replace("~(?<=[?&])($Af".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_files($u,$Ab=false){$xc=$_FILES[$u];if(!$xc)return
null;foreach($xc
as$u=>$W)$xc[$u]=(array)$W;$F=array();foreach($xc["error"]as$u=>$j){if($j)return$j;$z=$xc["name"][$u];$yh=$xc["tmp_name"][$u];$jb=file_get_contents($Ab&&preg_match('~\.gz$~',$z)?"compress.zlib://$yh":$yh);if($Ab){$Yg=substr($jb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Yg))$jb=iconv("utf-16","utf-8",$jb);elseif($Yg=="\xEF\xBB\xBF")$jb=substr($jb,3);}$F[]=array($z,$jb);}return$F;}function
get_file($u,$Ab=false,$Db=""){$_c=get_files($u,$Ab);if(!is_array($_c))return$_c;$F='';foreach($_c
as$xc){$jb=$xc[1];$F
.=$jb;if($Db)$F
.=(preg_match("($Db\\s*\$)",$jb)?"":$Db)."\n\n";}return$F;}function
upload_error($j){$Ae=($j==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($j?'Súbor sa nepodarilo nahrať.'.($Ae?" ".sprintf('Maximálna povolená veľkosť súboru je %sB.',$Ae):""):'Súbor neexistuje.');}function
repeat_pattern($If,$v){return
str_repeat("$If{0,65535}",$v/65535)."$If{0,".($v%65535)."}";}function
is_utf8($W){return(preg_match('~~u',$W)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$W));}function
format_number($W){return
strtr(number_format($W,0,".",' '),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
format_status(array$Q,$u){$W=idx($Q,$u,'?');if(!is_numeric($W))return
h($W);if($W<0)return'?';$na=($u=="Rows"&&(JUSH=="sqlite"||$Q["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")));return($na?"~ ":"").format_number($W);}function
friendly_url($W){return
preg_replace('~\W~i','-',$W);}function
table_status1($P,$tc=false){$F=table_status($P,$tc);return($F?reset($F):array("Name"=>$P));}function
column_foreign_keys($P){$F=array();foreach(adminer()->foreignKeys($P)as$n){foreach($n["source"]as$W)$F[$W][]=$n;}return$F;}function
fields_from_edit(){$F=array();foreach((array)$_POST["field_keys"]as$u=>$W){if($W!=""){$W=bracket_escape($W);$_POST["function"][$W]=$_POST["field_funs"][$u];$_POST["fields"][$W]=$_POST["field_vals"][$u];}}foreach((array)$_POST["fields"]as$u=>$W){$z=bracket_escape($u,true);$F[$z]=array("field"=>$z,"full_type"=>"","type"=>"","privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>true,"auto_increment"=>($z==driver()->primary),);}return$F;}function
dump_headers($td,$Qe=false){$F=adminer()->dumpHeaders($td,$Qe);$wf=$_POST["output"];if($wf!="text"||$F=="tar"){$bb=($wf!="text"&&$wf!="file"&&preg_match('~^[0-9a-z]+$~',$wf)?".$wf":"");header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($td).".$F$bb");}session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$F;}function
dump_csv(array$G){$Jh=$_POST["format"]=="tsv";foreach($G
as$u=>$W){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($Jh?'\t':'[,;]|^$').'~',$W))$G[$u]='"'.str_replace('"','""',$W).'"';}echo
implode(($_POST["format"]=="csv"?",":($Jh?"\t":";")),$G)."\r\n";}function
parse_csv($vb,$J){$F=array();preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$vb,$ue);foreach($ue[0]as$G){preg_match_all("~((?>\"[^\"]*\")+|[^$J]*)$J~",$G.$J,$ve);$F[]=$ve[1];}return$F;}function
csv_value($W){return(preg_match('~^".*"$~s',$W)?str_replace('""','"',substr($W,1,-1)):$W);}function
apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function
get_temp_dir(){return
ini_get("upload_tmp_dir")?:sys_get_temp_dir();}function
file_open_lock($m){if(is_link($m))return;$Pc=@fopen($m,"c+");if(!$Pc)return;@chmod($m,0660);if(!flock($Pc,LOCK_EX)){fclose($Pc);return;}return$Pc;}function
file_write_unlock($Pc,$yb){rewind($Pc);fwrite($Pc,$yb);ftruncate($Pc,strlen($yb));file_unlock($Pc);}function
file_unlock($Pc){flock($Pc,LOCK_UN);fclose($Pc);}function
first(array$qa){return
reset($qa);}function
password_file($qb){$m=get_temp_dir()."/adminer.key";if(!$qb&&!file_exists($m))return'';$Pc=file_open_lock($m);if(!$Pc)return'';$F=stream_get_contents($Pc);if(!$F){$F=rand_string();file_write_unlock($Pc,$F);}else
file_unlock($Pc);return$F;}function
rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function
select_value($W,$x,array$k,$ph){if(is_array($W)){$F="";if(array_filter($W,'is_array')==array_values($W)){$Wd=array();foreach($W
as$V)$Wd+=array_fill_keys(array_keys($V),null);foreach(array_keys($Wd)as$Ud)$F
.="<th>".h($Ud);foreach($W
as$V){$F
.="<tr>";foreach(array_merge($Wd,$V)as$di)$F
.="<td>".select_value($di,$x,$k,$ph);}}else{foreach($W
as$Ud=>$V)$F
.="<tr>".($W!=array_values($W)?"<th>".h($Ud):"")."<td>".select_value($V,$x,$k,$ph);}return"<table>$F</table>";}if(!$x)$x=adminer()->selectLink($W,$k);if($x===null){if(is_mail($W))$x="mailto:$W";if(is_url($W))$x=$W;}$W=driver()->value($W,$k);$F=adminer()->editVal($W,$k);if($F!==null){if(!is_utf8($F))$F="\0";elseif($ph!=""&&is_shortable($k))$F=shorten_utf8($F,max(0,+$ph));else$F=h($F);}return
adminer()->selectVal($F,$x,$k,$W);}function
is_blob(array$k){return
preg_match('~blob|bytea|raw|file'.(JUSH=="mssql"?'|binary|image':'').'~',$k["type"])&&!in_array($k["type"],idx(driver()->structuredTypes(),'Užívateľské typy',array()));}function
is_mail($Zb){$sa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Pb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$If="$sa+(\\.$sa+)*@($Pb?\\.)+$Pb";return
is_string($Zb)&&preg_match("(^$If(,\\s*$If)*\$)i",$Zb);}function
is_url($O){$Pb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^((https?):)?//($Pb?\\.)+$Pb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$O);}function
is_shortable(array$k){return!preg_match('~'.number_type().'|date|time|year~',$k["type"]);}function
host_port($K){return(preg_match('~^(:([^:].*)|(\[(.+)\]|(([^:]+://)?[^:]+))(:(\d+))?)$~',$K,$y)?array($y[4].$y[5],$y[2].$y[8]):array($K,''));}function
count_rows($P,array$Z,$Od,array$Xc){$D=" FROM ".table($P).($Z?" WHERE ".implode(" AND ",$Z):"");return($Od&&(JUSH=="sql"||count($Xc)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$Xc).")$D":"SELECT COUNT(*)".($Od?" FROM (SELECT 1$D GROUP BY ".implode(", ",$Xc).") x":$D));}function
slow_query($D){$h=adminer()->database();$sh=adminer()->queryTimeout();$Pg=driver()->slowQuery($D,$sh);$g=null;if(!$Pg&&support("kill")){$g=connect();if($g&&($h==""||$g->select_db($h))){$Xd=get_val(connection_id(),0,$g);echo
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Xd&token=".get_token()."'); }, 1000 * $sh);");}}ob_flush();flush();$F=@get_key_vals(($Pg?:$D),$g,false);if($g){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$F;}function
get_token(){$eg=rand(1,1e6);return($eg^$_SESSION["token"]).":$eg";}function
verify_token(){list($zh,$eg)=explode(":",$_POST["token"]);return($eg^$_SESSION["token"])==$zh&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"));}function
compress_alphabet(){return
strtr(implode(range('"','~')),"'\\","!\n");}function
decompress_string($O,$Gb=""){$la=array_flip(str_split(compress_alphabet()));$v=strlen($O);$gi=($v?13*($v-1)/2-$la[$O[0]]:0);$Ca="";$pg=0;$qg=0;for($p=1;$p<$v;$p+=2){$pg=($pg<<13)+$la[$O[$p]]*93+$la[$O[$p+1]];$qg+=13;while($qg>=8&&$gi>=8){$qg-=8;$gi-=8;$Ca
.=chr($pg>>$qg);$pg&=(1<<$qg)-1;}}if($Ca=="")return"";if($Gb!=""&&function_exists('inflate_init'))return
inflate_add(inflate_init(ZLIB_ENCODING_RAW,array('dictionary'=>$Gb)),$Ca,ZLIB_FINISH);return($Gb==""&&function_exists('gzinflate')?gzinflate($Ca):inflate($Ca,$Gb));}function
inflate($Ca,$Gb=""){$ge=array(3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258);$he=array(0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0);$Jb=array(1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577);$Lb=array(0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13);$F=$Gb;$Of=0;do{$Bc=inflate_bits($Ca,$Of,1);$S=inflate_bits($Ca,$Of,2);if(!$S){$Of=($Of+7)&~7;$v=inflate_bits($Ca,$Of,16);$Of+=16;$F
.=substr($Ca,$Of>>3,$v);$Of+=$v<<3;}else{if($S==1){$me=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$Mb=array_fill(0,30,5);}else{$le=inflate_bits($Ca,$Of,5)+257;$Kb=inflate_bits($Ca,$Of,5)+1;$of=array(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);$Je=array_fill(0,19,0);$Ie=inflate_bits($Ca,$Of,4)+4;for($p=0;$p<$Ie;$p++)$Je[$of[$p]]=inflate_bits($Ca,$Of,3);$Ke=inflate_table($Je);$ie=array();while(count($ie)<$le+$Kb){$eh=inflate_symbol($Ca,$Of,$Ke);if($eh==16)$ie=array_merge($ie,array_fill(0,inflate_bits($Ca,$Of,2)+3,end($ie)));elseif($eh==17)$ie=array_merge($ie,array_fill(0,inflate_bits($Ca,$Of,3)+3,0));elseif($eh==18)$ie=array_merge($ie,array_fill(0,inflate_bits($Ca,$Of,7)+11,0));else$ie[]=$eh;}$me=array_slice($ie,0,$le);$Mb=array_slice($ie,$le);}$ne=inflate_table($me);$Ob=inflate_table($Mb);while(($eh=inflate_symbol($Ca,$Of,$ne))!=256){if($eh<256)$F
.=chr($eh);else{$v=$ge[$eh-257]+inflate_bits($Ca,$Of,$he[$eh-257]);$Nb=inflate_symbol($Ca,$Of,$Ob);$ef=strlen($F)-$Jb[$Nb]-inflate_bits($Ca,$Of,$Lb[$Nb]);for($p=0;$p<$v;$p++)$F
.=$F[$ef+$p];}}}}while(!$Bc);return($Gb==""?$F:substr($F,strlen($Gb)));}function
inflate_bits($Ca,&$Of,$pb){$F=0;for($p=0;$p<$pb;$p++){$F+=((ord($Ca[$Of>>3])>>($Of&7))&1)<<$p;$Of++;}return$F;}function
inflate_table(array$ie){$P=array();$Ta=0;for($Da=1;$Da<=max($ie);$Da++){foreach($ie
as$eh=>$v){if($v==$Da){$P[$Da][$Ta]=$eh;$Ta++;}}$Ta<<=1;}return$P;}function
inflate_symbol($Ca,&$Of,array$P){$Ta=0;$Da=0;do{$Ta=($Ta<<1)+inflate_bits($Ca,$Of,1);$Da++;}while(!isset($P[$Da][$Ta]));return$P[$Da][$Ta];}function
script($Tg,$_h="\n"){return"<script".nonce().">$Tg</script>$_h";}function
script_src($Wh,$Bb=false){return"<script src='".h($Wh)."'".nonce().($Bb?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
on($kc,$cd,$oa=null){$pa=array();foreach(array_slice(func_get_args(),2)as$W)$pa[]=json_encode($W,256);return" data-on$kc='".str_replace(array('&','<',"'"),array('&amp;','&lt;','&#039;'),"$cd(".implode(", ",$pa).")")."'";}function
input_hidden($z,$X=""){return"<input type='hidden' name='".h($z)."' value='".h($X)."'>\n";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($O){return
str_replace(array('&','<','"',"'","\0"),array('&amp;','&lt;','&quot;','&#039;','&#0;'),$O);}function
nl_br($O){return
str_replace("\n","<br>",$O);}function
checkbox($z,$X,$Oa,$ae="",$c="",$Ra="",$ce=""){$F="<input type='checkbox' name='$z' value='".h($X)."'".($Oa?" checked":"").($ae==""&&$Ra?" class='$Ra'":"").($ce?" aria-labelledby='$ce'":"").$c.">";return($ae!=""?"<label".($Ra?" class='$Ra'":"").">$F".h($ae)."</label>":$F);}function
optionlist($_,$_g=null,$Zh=false){$F="";foreach($_
as$Ud=>$V){$nf=array($Ud=>$V);if(is_array($V)){$F
.='<optgroup label="'.h($Ud).'">';$nf=$V;}foreach($nf
as$u=>$W)$F
.='<option'.($Zh||is_string($u)?' value="'.h($u).'"':'').($_g!==null&&($Zh||is_string($u)?(string)$u:$W)===$_g?' selected':'').'>'.h($W);if(is_array($V))$F
.='</optgroup>';}return$F;}function
html_select($z,array$_,$X="",$c="",$ce=""){static$ae=0;$be="";if(!$ce&&substr($_[""],0,1)=="("){$ae++;$ce="label-$ae";$be="<option value='' id='$ce'>".h($_[""]);unset($_[""]);}return"<select name='".h($z)."'".($ce?" aria-labelledby='$ce'":"")."$c>".$be.optionlist($_,$X)."</select>";}function
html_radios($z,array$_,$X="",$J=""){$F="";foreach($_
as$u=>$W)$F
.="<label><input type='radio' name='".h($z)."' value='".h($u)."'".($u==$X?" checked":"").">".h($W)."</label>$J";return$F;}function
confirm($Ge=""){return
on('click','confirmClick',$Ge?:'Naozaj?');}function
print_fieldset($q,$fe,$li=false){echo"<fieldset><legend>","<a href='#fieldset-$q' class='toggle'>$fe</a>","</legend>","<div id='fieldset-$q'".($li?"":" class='hidden'").">\n";}function
bold($Ea,$Ra=""){return($Ea?" class='active $Ra'":($Ra?" class='$Ra'":""));}function
js_escape($O){return
str_replace("<","\\x3C",addcslashes($O,"\r\n'\\"));}function
js_escape_re($O){return
addcslashes(preg_quote($O,"/"),"\r\n");}function
pagination_href($A){return
remove_from_uri("page|next").($A?"&page=$A".($_GET["next"]!=""?"&next=".url_escape($_GET["next"]):""):"");}function
pagination($A,$wb){return" ".($A==$wb?($A?"<b>".($A+1)."</b>":$A+1):'<a href="'.h(pagination_href($A)).'">'.($A+1)."</a>");}function
hidden_fields(array$Zf,array$wd=array(),$Tf=''){$F=false;foreach($Zf
as$u=>$W){if(!in_array($u,$wd)){if(is_array($W))hidden_fields($W,array(),$u);else{$F=true;echo
input_hidden(($Tf?$Tf."[$u]":$u),$W);}}}return$F;}function
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),($_GET["ext"]?input_hidden("ext",$_GET["ext"]):""),(isset($_GET[DRIVER])?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
file_input($c,$pg=""){$xe="max_file_uploads";$ye=ini_get($xe);$Ae="upload_max_filesize";$Be=ini_bytes($Ae);$Rf=ini_bytes("post_max_size");if($Rf&&$Rf<$Be){$Ae="post_max_size";$Be=$Rf;}$Ce=ini_get($Ae);return(ini_bool("file_uploads")?"<input type='file'$c".on('change','fileChange',(int)$ye,sprintf('Zvýšte %s.',"$xe = $ye"),$Be,sprintf('Zvýšte %s.',"$Ae = $Ce")).">$pg":'Nahrávanie súborov nie je povolené.');}function
enum_input($S,$c,array$k,$X,$cc=""){preg_match_all("~'((?:[^']|'')*)'~",$k["length"],$ue);$Tf=($k["type"]=="enum"?"val-":"");$Oa=(is_array($X)?in_array("null",$X):$X===null);$F=($k["null"]&&$Tf?"<label><input type='$S'$c value='null'".($Oa?" checked":"")."><i>$cc</i></label>":"");foreach($ue[1]as$W){$W=stripcslashes(str_replace("''","'",$W));$Oa=(is_array($X)?in_array($Tf.$W,$X):$X===$W);$F
.=" <label><input type='$S'$c value='".h($Tf.$W)."'".($Oa?' checked':'').'>'.h(adminer()->editVal($W,$k)).'</label>';}return$F;}function
input(array$k,$X,$o,$wa=false,$T=false){$z=h(bracket_escape($k["field"]));echo"<td class='function'>";if(is_array($X)&&!$o)$o="json";$Sd=($o=="json"||preg_match('~^jsonb?$~',$k["full_type"]));if($Sd&&$X!=''&&(JUSH!="pgsql"||$k["type"]!="json"))$X=json_encode(is_array($X)?$X:json_decode($X),128|64|256);$og=(JUSH=="mssql"&&$T&&$k["auto_increment"]);if($og&&!$_POST["save"])$o=null;$Uc=(isset($_GET["select"])||$og?array("orig"=>'originál'):array())+adminer()->editFunctions($k);$fc=driver()->enumLength($k);if($fc){$k["type"]="enum";$k["length"]=$fc;}$c=" name='fields[$z]".($k["type"]=="enum"||$k["type"]=="set"?"[]":"")."'".($wa?" autofocus":"");echo
driver()->unconvertFunction($k)." ";$P=$_GET["edit"]?:$_GET["select"];if($k["type"]=="enum")echo
h($Uc[""])."<td>".adminer()->editInput($P,$k,$c,$X);else{$fd=(in_array($o,$Uc)||isset($Uc[$o]));$Cc=0;foreach($Uc
as$u=>$W){if($u===""||!$W)break;$Cc++;}echo(count($Uc)>1?"<select name='function[$z]'".on('change','functionChange').on_help_value('^SQL$').">".optionlist($Uc,$o===null||$fd?$o:"")."</select>":h(reset($Uc)))."<td".($Cc&&count($Uc)>1?on('input','skipOriginal',$Cc):"").">";$Gd=adminer()->editInput($P,$k,$c,$X);if($Gd!="")echo$Gd;elseif(preg_match('~bool~',$k["type"]))echo"<input type='hidden'$c value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?" checked":"")."$c value='1'>";elseif($k["type"]=="set")echo
enum_input("checkbox",$c,$k,(is_string($X)?explode(",",$X):$X));elseif(is_blob($k)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$z'>";elseif($Sd)echo"<textarea$c cols='50' rows='12' class='jush-json'>".h($X).'</textarea>';elseif(($nh=preg_match('~text|lob|memo~i',$k["type"]))||preg_match("~\n~",$X)){if($nh&&JUSH!="sqlite")$c
.=" cols='50' rows='12'";else{$H=min(12,substr_count($X,"\n")+1);$c
.=" cols='30' rows='$H'";}echo"<textarea$c>".h($X).'</textarea>';}else{$Lh=driver()->types();$De=(!preg_match('~int~',$k["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$k["length"],$y)?((preg_match("~binary~",$k["type"])?2:1)*$y[1]+($y[3]?1:0)+($y[2]&&!$k["unsigned"]?1:0)):($Lh[$k["type"]]?$Lh[$k["type"]]+($k["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$k["type"]))$De+=7;echo"<input".((!$fd||$o==="")&&preg_match('~^'.int_type().'$~',$k["type"])&&!preg_match('~\[]~',$k["full_type"])?" type='number'":"")." value='".h($X)."'".($De?" data-maxlength='$De'":"").(preg_match('~char|binary~',$k["type"])&&$De>20?" size='".($De>99?60:40)."'":"")."$c>";}echo
adminer()->editHint($P,$k,$X),(count($Uc)>1?script("fire(qs('select', qsl('td').previousSibling), 'change');",""):"");}}function
process_input(array$k){$r=bracket_escape($k["field"]);$o=idx($_POST["function"],$r);if($o=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$k["on_update"])?idf_escape($k["field"]):false);if($o=="NULL")return"NULL";if(is_blob($k)&&ini_bool("file_uploads")){$xc=get_file("fields-$r");if(!is_string($xc))return
false;return
driver()->quoteBinary($xc);}$X=idx($_POST["fields"],$r);if($X===null)return
false;if($k["type"]=="enum"||driver()->enumLength($k)){$X=idx($X,0);if($X=="orig"||!$X)return
false;if($X=="null")return"NULL";$X=substr($X,4);}if($k["auto_increment"]&&$X=="")return
null;if($k["type"]=="set")$X=implode(",",(array)$X);if($o=="json"){$X=json_decode($X,true);if(!is_array($X))return
false;return$X;}return
adminer()->processInput($k,$X,$o);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Ag="<ul>\n";foreach(table_status('',true)as$P=>$Q){$z=adminer()->tableName($Q);if(isset($Q["Engine"])&&$z!=""&&(!$_POST["tables"]||in_array($P,$_POST["tables"]))){$E=connection()->query("SELECT".limit("1 FROM ".table($P)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($P),array())),1));if(!$E||$E->fetch_row()){$Wf="<a href='".h(ME."select=".url_escape($P)."&where[0][op]=".url_escape($_GET["where"][0]["op"])."&where[0][val]=".url_escape($_GET["where"][0]["val"]))."'>$z</a>";echo"$Ag<li>".($E?$Wf:"<p class='error'>$Wf: ".error())."\n";$Ag="";}}}echo($Ag?"<p class='message'>".'Žiadne tabuľky.':"</ul>")."\n";}function
on_help($nh,$Mg=0){return
on('mouseover','helpMouseover',$nh,$Mg).on('mouseout','helpMouseout');}function
on_help_value($jg="",$ng=""){return
on('mouseover','helpValueMouseover',$jg,$ng).on('mouseout','helpMouseout');}function
edit_form($P,array$l,$G,$T,$j=''){$jh=adminer()->tableName(table_status1($P,true));page_header(($T?'Upraviť':'Vložiť'),$j,array("select"=>array($P,$jh)),$jh);adminer()->editRowPrint($P,$l,$G,$T);if($G===false){echo"<p class='error'>".'Žiadne riadky.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";$Yb=false;$pi=($T&&!isset($_GET["select"])?where_columns($l):array());$lb=(count($pi)!=count($l));if(!$lb)$pi=array();if(!$l)echo"<p class='error'>".'Nemáte oprávnenie na aktualizáciu tejto tabuľky.'."\n";else{echo"<table class='layout nowrap'".on('keydown','editingKeydown').">\n";$wa=!$_POST;foreach($l
as$z=>$k){echo"<tr".($pi[$z]?on('change','whereChange'):"")."><th>".adminer()->fieldName($k);$i=idx($_GET["set"],bracket_escape($z));if($i===null){$i=$k["default"];if($k["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$i,$kg))$i=$kg[1];if(JUSH=="sql"&&preg_match('~binary~',$k["type"]))$i=bin2hex($i);}$X=($G!==null?($G[$z]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$k["type"])&&is_array($G[$z])?implode(",",$G[$z]):(is_bool($G[$z])?+$G[$z]:$G[$z])):(!$T&&$k["auto_increment"]?"":(isset($_GET["select"])?false:$i)));if(!$_POST["save"]&&is_string($X))$X=adminer()->editVal($X,$k);if(($T&&!isset($k["privileges"]["update"]))||$k["generated"])echo"<td class='function'><td>".select_value($X,'',$k,null);else{$Yb=true;$o=($_POST["save"]?idx($_POST["function"],bracket_escape($z),""):($T&&preg_match('~^CURRENT_TIMESTAMP~i',$k["on_update"])?"now":($X===false?null:($X!==null?'':'NULL'))));if(!$_POST&&!$T&&$X==$k["default"]&&preg_match('~^[\w.]+\(~',$X))$o="SQL";if(preg_match("~time~",$k["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$X)){$X="";$o="now";}if($k["type"]=="uuid"&&$X=="uuid()"){$X="";$o="uuid";}if($wa!==false)$wa=($k["auto_increment"]||$o=="now"||$o=="uuid"?null:true);input($k,$X,$o,$wa,$T);if($wa)$wa=false;}}if(!fields($P)&&driver()->primary!="")echo"<tr>"."<th><input name='field_keys[]'".on('input','fieldChange').">"."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>";echo"</table>\n";}echo"<p>\n";if($Yb){echo"<input type='submit' value='".'Uložiť'."'>\n";if(!isset($_GET["select"])&&$lb){$Hb=($pi&&($j!=""||adminer()->error!="")?" disabled":"");echo"<input type='submit' name='insert' value='".($T?'Uložiť a pokračovať v úpravách':'Uložiť a vložiť ďalší')."' title='Ctrl+Shift+Enter'$Hb".($T?on('click','ajaxForm','Ukladá sa…'):"").">\n";}}echo($T?"<input type='submit' name='delete' value='".'Zmazať'."'".confirm().">\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
shorten_utf8($O,$v=80,$ch=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$v).")($)?)u",$O,$y))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$v).")($)?)",$O,$y);return
h($y[1]).$ch.(isset($y[2])?"":"<i>…</i>");}function
icon($sd,$z,$rd,$uh,$c=""){return"<button ".($z?"type='submit' name='$z'":"draggable='true' tabindex='-1'")." title='".h($uh)."' class='icon icon-$sd".($z?"":" jsonly")."'$c><span>$rd</span></button>";}function
copy_icon(){$ob='Kopírovať';return"<a href='' class='jsonly icon-copy' title='$ob'><span>$ob</span></a>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
decompress_string('"c01e=<Wb2N?hU-XG)-5X.j3aFaIeR2@G19p}9$bRAi!B?LCVu<HO.XAn1nBXh1a+5;Is5?;+?F@1L3w;Sw>JfE`s_3vFuf4K`9Y]j(G)?FN>W[-LOmhRU6Oq1Jpx(h+Zsiqb4vUwV}:)2}TEy&E,7VT=%El:4}-lrM`}XOQEIlHS
CgQ(:<+UaKL)nUHsX-a*
p
[c8REDEN(<vPeYISepv^I$00Gl&SseDBFXDx4;qZXN1F/$_Nl`MV8r;_edL)(U9RL+%egZ"fTf9=SL_iV9^?:FjIWS/M_[@m[%>708PHf2<*,/U?k9$.d-K)^DTidk+zG[YnDPup[9@a()O%@F/?[V.]G1y[WZWWiB"sSg#jYKun<
KjD^@"R*ahh|e/^PJc3&a82-@DahDx:0qKngGpC+gi??*.KfXe;t+H](J(a0$@mDE,NcDh&EFwR(D(=HkjK(h`T?<]$qQoiI-g8N`(;e6b&eDb`JlGI!<K_qlP0_JVJ?*`FwsV"GRZle@C8n6KJLCqMnH~
*Q@2"GuE1S,$"0Us]TORzPI]5uTprXo$24z*?ZyS@A<"qtdGdU%AF-2bnbBHuei8.%)3&h_2ukv1UWKM!(:D}7V7*m2vg8wHM)mlK`5D{fZ%/LuBoHmWap<lL/{-E!jlO)8kB%0.n3gUc5DT(%DMzs4%=0,m[Prp/%IZQ@qs
<h7(Ex,R:w6@0LUL;RBNE%Hx9%i<7NPXfZfPf[61Rp)Imp,jBsK:0_:;Y)P5AN!tdt.cJT#H;tx]42Gz="8.qb$:,rV.:xHBHKbz@MXNP<_:gs:"l`LP.L"iS]lKX8<v4+Jm,&n,rX`dUQpq0u?_LP4/4+N0^jniic`pqN.d!X)gt-d%<0=V=,cU2hQg]EXO*a?
wE[f*C1EAnNyN9?;nFZWF%NjgJ$
-j:2u<l
.32gx+_~=f+iE];USHPq1?:0F@9Rlh=eD
P[?ZmT4L`M?6lNFaz%g")}DH4/DrWF69[THF1T`0/F=<8z?BBuhvTBLu2.EIc]/`.UcOk4UF.oR^.YaAb&-wcwoj!dZKjr*YMKX9:;+|kYCo1J,y$kKJZS"OPAl6s!Xn^_#CwC+mU"*v]0
oplZ[FZ;LBgd*$!
,Jh&.9IY+vx
@vRAj03%PT3"irSTn(>Ttx.k-/Xf_ll/n%?&"H==KhtUj/(gA1+s#ruq"6GBD9W`y&9;MSjOM4m;6oz!
M%s>FeHbQ!o`#l_ZL/?ri0Tx!Wa@`g=9l=HYJESE(k8MBL[OA_bx4n*&eCCi44Di3r2[WC`>,8j[^@P-+??-?6:qD).IA<q@Zy]69EE[kIh2*CZ+U,Fo]pIE_R.7=oWt."(x?&-XhY;Eq,JBFzYQGHwRP6V
4e&RpRa`,6+y:Re{93xaIM1}N8Um/J]0Q)/2)BCoQhfC1SBeLXr.4)"J1:a`6..+LpV0T;*8jg1xOP&IlufEezj}:!^(v;]JKx.wIfimR"_>X/ONGN<BXjC%$}#nKn[A@[!e8T*J#f`p#P47Z-<~l"s;Z+F:Q{mjT%!eW?d?YrF&LjDhb7RDU"J]%k8}_-eB+9[PO:JXIW3~;tqN@ollho:tR:OOuNBG6pT?2&+qCV._1Rk5%l8io3D"kAA#mQ9UH|UoPeA(shRL>@4oB(ZCh&M#a2*X%OoDHnZlKxuQp7M?($g)(Ao.@lVO#K#Isi5E(tCF^^#+&?`sZU:,r;pP96$$/*2bZx>_>5_j&lI=&~ilgw;jO+KFW+$/4pj)j8=Fm7AS,G8qEZ%K:NTkWpZt$eI
i9-pK;iPTTpLV@-$mDk:>gb~PCG*A1P/TYQb*LDB4de/:adI.SBu5ES)(af*&PDsRt:14PlY!Fgg,?g9lfO$c2An[_n}=40MWgkn)_/=#&OGlm!`.bNFBy4m1-?3R2gZYbnbCE4b&*jT4=OQ;m$bxnFIU20QRq8yY_@g*KwAH}b^>7-w=vuotei~BfFI7]PS;^wWDs"~luE;NB)I6i*GP|&AC^aH>QgDaE18N;[emESal>lRKd(!C6b=b$(m)>TBG"<]`P)*[N`[5z(`.G70OY@VL}9dAv,@Vl>wj4ha(pF14L#CNYo5i^k|OqQ1XP/"e@QuhkV~T|R^xp;5XQ^@E(UNdhnMYIyZ7CG%<D"9NwjZ]Dr%.:=x/d#3vj&8^p85f$3Dep4b??gb^~`|[}Z|mGZ]dA$+A4cmkrS;0hyXQi6cDKu,r6Wy%Si~*8WoH
UQ]4@.-+>K#a*wABq~"1XU%@m4e~<SO<-(p7Lo9=eo5
OaS|OJhat/WA@#0At~0t+?"|oGpCwK)wCF1Qs-:lPZmsV
52BQ>mse@^@~J5]DpDHg-C$3[V%4G|$(f8D,!.MMwkLAf_9cLw->Dxe4R.xr6uN%o#nU,Phb7Vb
wo?vq-
ewL?NL#HR5Zo8M>l>C}^JeGxY1-L{:_oj^LugYmx"h2l}TeV{Y$g0
~"zW`i6ufq^tWi&[fuzMA_w+LkXS+ey7VUSElo}WhGBG[4KXG!)@)wNTUhlsSg.3z]SWCvuUD1UB=iPtv+]ua<s8BBzH[B$to2g_m-~])LQt|j&oDynEa(LhRS[?g!>wxpk@N<[RiTruCM
nOh!:%D$7hSzR0qWaa$Rx~%QdYi4V1R,LQi{"4L%dy64n#!%M*d$:Ktfl*rQM@!jR(fu^:p!/`
h3R+x0Mu;dE7YqUS,dEZE&X-R#qH:+yG79SXfBJY,s/-H+7U
*5.51kcnkA_37A"G<8l<8"sbVlwzT_HL6yI)_un#Pua+u^cxs")cjiLB4qv.fWk6nPE!74pEc%<li`WoeF
!^WXcw_.$py?hkN*,tBmiMNh-Mz:_-(ahMbclQusmi&MrjWSd,wuZd#l{e|A>QjI&A&s#%Ik#iX=Lg>c!F<L
QtYl3$R,mDE)p
`UZ?0Ef?l(l!aefX=D39(y0XUE5]pp0VMXx83yyr+10G:%Gl67RxU=cm*)CuTnQc%}EXUgbuN`VQe[jK`M"y010qL{5X%g5ch(f`
W/Oc%Z)wV#6ZfAOsw.Xd7ALMW^4->`m,c.N6fpzWq)@XTbmCWev"`
)Y|n
y
o[
$1rq4<$9PmFu%W:Se1Tc49>uACW,8GO:a>Q.uo!C?WGd5t~VTKeF9nil4<32Jp9MAM2L@L":+_bsusvXXb0*0K-P{J=Rvu?k94M-pTE2sdrR$#Ky<qwX^wf=K>86!7O@"B}O+hf6dW~Tb6S<z8pMu<#X$+{0}8IS3UM+f1#`e.?O8]_J{,IO8:&[!7v_?<Qd^=3sj_yIo#I)*>gR)5BH/YfwB');}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
decompress_string('$OsX)b3V?$d0U7vY9-;!Qq>3cgt$UfPgAljQVK{O:.VPRl*1@6^xaIf[3n=hlcd(Db..),$]BW]<X8*%o<p>`@b<R>H==<<`@/q>O@gwK#>3i?]0#lfy|9$&p%6.Y*e,:SKB;766eRmgF?RO-63UTkW%*l@kY6Z3I)H3!
mj=A$Y`#|M_N!/|lxFG=TuW:1kFeE<Dh%WvDv*"U!u@iQh-#$0Ic_o/6^C)KwjXbb0(=70%][(h)g+r9~P
M/ZR$#%U5h?%Ey;diyOF
Sv,-RBsjp5Ac%.a0Ji<f9(^h)7"etoCfBxp/L+W@
n[JI[4;En&j@$=h]3lx<#CiR1#6eM2MiwxfX6S6
:v%b_hD)At,:e6Ugr?&/9A
;aN:TrU;T=$v9bLNg-U[2ZtlO8[$5&#""qe2x-tUatRa;(-vOqv!|Xa0>aC:QXXS5Wi__DuW1qPY-fW
&Lc3T9m06SQ9!)O*3+u%ce=j}UI.Jpb%y[z3yRL<=7S<m`E>*[PvB)KtgP%)<hFY80;KN:Vjg]f`Asd=C1lh.Mh9Z4I:{"m$?r,)@0K/)<,Mx=i-:[@acN,bmqL!:(9ST%:LcK|h{D*ZS3p/TsHp8fqAYGl4f::48g=p
emRfGVQB(-ju)n^TDuB.M+5&-nM"mdwhn]P1Q1>0b7`PXgyF*`udh.H.DE2mc3qS<acsvdVc)7r][Z=/4FB>(od^3ZVB(mQ+cWC:Qo#k5WJnR$jkNjVFa_[:I^&<-&An6AAyv[@YCy=9v.HKisgB$)G6[-"VqEWw>j:zYk:4v$fmJoO<c`utyTLQe`en3!nXH[6%K*t41+');}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
decompress_string('#X/GfnsWL2O6ulK74$36$>gxJsSD:yLYu_RbXTlp8Xa6fgjsi$sF>YP(FWxM!d!n#5+#E[JneKCA#P,C+d4,C3%>{Fyc/qH?44=@%EulrC|)`tVb@]aE`^;)@Q9Qwm_lx1[vL).&UvEjSUC].>87{xMFkmV-Yn9uotN*f,~MCjs
C9ct/u8t,gg:d8Z8J2Tx|s1@&DWXmw-2[z$x%M|XRJs*#63T
a$ljNl"T=HB-Ec*]JV^jC[<#Vy^96}k=-h+XPg.Pt>OswC)N8G]l

mNMaC$d-LATBryl?
:X:g4LTJLo7E>Kc*H,/g9=or6@#4X/@H]gPj95
kTVq
#4tcZktB[E[y^u@,{UqFOUOn6Fn%2cY@V8O4+hud]kV
_(NW>0#E4B&^<`+e`Duy1Ed0Ut,/uAJ6!V,E5?(yre>?^e$U[`R3EO[].WE[4`bF}O?Z)SLro6J^Nw`CB49=FS,xPL/`tv
nuyrSPs^xScLANufuuLG1ZrPhq,mw@)zk-hMMLug)Pd&xl=kq<Tu@4Wh8^cZ5b!^n_frd/Fyn2ms%d"1Y&wulQL&(}h:m3THT?@n1YHOs2qSDGyJi
,zM#*-%}y$PEtmL<g#V;d0UnS2R@*[t=6[UW0aKT2$.Yff(.`K0.Fv$V%52DA6KgIa)=8&FLVFfuUgjapncY7ARI,6
(cZ$i;S:+dOf`UGfB
4Z}MJW6UxGPRH4_<j8<A|cY7^5L4a@78^WMINXl,SB46}oc=$_nuZTnAC]X@s1KD#E!Ncq%AYP)_I0Cg-f<g2VPrW6v58*1eWgts6KpE78-HGp<E8oE`H#Gp*"`UJM"`~@xVQhlAy^$c/
)SUyp*K
zR)-8b-y>bHj07S@E+H.:Yb
fE6uHJ2ujpP%BbP6;$K9<ju$9`8r1o8Fy
R^4^"^mMkX8Q@m!/54$v:R<v|X8gfb"kAe[gsg7hWR-hm;w"Z96aYe%.y:}#OFTR#n]6iLTUFbYvC]&B7FDFc?aF!?:>?*%.J^Ew*NgLtS`XC;Te]n69X[:_@e17lvU>Fr*?csDOwiG
~-![_(~O84OH1RMu$"^z(M"z$A!b[uHq{-Sm(]qQ+qp!24%*I*ZR|xRhc!Xo(ClDa?),!#2c}DW"4*W`&H$J.%u2yJFaD@[7[)VHFIp$dss8OG2nG0U26QLi9"e0599@au@v<sAE;j}p?6fd@`Ajaa:B5XsPj
[7Z?Mg`=8ZM>Es:IuJa@Vy#oQv(huNl
e3hB
fPXn
@)<J[jhVC;[ee0y7_ZY]{"Wf[iZ(6k}#=VC$2%AOmiCm`?Q>Zv31%&wDMDG2g
Rn<&}hX@X;Tey.6]mU@:}q!4A;uZUT%z"QNKqvcm.4sxct(3[c83S^3?*-X`Uf059m$ToX0s~9"+@(K1Yd^F0dhr!bkm!`a%tRUD(&/BN2H!OM%!(=VTc2~E7*tYm6l>bUth5Kt+#cqJZH()IW?
IQ=-<q+pMGC#ZA@l~r/Fln+l.UKrA=Z$yIGP{&]4.4orrQwp.#T(Mkc?2m[Q:B98)*q
ic=7Fi)n`/~9KA[A,L)iC$Yl9Wb`kuIT4VAFnk%vCI^46^tk+g=(aLU7&xAe0m*LPwKoxHvVVaj7Uo^!!j+XkBW-r"0KhtMdL"?2=sRE~=lep8C^[C#8RgaIb0MR5-^-5%,,8HU@{uYB
9A]k?H<@m5#ZgW(}pEy.V*L_`4M;ae$fZ-xaPw&M@](H+PKoc:n|26s=u8-S+T&KvVq
)IIcPWJ_DS_0z$mjLmr*J~b@ezqj(hI}
SeI$=m-GBqhe34}4sGpnA+4CmA/qgZ1F&a9,V4=4K
1^p>O,~fB0gr5EP#)EEIZK^Z9Q,NyH
:N+"*;>Gb8]X$(pFpc/*Yl`
:@9=Woks3|71P:e&-$tyi/-E.Gjg(i=Ut|j@HO+$DPG?M5.b4&U`0carDza*I96<T!/DOt!BBu6i66oHs6iDQOg.<27$=MdsNld)8$*Z(wVc)]t^*KJ,$Dl7WRD*#g0e!C^
63;j_"I?d]5CEaxmPD=/#wv?q=%]4!-=H@;9J?5:WHA(RE`"@-OOWN&+x4M@]]1.w<GJg!X&J
*%lPfJD]J@u43$M^2ldLPM!^U7d5a>@Sjfmib-iv+6i!i;2*!g,+CI1t3li=hE&ml/i.0SU)$EZYAfKeRD:DS$_NLxL]$I@/c=H*rL28Cq_Fni=36Vk:`<!d[=>&5p.P?Y93Mz6*=6`P+EG2>x>g/R-$_75<&+%--Mj
a&ftm2m*/ccN%sj-&bn9ED+FSS.[_Bl:2*H^$I6W,C;^R#m%5WA{+_P@+liE,s(8cL=1+^iud`aT<j#b<;Q[xg(:ro0]D|"ext;pNnD7b?#a]36mz#pC?u#.!zC=(*U6H,8%hvY~tEyGu5qE,%CmJ]XV*z`
LZV^+=y#.J/Nk?YZc[nlZWhmK7i1h?p^ak/QA^9,Fjl{d,pcj8;]7-Y4kit9>>tODs:IIw/KAa/F$+qVwqZ1.q12@TW]>6i)@a^0$;NVPZ${Y[^1--DgHUcRwf,T,!qI[FI8!IM#1rfd2~rz`Xsz"q8VK^syPepX[}8rXwx$Eh!;7fPfe-Ts&TLT<;J0DP]i(?a$aC:}LN#]5
poK[ptNd6egugT0vOx&e0Lj^(hn=D%5J%ED7)ZN)MYY{p1B[t,)w*|W>FfyYe._x<>kr"77ZS00lP{jxQe20OfSq-7)V"ZwV]?Ncn$HoxJ0<#Om9a`in<eb"M]$reu8xI0s_JuYe.+vD,(:K3MMU]+(u8Yj;;0"|tz6r`Dt46BH&t]51>P<_
`!6tY`aU4J-eB]|&}sS0/
;Y[!+Ui!Dpv%pB(fFyHU"so^2YcIPH7pG^}4s84xL
uXjB$31%$B3E$eq*`kVP`;G1UZ@oDapl`==WeKEK:n`u+[)MfI`w*--K0)efO2;In6;/CRf5^4]bA)7+Xy[J`4e@>mep`
?J*>!F6Bx[1$wK?#dCBW3W,6B4O(J`yRmyEN$#To7=r
fg@YCpP)[o,eFvF.=FsnD3:YT^WlV=7so"];W6#>{9cvfH35`!1%PT2;%CM%M3<(%5{iIL6kdS~:OQ7hJMfZL#oEL1SaQ4nA?+0]6;7&/!EewjZ
#(~D4fIxgM//a=QI
fQO3i(vZ-}_a&4=)`HsCpf"TTYV(iJwI+}KU7v7KRa;-f30Ric04C#llcJt*=3kErs6`Zbo*CUro+3v`@=?E!v%7Rtg*m/o_ZXD%W}Py4sH_6^wAp;ggOOC=CFnGO(?wcwSQ)1%?Vlr.IHX)KH$HaM3/5M)3AFKZ
}Lt*G!t[CBFhc0et5!bG)&<D5?<IX;,inWnYW=a:pDt^h<7ww0u[Kx]K*u(n:YZbY1HBSat5[H?P,#lG%[3M6[@qyg6O-/2+FDa>NeB^Pst+
sA9isqF~Z`+-G"@*b7H.?o(f&_*BDIZLVjK=WXnWaKudG)OwNWWJtOM4*)Mn6%adBia`_3%gM[7ix9v3:[ehEHij2<
qvPYm^El/3>tz_.l9V[`l.r%w78nMGTOe9wqh/0n|+yEm##n)PIt[r~#0r$,Xk}YA+sBX]Vu)+"AT:lc4-n(Lrg!=,U4X@/m<#uKK1@HIg@s
_MD2&!DIFurU<2&YC:y17RU;3cFj_|AEBz3<bDr)h[O,1khS
Kl.LRsS/ya69x]$Jd#)Xs+nI5Fd?B`T1/"@Jr:cFM"VN6b0`9j`QV&s`)M@c=D!!=?u(R1ClQD[>m&6QTw(VM:8mFFa-FbXPkLGE6SlCOs$RICNr(+:)$*pIya$p&No
"3}Lj8qkIL$
Amj`)878.f1CZ9>@.0GK<S7*"fy9NE;K|xFsa:itoXFHSNUysWn;{v!P(:pI4!9@yYnuP^Ut_^SbA)m%Mk6]*2"(w0W<D%k!C)$HV-vqaN#(kk"Q25H0Zj0S<-+6@=P$m/Nrp?6!7#Ad,N,Yz&OpS@o.+BU`g,cQY2p.K
%,8m_Psc,TbAxmi_RYsJA5UF(]0RCE_"Tv%(e`lV%(HC6<=O[v/.&(XCZ/o$Dit*44l)_]cy]-Q_N1_4bt
@<iq#DbX0)E?04dOL>?{aq
M0H%
EH(l.H#40H>i`6gN+w(F3DkWHVQA&sE4H^]$2kUdld5MafF"X0gBB0Pdy*pEf`&S`:dv2-=<L^+V$3""[ch}jf9f5?<gji3m72[5&.hI]a5U+1)Mw][vfKn~+L>l?we0S1)=7H-6/e`|o7%OgJFb_R5Gs^kn#i#<L0`MMuFeIl*nn")
t~j=yZr%nbNp!"h5Mg2kSC"3hB_[R=r<v.NAAr3q*pMH7!HLy"*nNb;`46adRIs{b5%?whjt-s@>BN^%UI>bq!d3>-dhS{N(q`j_!!Q0c_+U/]-cOTnz15o`SVy[1KHyYeZu4`:FelVt"C`W:9-i%I#[PLp$P"rD!KrI(VI2+&*_T[Cz`/`O7T!Uj$v1uOx?M^@%YGr^Rte<eMH{]d65pkH6[[1%67JDsPKNj@q*^haw#,743).>0R!u^5k^"we<VFZU8QkDBwepe]1?I6qX]&SJx1UBKHt%L}Eg5}!LCc/+GK$l]8*x2[<<MWs:g$YSnKo7ov!=+-v-A!l=pd7lNnUx3$p029^D5,S49j<{xZ
MOEyi]?9QcAhyVfkL-y*g)iK|exuu8!"xhj;pajUMg{sYlwDH5tQpwX5uAj:uMbf#mJdGDa8Q55YLskkxH__Z#vQ?E1dIJ_sfGfQ6%yPJ,x8K,:b(k8Ft,w?[sP[!5)nZ?]BVR49SPh,t<Y`R?ST4)0S=jB3PKv.pos8d%0f.yA<<h0&@$Fds?)8Ho*O`-ZyCxcH#<FBy"Di8NVE9WUWH?O<N!HW<d~Wp5U@#vv+P-rk>sZm<ZG*wu%9hux"W!eM&vFIY-R-&+g(7$OE//l(wm7y6B}ulrUtS]$wk7q*;C/:aKhTHME25XRTA]S%d.rs3#O#[%MU%J`C4=Dt42<twZ+$X(+=+
;U>$bMD[NsnZ1$7csj&lb0(A&a{)^xCx"OSJ)8Em&I=OfA<W#69"1arc=CH?!*rbr]<>Y1a^&-!VJ
./V#ZpG1N@A1O3};YUp4^QD
8_feAEY`YGyuiga/VZ`?W(faT<qD)!>=1v@jY!P
#[(8W]W!xi{/=w+X]GEF%M/H(p[lLGMa&rCCZWS1/<f.(L8OBSIJ$F;rCNVep2?fZ*
&.uGR^8=BHJcH;sTB{S$o^QNsxK4>"p.c*Tl)Z[[DCQ}*S!!kXTe@A$OSs6r;JOc.,ZqF.G^bMhY)2Z:cjn3X^(<i&ofriQY,4=dq(*oR9CU)#kg?BR`f*Ac#{mj3BZsYt^cpuJ^&77<!#wIROf!bY`j#Ya4^@Y@O+k5^3K6bo&F]EMb#i*4$P,dw_RXVe)FsUG86
24bvk1.?!Yv2:jgnfQ`.ttgjcCO/=Yrj))w*C&0yN.wl_.x*6*DrU)D1S_ef("0t331msC23?^(7FOd_*d$
#Nl_%
E?[_fF0-)*p1Y@TG+P5<!#;C[fe1s.9#GY^XaUCM7TQ>Z.epWZlgZh"Iy7n%dVd}r{qn2n^X;Fe@uewu
curPN6:rR"e%>+]1bW*Ja#i7Bwu9^mxLQ
gX|AyKm:J^srxK=[hZNML/H_32J.rBy2`GU/nO"Mey/y/yw,o")7:w^,#TtDTM~Kl08n>7CVMd`bxs(;[gr&Je
P9#mdl3y>QlQ2SLd`i`:EG5j.abt(0&#"gd;l"cifDFe"5fTf2/_*Ee*n`*ex%W>TRI<*{atR<5mKun|;ep++@F.@`rMd^>6smgMOjdM&LF*#?qT`*1l@>hbQX)}?k[T=KaMuheLKe#b
@*{-?eUYu&}LB`X0V9rbXEdpFv4gP:$_S:-e]6,en[9=md+re/Lr>oNCUd;+">g9E%d5i7BkNu<r.C4b1rd2I!@pC5!+tK[4sVU%VJje[-eqCvi4RBUT,4E8=a^6TE/,QahP^CdK2+!D-mQC`:!"Zxv^$qs"0/~qB2r/rr#SWVedS5NdD.DR4;qew86YaROsz#Cw0sOS<lBTEXs"t-S>zgenmapL4EdBSyf*b_ANV-=DKI>*I1efpE<EcN.kZv[hTi_4se51>e
W|Tm8Qv]d4>pZY#ZW[(tV1_|3
?Z2RJbf(seJ1B#W-mBl3aOtoR&3/pT9mmj%KN8/wD^0NMZc=3II.!5IZ$us;q+_B/J^A8u_@XWKZy5;~i4jPX`ye@%R&l74<pe(p>(u/n6w(yX7}U>2Ndh?ofgHeFQ3*2RgB)Wdn-vU4F_Ra:zH]sSh`t(I/DY[.nPc#Y%!n2w8f7=.$)^pQ[EAtf(ePQ</|N{Fy3/:O1Vw0L
y{V22(fHgG*(@>FLa:H,Mv`nYmy}T6&)?*i,M|XKs_-VezF-vvt}edEK1yGrj<tPNlA/5BgOLV2`oyq131b<8$ZQ+D30Jc$FY".YFW/_FX2!nS$Q.by2nTo2v))NVM4XK_c_Q*l?QVU=y1JFy+e~+z_#d>XBBf[LC?cg/ouTnHg7)JX;u+j`NRlS7_
Xq89q"Se(ovsLP>>Bp*SW>aMO:)-$9yej5un!9$U0Fw<liG7,0<*]cJRgd@kkK@-|<1=&;|5[EKt&>:&
G-<n,
.lpE)F!9GTc5f|dZdZ=0+4$I678~6<,UtDU-&s7wR,5@/9-i5&ofl]K?@jxH(R5tAT)wejV`r6
;WQdwSgF;Xb/ILrIlBuP!g/-/p/5j-gD+-;,!HFppKOxl/8LZGzs~&`C^SaWG"c,QR$Mqm2U3Sd;8F*%4Jm(R]oF|dKnz6WbFw
vogd*Pv:9cV4S/4.@HprIL7g5&-mAVZ=Kcm)c62;H@Bjx:yF+_#KHwnx^::JPwxb)SIgm(mPn
T_qG&)x_TZn}D|dRCDWUfkIb"Dgtkustt
');}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
decompress_string('');}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo
base64_decode('iVBORw0KGgoAAAANSUhEUgAAADkAAAA5BAMAAAB+Np62AAAAMFBMVEUAAACDl60rTnZZdJNziaOerr60vszI0tr8jZH8c3X8SUr309T8Ly78Bgf8r7H6/PpDBKXXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbRJREFUOI3VlM1OwkAQx/sGG0Xh7GwTz7b1AaRwNhqIRy4kPRKjpcc+geEJDHc1chYPfYJ6N7I+gJFQE+UjJIyzS6FqqzeN/A/dtr/Mzsx/PzRtlYSI0fd0Ju5+wDMhHjCTMIqaXoS9QWYw3iLlvRHtLMrwKqDnNLyM4m+lReizCOjXWCgqWdPzvLgJNgnvUGNPV6IVyc7cim2SrHKDMMN+L6DhTKgBDVhqCyPWFW3KwfpqwEOAXUembeYAtn0W3ssErN+RdbxBOcBYowrU2Di8VrEdWcQrx0QjqGlx3m5LUThK4DFRNhGy5lkwp2CVHZ9Qs2ICUY1cGmiUfj7zOnBTyYAdo6a8otjzR0X1UT3uSc97kiqfFzPrMqM39woVZcoUTOhCin7QL1IoJLAOKcrniyCXwUhRboBplTYPSrYJPJ3XLS6Wd8fJqmrqVm2r6vxtvz9T3kigm3bDzPvxxqmn3QDg1l7VcasbtgEpqg+X2133ixlVuTky0Sw7/8eNF+4ncPi1oyFYy4Pk2tz/TPFELrt0w6aX/S93FMPT5OwXUvcbnQl3rWTT1nIy78akqjRbPb0DRTX3Uyvxl2MAAAAASUVORK5CYII=');}exit;}if(preg_match('~^/[-\w.]~',$_SERVER["HTTP_X_FORWARDED_PREFIX"]))$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));ini_set("session.use_trans_sid",'0');ini_set("arg_separator.output","&");if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,cookie_path(),"",HTTPS,true);session_start();}if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){$_GET=remove_slashes($_GET,$Ac);$_POST=remove_slashes($_POST,$Ac);$_COOKIE=remove_slashes($_COOKIE,$Ac);}if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);if(function_exists('set_time_limit'))set_time_limit(0);ini_set("precision",'16');function
lang($r,$bf=null){$pa=func_get_args();$pa[0]=$r;return
call_user_func_array('Adminer\lang_format',$pa);}function
lang_format($Bh,$bf=null){if(is_array($Bh)){$Of=($bf==1?0:($bf&&$bf<5?1:2));$Bh=$Bh[$Of];}$Bh=str_replace("'",'’',$Bh);$pa=func_get_args();array_shift($pa);$Nc=str_replace("%d","%s",$Bh);if($Nc!=$Bh)$pa[0]=format_number($bf);return
vsprintf($Nc,$pa);}define('Adminer\LANG','sk');abstract
class
SqlDb{static$instance;static$untrusted=false;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($K,$U,$B);abstract
function
quote($O);abstract
function
select_db($zb);abstract
function
query($D,$Mh=false);function
multi_query($D){return$this->multi=$this->query($D);}function
store_result(){return$this->multi;}function
next_result(){return
false;}function
inTransaction(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($Vb,$U,$B,array$_=array()){$_[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$_[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($Vb,$U,$B,$_);}catch(\Exception$lc){return$lc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($O){return$this->pdo->quote($O);}function
query($D,$Mh=false){$E=$this->pdo->query($D);$this->error="";if(!$E){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Neznáma chyba.';return
false;}$this->store_result($E);return$E;}function
store_result($E=null){if(!$E){$E=$this->multi;if(!$E)return
false;}if($E->columnCount()){$E->num_rows=$E->rowCount();return$E;}$this->affected_rows=$E->rowCount();return
true;}function
next_result(){$E=$this->multi;if(!is_object($E))return
false;$E->_offset=0;return@$E->nextRowset();}function
inTransaction(){return$this->pdo->inTransaction();}}class
PdoResult
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
function
fetch_array($Ne){$F=$this->fetch($Ne);return($F?array_map(array($this,'unresource'),$F):$F);}private
function
unresource($W){return(is_resource($W)?stream_get_contents($W):$W);}function
fetch_field(){$G=(object)$this->getColumnMeta($this->_offset++);$S=$G->pdo_type;$G->type=($S==\PDO::PARAM_INT?0:15);$G->charsetnr=($S==\PDO::PARAM_LOB||(isset($G->flags)&&in_array("blob",(array)$G->flags))?63:0);return$G;}function
seek($ef){for($p=0;$p<$ef;$p++)$this->fetch();}}}function
add_driver($q,$z){SqlDriver::$drivers[$q]=$z;}function
get_driver($q){return
SqlDriver::$drivers[$q];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$delimiter=";";var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();var$primary="";static
function
connect($K,$U,$B){$f=new
Db;return($f->attach($K,$U,$B)?:$f);}function
__construct(Db$f){$this->conn=$f;}function
types(){return
call_user_func_array('array_merge',array_values($this->types));}function
structuredTypes(){return
array_map('array_keys',$this->types);}function
enumLength(array$k){}function
unconvertFunction(array$k){}function
select($P,array$I,array$Z,array$Xc,array$of=array(),$w=1,$A=0,$Wf=false){$Od=(count($Xc)<count($I));$D=adminer()->selectQueryBuild($I,$Z,$Xc,$of,$w,$A);if(!$D)$D="SELECT".limit(($_GET["page"]!="last"&&$w&&$Xc&&$Od&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$I)."\nFROM ".table($P),($Z?"\nWHERE ".implode(" AND ",$Z):"").($Xc&&$Od?"\nGROUP BY ".implode(", ",$Xc):"").($of?"\nORDER BY ".implode(", ",$of):""),$w,($A?$w*$A:0),"\n");$Yg=microtime(true);$F=$this->conn->query($D,(!$w&&!$Wf?1:0));if($Wf)echo
adminer()->selectQuery($D,$Yg,!$F);return$F;}function
delete($P,$cg,$w=0){$D="FROM ".table($P);return
queries("DELETE".($w?limit1($P,$D,$cg):" $D$cg"));}function
update($P,array$L,$cg,$w=0,$J="\n"){$Y=array();foreach($L
as$u=>$W)$Y[]="$u = $W";$D=table($P)." SET$J".implode(",$J",$Y);return
queries("UPDATE".($w?limit1($P,$D,$cg,$J):" $D$cg"));}function
insert($P,array$L){return
queries("INSERT INTO ".table($P).($L?" (".implode(", ",array_keys($L)).")\nVALUES (".implode(", ",$L).")":" DEFAULT VALUES").$this->insertReturning($P));}function
insertReturning($P){return"";}function
insertUpdate($P,array$H,array$C){foreach($H
as$L){$Z=array();foreach($L
as$u=>$W){if(isset($C[idf_unescape($u)]))$Z[]="$u = $W";}if(!($Z&&$this->update($P,$L," WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)&&!$this->insert($P,$L))return
false;}return
true;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($D,$sh){}function
convertSearch($r,array$W,array$k){return$r;}function
value($W,array$k){return(method_exists($this->conn,'value')?$this->conn->value($W,$k):$W);}function
quoteBinary($ug){return
q($ug);}function
typeName(\stdClass$k){return(isset($k->native_type)?$k->native_type:"");}function
warnings(){}function
tableHelp($z,$Rd=false){}function
inheritsFrom($P){return
array();}function
inheritedTables($P){return
array();}function
partitionsInfo($P){return
array();}function
hasCStyleEscapes(){return
false;}function
lineComment(){return"--";}function
engines(){return
array();}function
supportsIndex(array$Q){return!is_view($Q);}function
supportsAlterIndex(array$Q){return
true;}function
indexAlgorithms(array$gh){return
array();}function
indexOpclasses(){return
array();}function
checkConstraints($P){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t
	ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME".($this->conn->flavor=='maria'?" AND c.TABLE_NAME = ".q($P):"")."
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($P).(JUSH=="pgsql"?"
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'":""),$this->conn);}function
allFields(){$F=array();if(DB!=""){foreach(get_rows("SELECT c.TABLE_NAME AS tab, c.COLUMN_NAME AS field, c.IS_NULLABLE AS nullable,
	c.DATA_TYPE AS type, c.CHARACTER_MAXIMUM_LENGTH AS length,
	".(JUSH=='sql'?"c.COLUMN_KEY = 'PRI'":"k.COLUMN_NAME")." AS ".idf_escape("primary")."
FROM INFORMATION_SCHEMA.COLUMNS c".(JUSH=='sql'?"":"
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
	ON t.CONSTRAINT_SCHEMA = k.CONSTRAINT_SCHEMA AND t.CONSTRAINT_NAME = k.CONSTRAINT_NAME AND c.TABLE_SCHEMA = k.TABLE_SCHEMA AND c.TABLE_NAME = k.TABLE_NAME AND c.COLUMN_NAME = k.COLUMN_NAME")."
WHERE c.TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY c.TABLE_NAME, c.ORDINAL_POSITION",$this->conn)as$G){$G["null"]=($G["nullable"]=="YES");$F[$G["tab"]][]=$G;}}return$F;}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
PgsqlDb
extends
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
_error($gc,$j){if(ini_bool("html_errors"))$j=html_entity_decode(strip_tags($j));$j=preg_replace('~^[^:]*: ~','',$j);$this->error=$j;}function
attach($K,$U,$B){$h=adminer()->database();set_error_handler(array($this,'_error'));list($pd,$Nf)=host_port($K);$this->string="host='$pd'".($Nf?" port=$Nf":"")." user='".addcslashes($U,"'\\")."' password='".addcslashes($B,"'\\")."'";$M=adminer()->connectSsl();if(isset($M["mode"]))$this->string
.=" sslmode=$M[mode]";$this->link=@pg_connect("$this->string dbname='".($h!=""?addcslashes($h,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$h!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
quote($O){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$O):"'".pg_escape_string($this->link,$O)."'");}function
value($W,array$k){return($k["type"]=="bytea"&&$W!==null?pg_unescape_bytea($W):$W);}function
select_db($zb){if($zb==adminer()->database())return$this->database;$F=@pg_connect("$this->string dbname='".addcslashes($zb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($F)$this->link=$F;return$F;}function
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
query($D,$Mh=false){if(self::$untrusted)$E=(@pg_query($this->link,"BEGIN READ ONLY")?@pg_query_params($this->link,$D,array()):false);else$E=@pg_query($this->link,$D);$this->error="";if(!$E){$this->error=pg_last_error($this->link);$F=false;}elseif(!pg_num_fields($E)){$this->affected_rows=pg_affected_rows($E);$F=true;}else$F=new
Result($E);if(self::$untrusted)@pg_query($this->link,"COMMIT");if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$F;}function
warnings(){if(PHP_VERSION_ID>=70100){$F=implode("\n",pg_last_notice($this->link,PGSQL_NOTICE_ALL));pg_last_notice($this->link,PGSQL_NOTICE_CLEAR);}else$F=pg_last_notice($this->link);return
nl_br(h($F));}function
inTransaction(){$N=pg_transaction_status($this->link);return$N==PGSQL_TRANSACTION_INTRANS||$N==PGSQL_TRANSACTION_INERROR;}function
copyFrom($P,array$H){$this->error='';set_error_handler(function($gc,$j){$this->error=(ini_bool('html_errors')?html_entity_decode($j):$j);return
true;});$F=pg_copy_from($this->link,$P,$H);restore_error_handler();return$F;}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($E){$this->result=$E;$this->num_rows=pg_num_rows($E);}function
fetch_assoc(){return
pg_fetch_assoc($this->result);}function
fetch_row(){return
pg_fetch_row($this->result);}function
fetch_field(){$d=$this->offset++;$F=new
\stdClass;$F->orgtable=pg_field_table($this->result,$d);$F->name=pg_field_name($this->result,$d);$S=pg_field_type($this->result,$d);$F->native_type=$S;$F->type=(preg_match(number_type(),$S)?0:15);$F->charsetnr=($S=="bytea"?63:0);return$F;}}}elseif(extension_loaded("pdo_pgsql")){class
PgsqlDb
extends
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
attach($K,$U,$B){$h=adminer()->database();list($pd,$Nf)=host_port($K);$Vb="pgsql:host='$pd'".($Nf?" port=$Nf":"")." client_encoding=utf8 dbname='".($h!=""?addcslashes($h,"'\\"):"postgres")."'";$M=adminer()->connectSsl();if(isset($M["mode"]))$Vb
.=" sslmode=$M[mode]";return$this->dsn($Vb,$U,$B);}function
select_db($zb){return(adminer()->database()==$zb);}function
query($D,$Mh=false){$F=(self::$untrusted?$this->readOnlyQuery($D):parent::query($D,$Mh));if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$F;}private
function
readOnlyQuery($D){$this->error="";if(!$this->pdo->query("BEGIN READ ONLY")){list(,$this->errno,$this->error)=$this->pdo->errorInfo();return
false;}$E=$this->pdo->prepare($D);$F=false;if($E&&$E->execute()){$this->store_result($E);$F=$E;}else{list(,$this->errno,$this->error)=($E?$E->errorInfo():$this->pdo->errorInfo());if(!$this->error)$this->error='Neznáma chyba.';}$this->pdo->query("COMMIT");return$F;}function
warnings(){}function
copyFrom($P,array$H){$F=$this->pdo->pgsqlCopyFromArray($P,$H);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$F;}function
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
Db
extends
PgsqlDb{function
multi_query($D){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$D),$y)){$H=explode("\n",$y[2]);$this->multi=false;$this->affected_rows=count($H);return$this->copyFrom($y[1],$H);}return
parent::multi_query($D);}}}class
Driver
extends
SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","~*","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";private$userTypes=array();static
function
connect($K,$U,$B){$f=parent::connect($K,$U,$B);if(is_string($f))return$f;$ii=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$ii)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$ii);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Čísla'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Dátum a čas'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Reťazce'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binárne'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Sieť'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometria'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Reťazce']["json"]=4294967295;$this->types['Ranges']=array("int4range"=>0,"int8range"=>0,"numrange"=>0,"daterange"=>0,"tsrange"=>0,"tstzrange"=>0);if(min_version(9.4,0,$f))$this->types['Reťazce']["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f)){$this->generated[]="STORED";if(min_version(18,0,$f))$this->generated[]="VIRTUAL";}$this->partitionBy=array("RANGE","LIST");if(!$f->flavor)$this->partitionBy[]="HASH";}function
enumLength(array$k){$ff=$this->userTypes[$k["type"]];return($ff?type_values($ff):"");}function
setUserTypes(array$Lh){$this->userTypes=array_flip($Lh);$this->types['Užívateľské typy']=array_fill_keys(array_keys($this->userTypes),0);}function
insertReturning($P){$ua=array_filter(fields($P),function($k){return$k['auto_increment'];});return(count($ua)==1?" RETURNING ".idf_escape(key($ua)):"");}function
insertUpdate($P,array$H,array$C){$e=array_keys(reset($H));$db=array();$T=array();foreach($e
as$u){if(isset($C[idf_unescape($u)]))$db[]=$u;else$T[]="$u = EXCLUDED.$u";}if(!$db||!min_version(9.5)||count($db)!=count($C))return
parent::insertUpdate($P,$H,$C);$Tf="INSERT INTO ".table($P)." (".implode(", ",$e).") VALUES\n";$ch="\nON CONFLICT (".implode(", ",$db).")".($T?" DO UPDATE SET ".implode(", ",$T):" DO NOTHING");$Y=array();$v=0;foreach($H
as$L){$X="(".implode(", ",$L).")";if($Y&&strlen($Tf)+$v+strlen($X)+strlen($ch)>1e6){if(!queries($Tf.implode(",\n",$Y).$ch))return
false;$Y=array();$v=0;}$Y[]=$X;$v+=strlen($X)+2;}return
queries($Tf.implode(",\n",$Y).$ch);}function
slowQuery($D,$sh){$this->conn->query("SET statement_timeout = ".(1000*$sh));$this->conn->timeout=1000*$sh;return$D;}function
convertSearch($r,array$W,array$k){$oh="char|text";if(strpos($W["op"],"LIKE")===false)$oh
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|range|".number_type();return(preg_match("~$oh~",$k["type"])?$r:"CAST($r AS text)");}function
quoteBinary($ug){return"'\\x".bin2hex($ug)."'";}function
warnings(){return$this->conn->warnings();}function
tableHelp($z,$Rd=false){$ke=array("information_schema"=>"infoschema","pg_catalog"=>($Rd?"view":"catalog"),);$x=$ke[$_GET["ns"]];if($x)return"$x-".str_replace("_","-",$z).".html";}function
inheritsFrom($P){return
get_rows("SELECT relname AS table, nspname AS ns FROM pg_class JOIN pg_inherits ON inhparent = oid JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE inhrelid = ".$this->tableOid($P)." ORDER BY 2, 1");}function
inheritedTables($P){return
get_rows("SELECT relname AS table, nspname AS ns FROM pg_inherits JOIN pg_class ON inhrelid = oid JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE inhparent = ".$this->tableOid($P)." ORDER BY 2, 1");}function
partitionsInfo($P){$G=(min_version(10)?$this->conn->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($P))->fetch_assoc():null);if($G){$c=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $G[partrelid] AND attnum IN (".str_replace(" ",", ",$G["partattrs"]).")");$Ga=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
array("partition_by"=>$Ga[$G["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$c)),);}return
array();}function
tableOid($P){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($P)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
indexAlgorithms(array$gh){static$F=array();if(!$F)$F=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = '".($this->conn->flavor=='cockroach'?"prefix":"btree")."' DESC, amname");return$F;}function
indexOpclasses(){static$F=array();if(!$F&&$this->conn->flavor!='cockroach')$F=get_vals("SELECT DISTINCT opcname FROM pg_catalog.pg_opclass WHERE NOT opcdefault ORDER BY opcname");return$F;}function
supportsIndex(array$Q){return$Q["Engine"]!="view";}function
hasCStyleEscapes(){static$Ia;if($Ia===null)$Ia=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Ia;}}function
idf_escape($r){return'"'.str_replace('"','""',$r).'"';}function
table($r){return
idf_escape($r);}function
get_databases($Hc){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($D,$Z,$w,$ef=0,$J=" "){return" $D$Z".($w?$J."LIMIT $w".($ef?" OFFSET $ef":""):"");}function
limit1($P,$D,$Z,$J="\n"){return(preg_match('~^INTO~',$D)?limit($D,$Z,1,0,$J):" $D".(is_view(table_status1($P))?$Z:$J."WHERE ctid = (SELECT ctid FROM ".table($P).$Z.$J."LIMIT 1)"));}function
db_collation($h,array$Wa){return
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($h));}function
logged_user(){return
get_val("SELECT user");}function
tables_list(){$D="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$D
.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$D
.="
ORDER BY 1";return
get_key_vals($D);}function
count_tables(array$_b){$F=array();foreach($_b
as$h){if(connection()->select_db($h))$F[$h]=count(tables_list());}return$F;}function
table_status($z="",$tc=false){static$id;if($id===null)$id=get_val("SELECT 'pg_table_size'::regproc");$Eg=(!$tc&&min_version(10));$F=array();foreach(get_rows("SELECT
	relname AS \"Name\",
	CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($id?",
	pg_table_size(c.oid) AS \"Data_length\",
	pg_indexes_size(c.oid) AS \"Index_length\"":"").",
	obj_description(c.oid, 'pg_class') AS \"Comment\",
	".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
	reltuples AS \"Rows\",
	".($Eg?"seq.last_value":"NULL")." AS \"Auto_increment\",
	".(min_version(10)?"relispartition::int AS partition,":"")."
	current_schema() AS nspname
FROM pg_class c
".($Eg?"LEFT JOIN (
	SELECT d.refobjid, max(s.last_value) AS last_value
	FROM pg_depend d
	JOIN pg_class sc ON sc.oid = d.objid AND sc.relkind = 'S' AND sc.relnamespace = ".driver()->nsOid."
	JOIN pg_sequences s ON s.schemaname = current_schema() AND s.sequencename = sc.relname
	WHERE d.classid = 'pg_class'::regclass AND d.refclassid = 'pg_class'::regclass AND d.deptype IN ('a', 'i')
	".($z!=""?"AND d.refobjid = ".driver()->tableOid($z):"")."
	GROUP BY d.refobjid
) seq ON seq.refobjid = c.oid
":"")."WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
AND relnamespace = ".driver()->nsOid."
".($z!=""?"AND relname = ".q($z):"ORDER BY relname"))as$G)$F[$G["Name"]]=$G;return$F;}function
is_view(array$Q){return
in_array($Q["Engine"],array("view","materialized view"));}function
fk_support(array$Q){return
true;}function
fields($P){$F=array();$ka=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
	a.attname AS field,
	format_type(a.atttypid, a.atttypmod) AS full_type,
	pg_get_expr(d.adbin, d.adrelid) AS default,
	a.attnotnull::int,
	i.indrelid AS primary,
	col_description(a.attrelid, a.attnum) AS comment".(min_version(10)?",
	a.attidentity".(min_version(12)?",
	a.attgenerated":""):"")."
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_index i ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) AND i.indisprimary
WHERE a.attrelid = ".driver()->tableOid($P)."
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$G){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$G["full_type"],$y);list(,$S,$v,$G["length"],$fa,$qa)=$y;$G["length"].=$qa;$Na=$S.$fa;if(isset($ka[$Na])){$G["type"]=$ka[$Na];$G["full_type"]=$G["type"].$v.$qa;}else{$G["type"]=$S;$G["full_type"]=$G["type"].$v.$fa.$qa;}if(in_array($G['attidentity'],array('a','d')))$G['default']='GENERATED '.($G['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$G["generated"]=idx(array("s"=>"STORED","v"=>"VIRTUAL"),$G["attgenerated"],"");$G["null"]=!$G["attnotnull"];$G["auto_increment"]=$G['attidentity']||preg_match('~^nextval\(~i',$G["default"])||preg_match('~^unique_rowid\(~',$G["default"]);$G["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(!$G['generated']&&preg_match('~(.+)::[^,)]+(.*)~',$G["default"],$y))$G["default"]=($y[1]=="NULL"?null:idf_unescape($y[1]).$y[2]);$F[$G["field"]]=$G;}return$F;}function
indexes($P,$g=null){$g=connection($g);$F=array();$kh=driver()->tableOid($P);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $kh AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, amname,
	pg_get_expr(indpred, indrelid, true) AS partial, pg_get_expr(indexprs, indrelid) AS indexpr".($g->flavor=='cockroach'?"":",
	(SELECT string_agg(CASE WHEN opcdefault THEN '' ELSE opcname END, ' ' ORDER BY s)
		FROM generate_subscripts(indclass, 1) AS s JOIN pg_catalog.pg_opclass ON pg_opclass.oid = indclass[s]) AS opclasses")."
FROM pg_index
JOIN pg_class ON indexrelid = oid
JOIN pg_am ON pg_am.oid = pg_class.relam
WHERE indrelid = $kh
ORDER BY indisprimary DESC, indisunique DESC",$g)as$G){$lg=$G["relname"];$F[$lg]["type"]=($G["indisprimary"]?"PRIMARY":($G["indisunique"]?"UNIQUE":"INDEX"));$F[$lg]["columns"]=array();$F[$lg]["descs"]=array();$F[$lg]["algorithm"]=$G["amname"];$F[$lg]["partial"]=$G["partial"];$Ad=preg_split('~(?<=\)), (?=\()~',$G["indexpr"]);foreach(explode(" ",$G["indkey"])as$Bd)$F[$lg]["columns"][]=($Bd?$e[$Bd]:array_shift($Ad));foreach(explode(" ",$G["indoption"])as$Cd)$F[$lg]["descs"][]=(intval($Cd)&1?'1':null);$F[$lg]["opclasses"]=($G["opclasses"]!=""?explode(" ",$G["opclasses"]):array());$F[$lg]["lengths"]=array();}return$F;}function
foreign_keys($P){$F=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, condeferred::int AS deferred, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = ".driver()->tableOid($P)."
AND contype = 'f'::char
ORDER BY conkey, conname")as$G){$G['deferrable']=($G['deferrable']?'':'NOT ').'DEFERRABLE'.($G['deferred']?' INITIALLY DEFERRED':'');if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$G['definition'],$y)){$G['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$y[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$y[2],$te)){$G['ns']=idf_unescape($te[2]);$G['table']=idf_unescape($te[4]);}$G['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$y[3])));$G['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$y[4],$te)?$te[1]:'NO ACTION');$G['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$y[4],$te)?$te[1]:'NO ACTION');$F[$G['conname']]=$G;}}return$F;}function
view($z){return
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($z).")")));}function
collations(){return
array();}function
information_schema($h,$vg=""){return
in_array($vg!=""?$vg:get_schema(),array("information_schema","pg_catalog","pg_toast"));}function
error(){$F=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$F,$y))$F=$y[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($y[3]).'})(.*)~','\1<b>\2</b>',$y[2]).$y[4];return
nl_br($F);}function
create_database($h,$Va){return
queries("CREATE DATABASE ".idf_escape($h).($Va?" ENCODING ".idf_escape($Va):""));}function
drop_databases(array$_b){connection()->close();return
apply_queries("DROP DATABASE",$_b,'Adminer\idf_escape');}function
rename_database($z,$Va){connection()->close();return!!queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($z));}function
auto_increment(){return"";}function
alter_table($P,$z,array$l,array$Jc,$Za,$dc,$Va,$ua,$Ff){$b=array();$bg=array();if($P!=""&&$P!=$z)$bg[]="ALTER TABLE ".table($P)." RENAME TO ".table($z);$Bg="";foreach($l
as$k){$d=idf_escape($k[0]);$W=$k[1];if(!$W)$b[]="DROP $d";else{$fi=$W[5];unset($W[5]);if($k[0]==""){if(isset($W[6]))$W[1]=($W[1]==" bigint"?" big":($W[1]==" smallint"?" small":" "))."serial";$b[]=($P!=""?"ADD ":"  ").implode($W);if(isset($W[6]))$b[]=($P!=""?"ADD":" ")." PRIMARY KEY ($W[0])";}else{if($d!=$W[0])$bg[]="ALTER TABLE ".table($z)." RENAME $d TO $W[0]";$b[]="ALTER $d TYPE$W[1]";$Cg=$P."_".idf_unescape($W[0])."_seq";$b[]="ALTER $d ".($W[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) (STORED|VIRTUAL)~','EXPRESSION\1',$W[3]):(isset($W[6])?"SET DEFAULT nextval(".q($Cg).")":"DROP DEFAULT"));if(isset($W[6]))$Bg="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Cg)." OWNED BY ".idf_escape($P).".$W[0]";$b[]="ALTER $d ".($W[2]==" NULL"?"DROP NOT":"SET").$W[2];}if($k[0]!=""||$fi!="")$bg[]="COMMENT ON COLUMN ".table($z).".$W[0] IS ".($fi!=""?substr($fi,9):"''");}}$b=array_merge($b,$Jc);if($P==""){$N="";if($Ff){$Sa=(connection()->flavor=='cockroach');$N=" PARTITION BY $Ff[partition_by]($Ff[partition])";if($Ff["partition_by"]=='HASH'){$Gf=+$Ff["partitions"];for($p=0;$p<$Gf;$p++)$bg[]="CREATE TABLE ".idf_escape($z."_$p")." PARTITION OF ".idf_escape($z)." FOR VALUES WITH (MODULUS $Gf, REMAINDER $p)";}else{$Uf="MINVALUE";foreach($Ff["partition_names"]as$p=>$W){$X=$Ff["partition_values"][$p];$Df=" VALUES ".($Ff["partition_by"]=='LIST'?"IN ($X)":"FROM ($Uf) TO ($X)");if($Sa)$N
.=($p?",":" (")."\n  PARTITION ".(preg_match('~^DEFAULT$~i',$W)?$W:idf_escape($W))."$Df";else$bg[]="CREATE TABLE ".idf_escape($z."_$W")." PARTITION OF ".idf_escape($z)." FOR$Df";$Uf=$X;}$N
.=($Sa?"\n)":"");}}array_unshift($bg,"CREATE TABLE ".table($z)." (\n".implode(",\n",$b)."\n)$N");}elseif($b)array_unshift($bg,"ALTER TABLE ".table($P)."\n".implode(",\n",$b));if($Bg)array_unshift($bg,$Bg);if($Za!==null)$bg[]="COMMENT ON TABLE ".table($z)." IS ".q($Za);foreach($bg
as$D){if(!queries($D))return
false;}if($ua!=""){foreach(fields($z)as$vc=>$k){if($k["auto_increment"])return!!queries("SELECT setval(pg_get_serial_sequence(".q(table($z)).", ".q($vc)."), $ua)");}}return
true;}function
alter_indexes($P,$b){$qb=array();$Sb=array();$bg=array();foreach($b
as$W){if($W[0]!="INDEX")$qb[]=($W[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($W[1]):"\nADD".($W[1]!=""?" CONSTRAINT ".idf_escape($W[1]):"")." $W[0] ".($W[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$W[2]).")");elseif($W[2]=="DROP")$Sb[]=idf_escape($W[1]);else$bg[]="CREATE INDEX ".idf_escape($W[1]!=""?$W[1]:uniqid($P."_"))." ON ".table($P).($W[3]?" USING $W[3]":"")." (".implode(", ",$W[2]).")".($W[4]?" WHERE $W[4]":"");}if($qb)array_unshift($bg,"ALTER TABLE ".table($P).implode(",",$qb));if($Sb)array_unshift($bg,"DROP INDEX ".implode(", ",$Sb));foreach($bg
as$D){if(!queries($D))return
false;}return
true;}function
truncate_tables(array$R){return!!queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$R)));}function
drop_kinds(array$R){$F=array("MATERIALIZED VIEW"=>array(),"VIEW"=>array(),"TABLE"=>array());foreach($R
as$z=>$Q)$F[strtoupper($Q["Engine"])][]=idf_escape($Q["nspname"]).".".table($z);return
array_filter($F);}function
drop_views(array$ki){return
drop_tables($ki);}function
drop_tables(array$R){$Zg=array();foreach($R
as$P)$Zg[$P]=table_status1($P);foreach(drop_kinds($Zg)as$Yd=>$Ue){if(!queries("DROP $Yd ".implode(", ",$Ue)))return
false;}return
true;}function
move_tables(array$R,array$ki,$lh){foreach(array_merge($R,$ki)as$P){$N=table_status1($P);if(!queries("ALTER ".strtoupper($N["Engine"])." ".table($P)." SET SCHEMA ".idf_escape($lh)))return
false;}return
true;}function
trigger($z,$P){if($z=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($P)." AND trigger_name = ".q($z);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$G)$e[]=$G["event_object_column"];$F=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement"
FROM information_schema.triggers'."
$Z
ORDER BY event_manipulation DESC")as$G){if($e&&$G["Event"]=="UPDATE")$G["Event"].=" OF";$G["Of"]=implode(", ",$e);if($F)$G["Event"].=" OR $F[Event]";$F=$G;}return$F;}function
triggers($P){$F=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($P))as$G){$Fh=trigger($G["trigger_name"],$P);$F[$Fh["Trigger"]]=array($Fh["Timing"],$Fh["Event"]);}return$F;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF",),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
routine($z,$S){$H=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
FROM information_schema.routines
WHERE routine_schema = current_schema() AND specific_name = '.q($z));$F=idx($H,0,array());$F["returns"]=array("type"=>preg_replace('~^_(.*)~','\1[]',"$F[type_udt_name]"));$F["fields"]=get_rows("SELECT COALESCE(parameter_name, ordinal_position::text) AS field,
	CASE data_type WHEN 'USER-DEFINED' THEN udt_name WHEN 'ARRAY' THEN substr(udt_name, 2) || '[]' ELSE data_type END AS type,
	character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = ".q($z)."
ORDER BY ordinal_position");return$F;}function
routines(){return
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
FROM information_schema.routines
WHERE routine_schema = current_schema()'.(connection()->flavor=='cockroach'?'':"
AND substring(specific_name, '[0-9]+\$')::oid NOT IN (SELECT objid FROM pg_catalog.pg_depend WHERE classid = 'pg_proc'::regclass AND deptype = 'e')").'
ORDER BY SPECIFIC_NAME');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($z,array$G){$F=array();foreach($G["fields"]as$k){$v=$k["length"];$F[]=$k["type"].($v?"($v)":"");}return
idf_escape($z)."(".implode(", ",$F).")";}function
last_id($E){$G=(is_object($E)?$E->fetch_row():array());return($G?$G[0]:0);}function
explain(Db$f,$D){return$f->query("EXPLAIN $D");}function
found_rows(array$Q,array$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($Q["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$kg))return$kg[1];}function
types($qc=false){$Sa=connection()->flavor=='cockroach';$Zd=($Sa?"'e'":"'b','c','d','e'".(min_version(9.2)?",'r'":""));return
get_key_vals("SELECT t.oid, t.typname
FROM pg_type t
WHERE t.typnamespace = ".driver()->nsOid."
AND t.typtype IN ($Zd)".($Sa?"
AND t.typelem = 0":"
AND (t.typrelid = 0 OR (SELECT c.relkind FROM pg_class c WHERE c.oid = t.typrelid) = 'c')"."
AND NOT EXISTS (SELECT 1 FROM pg_type e WHERE e.typarray = t.oid)".($qc?'':"
AND t.oid NOT IN (SELECT objid FROM pg_catalog.pg_depend WHERE classid = 'pg_type'::regclass AND deptype = 'e')"))."
ORDER BY t.typname");}function
type_values($q){$fc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $q ORDER BY enumsortorder");return($fc?"'".implode("', '",array_map('addslashes',$fc))."'":"");}function
collation_name($ff){return(min_version(9.1)?"(SELECT collname FROM pg_collation WHERE oid = $ff AND collname != 'default')":"NULL");}function
type_definition($q){$S=first(get_rows("SELECT typtype, typisdefined::int AS defined, typrelid FROM pg_type WHERE oid = $q"));$F=array("kind"=>($S?$S["typtype"]:""),"definition"=>"");if(!$S||!$S["defined"])return$F;switch($F["kind"]){case'e':$Y=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $q ORDER BY enumsortorder");$F["definition"]="AS ENUM (".implode(", ",array_map('Adminer\q',$Y)).")";break;case'c':$e=array();foreach(get_rows("SELECT attname, format_type(atttypid, atttypmod) AS full_type, ".collation_name("attcollation")." AS collation
FROM pg_attribute
WHERE attrelid = $S[typrelid] AND attnum > 0 AND NOT attisdropped
ORDER BY attnum")as$G)$e[]=idf_escape($G["attname"])." $G[full_type]".($G["collation"]?" COLLATE ".idf_escape($G["collation"]):"");$F["definition"]="AS (\n\t".implode(",\n\t",$e)."\n)";break;case'd':$Pb=first(get_rows("SELECT format_type(typbasetype, typtypmod) AS base, typnotnull::int AS notnull, typdefault, ".collation_name("typcollation")." AS collation
FROM pg_type WHERE oid = $q"));$F["definition"]="AS $Pb[base]".($Pb["collation"]?" COLLATE ".idf_escape($Pb["collation"]):"").($Pb["typdefault"]!=""?" DEFAULT $Pb[typdefault]":"").($Pb["notnull"]?" NOT NULL":"");foreach(get_rows("SELECT conname, pg_get_constraintdef(oid) AS definition FROM pg_constraint WHERE contypid = $q AND contype != 'n' ORDER BY conname")as$G)$F["definition"].=" CONSTRAINT ".idf_escape($G["conname"])." $G[definition]";break;case'r':$fg=first(get_rows("SELECT format_type(rngsubtype, NULL) AS subtype,
(SELECT opcname FROM pg_opclass WHERE oid = rngsubopc) AS subtype_opclass,
".collation_name("rngcollation")." AS collation,
NULLIF(rngcanonical, 0)::regproc::text AS canonical,
NULLIF(rngsubdiff, 0)::regproc::text AS subtype_diff".(min_version(14)?",
(SELECT typname FROM pg_type WHERE oid = rngmultitypid) AS multirange_type_name":"")."
FROM pg_range WHERE rngtypid = $q"));$_=array();foreach(array("subtype"=>0,"subtype_opclass"=>1,"collation"=>1,"canonical"=>0,"subtype_diff"=>0,"multirange_type_name"=>1)as$u=>$jc){if($fg[$u]!="")$_[]=strtoupper($u)." = ".($jc?idf_escape($fg[$u]):$fg[$u]);}$F["definition"]="AS RANGE (".implode(", ",$_).")";}return$F;}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){return(string)get_val("SELECT current_schema()");}function
set_schema($vg,$g=null){$F=connection($g)->query("SET search_path TO ".idf_escape($vg));driver()->setUserTypes(types(true));return!!$F;}function
drop_sql(array$R){$F="";foreach(drop_kinds($R)as$Yd=>$Ue)$F
.="DROP $Yd IF EXISTS ".implode(", ",$Ue).";\n";return($F?"$F\n":"");}function
foreign_keys_sql($P){$F="";$N=table_status1($P);$Ye=idf_escape($N['nspname']);$Fc=foreign_keys($P);ksort($Fc);foreach($Fc
as$Ec=>$Dc)$F
.="ALTER TABLE ONLY $Ye.".idf_escape($N['Name'])." ADD CONSTRAINT ".idf_escape($Ec)." ".preg_replace('~( REFERENCES )([^(.]+\()~',"\\1$Ye.\\2",$Dc["definition"]).";\n";return($F?"$F\n":$F);}function
indexes_sql($P,$C=""){$F="";$D="SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($P).($C!=""?" AND indexname != ".q($C):"");foreach(get_rows($D,null,"-- ")as$G)$F
.="\n\n$G[indexdef];";return$F;}function
create_sql($P,$ua,$bh){$rg=array();$Eg=array();$Fg=array();$Dg=array();$N=table_status1($P);$Ye=idf_escape($N['nspname']);if(is_view($N)){$ji=view($P);$qb="CREATE ".strtoupper($N["Engine"])." $Ye.".idf_escape($P)." AS ".rtrim($ji["select"],";").";";return
rtrim($qb.indexes_sql($P),';');}$l=fields($P);if(count($N)<2||empty($l))return"";$F="CREATE TABLE $Ye.".idf_escape($N['Name'])." (\n    ";$ih=q("$Ye.".idf_escape($N['Name']));foreach($l
as$k){$Gg="";if($k['default']=="nextval('$N[Name]_$k[field]_seq')"){$Gg="$Ye.".idf_escape("$N[Name]_$k[field]_seq");$k['default']=null;$k['full_type']=preg_replace('~int(eger)?~','serial',$k['full_type']);}$Cf=idf_escape($k['field']).' '.$k['full_type'].preg_replace('~(nextval\(\')([^.\']+\')~','\1'.str_replace("'","''",$N['nspname']).'.\2',default_value($k)).($k['null']?"":" NOT NULL");$rg[]=$Cf;if(preg_match('~nextval\(\'([^\']+)\'\)~',$k['default'],$ue)){$Cg=$ue[1];$Ug=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Cg)):"SELECT * FROM $Cg"),null,"-- "));$Eg[]=($bh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Ye.$Cg;\n":"")."CREATE SEQUENCE $Ye.$Cg INCREMENT $Ug[increment_by] MINVALUE $Ug[min_value] MAXVALUE $Ug[max_value]"." CACHE $Ug[cache_value];";if(get_val("SELECT pg_get_serial_sequence($ih, ".q($k['field']).")"))$Fg[]="\n\nALTER SEQUENCE $Ye.$Cg OWNED BY $Ye.".idf_escape($N['Name']).".".idf_escape($k['field']).";";if($ua)$Dg[]="$Ye.$Cg";}elseif($ua&&$k['auto_increment'])$Dg[]=($Gg?:get_val("SELECT pg_get_serial_sequence($ih, ".q($k['field']).")"));}if(!empty($Eg))$F=implode("\n\n",$Eg)."\n\n$F";$C="";foreach(indexes($P)as$zd=>$s){if($s['type']=='PRIMARY'){$C=$zd;$rg[]="CONSTRAINT ".idf_escape($zd)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$s['columns'])).")";}}foreach(driver()->checkConstraints($P)as$fb=>$hb)$rg[]="CONSTRAINT ".idf_escape($fb)." CHECK ($hb)";$F
.=implode(",\n    ",$rg)."\n)";$Df=driver()->partitionsInfo($N['Name']);if($Df)$F
.="\nPARTITION BY $Df[partition_by]($Df[partition])";$F
.="\nWITH (oids = ".($N['Oid']?'true':'false').");";$F
.=implode($Fg);if($N['Comment'])$F
.="\n\nCOMMENT ON TABLE $Ye.".idf_escape($N['Name'])." IS ".q($N['Comment']).";";foreach($l
as$vc=>$k){if($k['comment'])$F
.="\n\nCOMMENT ON COLUMN $Ye.".idf_escape($N['Name']).".".idf_escape($vc)." IS ".q($k['comment']).";";}$F
.=indexes_sql($P,$C);foreach(array_filter($Dg)as$Bg){$Ug=first(get_rows("SELECT last_value, is_called::int FROM $Bg",null,"-- "));if($Ug['is_called'])$F
.="\n\nDO \$\$ BEGIN PERFORM setval(".q($Bg).", $Ug[last_value]); END \$\$;";}return
rtrim($F,';');}function
truncate_sql($P){return"TRUNCATE ".table($P);}function
truncate_all_sql(array$R){return($R?"TRUNCATE ".implode(", ",array_map('Adminer\table',$R)).";\n\n":"");}function
trigger_sql($P){$N=table_status1($P);$F="";foreach(triggers($P)as$Eh=>$Dh){$Fh=trigger($Eh,$N['Name']);$F
.="\nCREATE TRIGGER ".idf_escape($Fh['Trigger'])." $Fh[Timing] $Fh[Event] ON ".idf_escape($N["nspname"]).".".idf_escape($N['Name'])." $Fh[Type] $Fh[Statement];;\n";}return$F;}function
use_sql($zb,$bh=""){$z=idf_escape($zb);$F="";if(preg_match('~CREATE~',$bh)){if($bh=="DROP+CREATE")$F="DROP DATABASE IF EXISTS $z;\n";$F
.="CREATE DATABASE $z;\n";}return"$F\\connect $z";}function
show_variables(){return
get_rows("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
convert_field(array$k){}function
unconvert_field(array$k,$F){return$F;}function
support($uc){return
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|fast_status|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table'.'|transaction_ddl|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|deferrable').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$uc);}function
kill_process($q){return
queries("SELECT pg_terminate_backend(".number($q).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){return
get_val("SHOW max_connections");}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
class
SqliteDb
extends
SqlDb{var$extension="SQLite3";private$link;function
attach($m,$U,$B){$this->link=new
\SQLite3($m);$ii=$this->link->version();$this->server_info=$ii["versionString"];return'';}function
query($D,$Mh=false){$E=@$this->link->query($D);$this->error="";if(!$E){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
false;}elseif($E->numColumns())return
new
Result($E);$this->affected_rows=$this->link->changes();return
true;}function
quote($O){return(is_utf8($O)?"'".$this->link->escapeString($O)."'":"x'".bin2hex($O)."'");}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($E){$this->result=$E;}function
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$Lh=array(1=>"integer","real","text","blob","null");$d=$this->offset++;$S=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($S==SQLITE3_TEXT?15:0),"native_type"=>$Lh[$S],"charsetnr"=>($S==SQLITE3_BLOB?63:0),);}}}elseif(extension_loaded("pdo_sqlite")){abstract
class
SqliteDb
extends
PdoDb{var$extension="PDO_SQLite";function
attach($m,$U,$B){return$this->dsn(DRIVER.":$m","","");}function
quote($O){return(is_utf8($O)?parent::quote($O):"x'".bin2hex($O)."'");}}}if(class_exists('Adminer\SqliteDb')){class
Db
extends
SqliteDb{function
attach($m,$U,$B){parent::attach($m,$U,$B);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
select_db($m){$D="ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$m)?$m:dirname($_SERVER["SCRIPT_FILENAME"])."/$m")." AS a";if(is_readable($m)&&$this->query($D))return!self::attach($m,'','');return
false;}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($K,$U,$B){if($B!="")return'Databáza nepodporuje heslo.';return
parent::connect(":memory:","","");}function
__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");if(min_version(3.37,0,$f))$this->types[0]["any"]=0;}function
structuredTypes(){return
array_keys($this->types[0]);}function
quoteBinary($ug){return"x".q(bin2hex($ug));}function
engines(){$F=array("table");if(min_version("3.8.2")){if(min_version(3.37)){$F[]="STRICT";$F[]="STRICT, WITHOUT ROWID";}$F[]="WITHOUT ROWID";}return$F;}function
insertUpdate($P,array$H,array$C){$Y=array();foreach($H
as$L)$Y[]="(".implode(", ",$L).")";return
queries("REPLACE INTO ".table($P)." (".implode(", ",array_keys(reset($H))).") VALUES\n".implode(",\n",$Y));}function
tableHelp($z,$Rd=false){if(preg_match('~^sqlite_(seq|stat.)~',$z,$y))return"fileformat2.html#$y[1]tab";if(preg_match('~^sqlite(_temp)?_(master|schema)$~',$z))return"schematab.html";}function
checkConstraints($P){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($P),0,$this->conn),$ue);return
array_combine($ue[2],$ue[2]);}function
allFields(){$F=array();foreach(tables_list()as$P=>$S){foreach(fields($P)as$k)$F[$P][]=$k;}return$F;}}function
idf_escape($r){return'"'.str_replace('"','""',$r).'"';}function
table($r){return
idf_escape($r);}function
get_databases($Hc){return
array();}function
limit($D,$Z,$w,$ef=0,$J=" "){return" $D$Z".($w?$J."LIMIT $w".($ef?" OFFSET $ef":""):"");}function
limit1($P,$D,$Z,$J="\n"){return(preg_match('~^INTO~',$D)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($D,$Z,1,0,$J):" $D WHERE rowid = (SELECT rowid FROM ".table($P).$Z.$J."LIMIT 1)");}function
db_collation($h,array$Wa){return
get_val("PRAGMA encoding");}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name LIKE 'sqlite_%'), name");}function
count_tables(array$_b){return
array();}function
db_status(){$zf=get_val("PRAGMA page_size");$Qc=get_val("PRAGMA freelist_count")*$zf;return
array("Data_length"=>get_val("PRAGMA page_count")*$zf-$Qc,"Index_length"=>0,"Data_free"=>$Qc,);}function
table_status($z="",$tc=false){$F=array();$H=array();if(!$tc&&$z==""){connection()->query("PRAGMA optimize = 0x10002");$H=get_key_vals("SELECT tbl, MAX(CAST(stat AS integer)) FROM sqlite_stat1 GROUP BY tbl");}foreach(get_rows("SELECT name AS Name, type AS Engine, sql, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($z!=""?"AND name = ".q($z):"ORDER BY (name LIKE 'sqlite_%'), name"))as$G){if($G["Engine"]=="table"){$ch=preg_replace('~.*\)~s','',$G["sql"]);$G["Engine"]=implode(", ",array_filter(array((preg_match('~\bSTRICT\b~i',$ch)?"STRICT":0),(preg_match('~\bWITHOUT\s+ROWID\b~i',$ch)?"WITHOUT ROWID":0),)))?:"table";}unset($G["sql"]);$G["Rows"]=idx($H,$G["Name"],0);$F[$G["Name"]]=$G;}if(!$tc){foreach(get_rows("SELECT * FROM sqlite_sequence".($z!=""?" WHERE name = ".q($z):""),null,"")as$G)$F[$G["name"]]["Auto_increment"]=$G["seq"];}return$F;}function
is_view(array$Q){return$Q["Engine"]=="view";}function
fk_support(array$Q){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($P){$F=array();$Vg=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($P));$Yf=array("select"=>1,"where"=>1,"order"=>1);if(!preg_match('~^sqlite(_temp)?_(master|schema)$~',$P))$Yf+=array("insert"=>1,"update"=>1);foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($P).")")as$G){$z=$G["name"];$S=strtolower($G["type"]);$i=$G["dflt_value"];$F[$z]=array("field"=>$z,"type"=>(preg_match('~int~i',$S)?"integer":(preg_match('~char|clob|text~i',$S)?"text":(preg_match('~blob~i',$S)?"blob":(preg_match('~real|floa|doub~i',$S)?"real":(preg_match('~any~i',$S)?"any":"numeric"))))),"full_type"=>$S,"default"=>(preg_match("~^'(.*)'$~",$i,$y)?str_replace("''","'",$y[1]):($i=="NULL"?null:$i)),"null"=>!$G["notnull"],"privileges"=>$Yf,"primary"=>$G["pk"],);if($G["pk"]&&preg_match('~\bAUTOINCREMENT\b~i',$Vg))$F[$z]["auto_increment"]=true;}$r='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$r.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Vg,$ue,PREG_SET_ORDER);foreach($ue
as$y){$z=str_replace('""','"',preg_replace('~^"|"$~','',$y[1]));if($F[$z])$F[$z]["collation"]=trim($y[3],"'");}preg_match_all('~'.$r.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$Vg,$ue,PREG_SET_ORDER);foreach($ue
as$y){$z=str_replace('""','"',preg_replace('~^"|"$~','',$y[1]));$F[$z]["default"]=$y[3];$F[$z]["generated"]=strtoupper($y[4]);}return$F;}function
indexes($P,$g=null){$g=connection($g);$F=array();$Vg=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($P),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Vg,$y)){$F[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$y[1],$ue,PREG_SET_ORDER);foreach($ue
as$y){$F[""]["columns"][]=idf_unescape($y[2]).$y[4];$F[""]["descs"][]=(preg_match('~DESC~i',$y[5])?'1':null);}}if(!$F){foreach(fields($P)as$z=>$k){if($k["primary"])$F[""]=array("type"=>"PRIMARY","columns"=>array($z),"lengths"=>array(),"descs"=>array(null));}}$Xg=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($P),$g);foreach(get_rows("PRAGMA index_list(".table($P).")",$g)as$G){$z=$G["name"];$s=array("type"=>($G["unique"]?"UNIQUE":"INDEX"));$s["lengths"]=array();$s["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($z).")",$g)as$tg){$s["columns"][]=$tg["name"];$s["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($z).' ON '.idf_escape($P),'~').' \((.*)\)$~i',$Xg[$z],$kg)){preg_match_all('/("[^"]*+")+( DESC)?/',$kg[2],$ue);foreach($ue[2]as$u=>$W){if($W)$s["descs"][$u]='1';}}if(!$F[""]||$s["type"]!="UNIQUE"||$s["columns"]!=$F[""]["columns"]||$s["descs"]!=$F[""]["descs"]||!preg_match("~^sqlite_~",$z))$F[$z]=$s;}return$F;}function
foreign_keys($P){$F=array();foreach(get_rows("PRAGMA foreign_key_list(".table($P).")")as$G){$n=&$F[$G["id"]];if(!$n)$n=$G;$n["source"][]=$G["from"];$n["target"][]=$G["to"];}return$F;}function
view($z){return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($z))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($h,$vg=""){return
false;}function
error(){return
h(connection()->error);}function
check_sqlite_name($z){$qc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($qc)\$~",$z)){connection()->error=sprintf('Prosím vyberte jednu z koncoviek %s.',str_replace("|",", ",$qc));return
false;}return
true;}function
create_database($h,$Va){if(file_exists($h)){connection()->error='Súbor existuje.';return
false;}if(!check_sqlite_name($h))return
false;try{$x=new
Db();$x->attach($h,'','');}catch(\Exception$lc){connection()->error=$lc->getMessage();return
false;}$x->query('PRAGMA encoding = "UTF-8"');$x->query('CREATE TABLE adminer (i)');$x->query('DROP TABLE adminer');return
true;}function
drop_databases(array$_b){connection()->attach(":memory:",'','');foreach($_b
as$h){if(!check_sqlite_name($h))return
false;if(!@unlink($h)){connection()->error='Súbor existuje.';return
false;}}return
true;}function
rename_database($z,$Va){if(!check_sqlite_name($z))return
false;connection()->attach(":memory:",'','');connection()->error='Súbor existuje.';return@rename(DB,$z);}function
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
alter_table($P,$z,array$l,array$Jc,$Za,$dc,$Va,$ua,$Ff){$Xh=($P==""||$Jc||$dc);foreach($l
as$k){if($k[0]!=""||!$k[1]||$k[2]){$Xh=true;break;}}$b=array();$uf=array();foreach($l
as$k){if($k[1]){$b[]=($Xh?$k[1]:"ADD ".implode($k[1]));if($k[0]!="")$uf[$k[0]]=$k[1][0];}}if(!$Xh){foreach($b
as$W){if(!queries("ALTER TABLE ".table($P)." $W"))return
false;}if($P!=$z&&!queries("ALTER TABLE ".table($P)." RENAME TO ".table($z)))return
false;}elseif(!recreate_table($P,$z,$b,$uf,$Jc,$ua,array(),"","",$dc))return
false;if($ua){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $ua WHERE name = ".q($z));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($z).", $ua)");queries("COMMIT");}return
true;}function
recreate_table($P,$z,array$l,array$uf,array$Jc,$ua="",$t=array(),$Tb="",$ea="",$dc=""){if($P!=""){if(!$l){foreach(fields($P)as$u=>$k){if($t)$k["auto_increment"]=0;$l[]=process_field($k,$k);$uf[$u]=idf_escape($u);}}$Vf=false;foreach($l
as$k){if($k[6])$Vf=true;}$Ub=array();foreach($t
as$u=>$W){if($W[2]=="DROP"){$Ub[$W[1]]=true;unset($t[$u]);}}foreach(indexes($P)as$Vd=>$s){$e=array();foreach($s["columns"]as$u=>$d){if(!$uf[$d])continue
2;$e[]=$uf[$d].($s["descs"][$u]?" DESC":"");}if(!$Ub[$Vd]){if($s["type"]!="PRIMARY"||!$Vf)$t[]=array($s["type"],$Vd,$e);}}foreach($t
as$u=>$W){if($W[0]=="PRIMARY"){unset($t[$u]);$Jc[]="  PRIMARY KEY (".implode(", ",$W[2]).")";}}foreach(foreign_keys($P)as$Vd=>$n){foreach($n["source"]as$u=>$d){if(!$uf[$d])continue
2;$n["source"][$u]=idf_unescape($uf[$d]);}if(!isset($Jc[" $Vd"]))$Jc[]=" ".format_foreign_key($n);}queries("BEGIN");}$Ja=array();foreach($l
as$k){if(preg_match('~GENERATED~',$k[3]))unset($uf[array_search($k[0],$uf)]);$Ja[]="  ".implode($k);}$Ja=array_merge($Ja,array_filter($Jc));foreach(driver()->checkConstraints($P)as$Ma){if($Ma!=$Tb)$Ja[]="  CHECK ($Ma)";}if($ea)$Ja[]="  CHECK ($ea)";$mh=($P!=""&&$P==$z?"adminer_$z":$z);if(!$dc&&$P!="")$dc=idx(table_status1($P),"Engine");if(!queries("CREATE TABLE ".table($mh)." (\n".implode(",\n",$Ja)."\n)".($dc!="table"&&in_array($dc,driver()->engines())?" $dc":"")))return
false;if($P!=""){if($uf&&!queries("INSERT INTO ".table($mh)." (".implode(", ",$uf).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($uf)))." FROM ".table($P)))return
false;$Ih=array();foreach(triggers($P)as$Gh=>$th){$Fh=trigger($Gh,$P);$Ih[]="CREATE TRIGGER ".idf_escape($Gh)." ".implode(" ",$th)." ON ".table($z)."\n$Fh[Statement]";}$ua=$ua?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($P));if(!queries("DROP TABLE ".table($P))||($P==$z&&!queries("ALTER TABLE ".table($mh)." RENAME TO ".table($z)))||!alter_indexes($z,$t))return
false;if($ua)queries("UPDATE sqlite_sequence SET seq = $ua WHERE name = ".q($z));foreach($Ih
as$Fh){if(!queries($Fh))return
false;}queries("COMMIT");}return
true;}function
index_sql($P,$S,$z,$e){return"CREATE $S ".($S!="INDEX"?"INDEX ":"").idf_escape($z!=""?$z:uniqid($P."_"))." ON ".table($P)." $e";}function
alter_indexes($P,$b){foreach($b
as$C){if($C[0]=="PRIMARY")return
recreate_table($P,$P,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$W){if(!queries($W[2]=="DROP"?"DROP INDEX ".idf_escape($W[1]):index_sql($P,$W[0],$W[1],"(".implode(", ",$W[2]).")")))return
false;}return
true;}function
truncate_tables(array$R){return
apply_queries("DELETE FROM",$R);}function
drop_views(array$ki){return
apply_queries("DROP VIEW",$ki);}function
drop_tables(array$R){return
apply_queries("DROP TABLE",$R);}function
move_tables(array$R,array$ki,$lh){return
false;}function
trigger($z,$P){if($z=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$r='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Hh=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$r\\s*(".implode("|",$Hh["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($r))?\\s+ON\\s*$r\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($z)),$y);$df=$y[3];return
array("Timing"=>strtoupper($y[1]),"Event"=>strtoupper($y[2]).($df?" OF":""),"Of"=>idf_unescape($df),"Trigger"=>$z,"Statement"=>$y[4],);}function
triggers($P){$F=array();$Hh=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($P))as$G){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$Hh["Timing"]).')\s*(.*?)\s+ON\b~i',$G["sql"],$y);$F[$G["name"]]=array($y[1],$y[2]);}return$F;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
last_id($E){return
get_val("SELECT LAST_INSERT_ROWID()");}function
explain(Db$f,$D){return$f->query("EXPLAIN QUERY PLAN $D");}function
found_rows(array$Q,array$Z){}function
types($qc=false){return
array();}function
create_sql($P,$ua,$bh){$F=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($P));foreach(indexes($P)as$z=>$s){if($z=='')continue;$F
.=";\n\n".index_sql($P,$s['type'],$z,"(".implode(", ",array_map('Adminer\idf_escape',$s['columns'])).")");}return$F;}function
truncate_sql($P){return"DELETE FROM ".table($P);}function
use_sql($zb,$bh=""){return"";}function
trigger_sql($P){return
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($P)));}function
show_variables(){$F=array();foreach(get_rows("PRAGMA pragma_list")as$G){$z=$G["name"];if($z!="pragma_list"&&$z!="compile_options"){$F[$z]=array($z,'');foreach(get_rows("PRAGMA $z")as$G)$F[$z][1].=implode(", ",$G)."\n";}}return$F;}function
show_status(){$F=array();foreach(get_vals("PRAGMA compile_options")as$mf)$F[]=explode("=",$mf,2)+array('','');return$F;}function
convert_field(array$k){}function
unconvert_field(array$k,$F){return$F;}function
support($uc){return
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|transaction_ddl|trigger|variables|view|view_trigger)$~',$uc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="sqlsrv";private$link,$result;private
function
get_error(){$this->error="";foreach(sqlsrv_errors()as$j){$this->errno=$j["code"];$this->error
.="$j[message]\n";}$this->error=rtrim($this->error);}function
attach($K,$U,$B){$gb=array("UID"=>$U,"PWD"=>$B,"CharacterSet"=>"UTF-8");$M=adminer()->connectSsl();if(isset($M["Encrypt"]))$gb["Encrypt"]=$M["Encrypt"];if(isset($M["TrustServerCertificate"]))$gb["TrustServerCertificate"]=$M["TrustServerCertificate"];$h=adminer()->database();if($h!="")$gb["Database"]=$h;list($pd,$Nf)=host_port($K);$this->link=@sqlsrv_connect($pd.($Nf?",$Nf":""),$gb);if($this->link){$Dd=sqlsrv_server_info($this->link);$this->server_info=$Dd['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
quote($O){$Nh=strlen($O)!=strlen(utf8_decode($O));return($Nh?"N":"")."'".str_replace("'","''",$O)."'";}function
select_db($zb){return$this->query(use_sql($zb));}function
query($D,$Mh=false){$E=sqlsrv_query($this->link,$D);$this->error="";if(!$E){$this->get_error();return
false;}return$this->store_result($E);}function
multi_query($D){$this->result=sqlsrv_query($this->link,$D);$this->error="";if(!$this->result){$this->get_error();return
false;}return
true;}function
store_result($E=null){if(!$E)$E=$this->result;if(!$E)return
false;if(sqlsrv_field_metadata($E))return
new
Result($E);$this->affected_rows=sqlsrv_rows_affected($E);return
true;}function
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
Result{var$num_rows;private$result,$offset=0,$fields;function
__construct($E){$this->result=$E;}private
function
convert($G){foreach((array)$G
as$u=>$W){if(is_a($W,'DateTime'))$G[$u]=$W->format("Y-m-d H:i:s");}return$G;}function
fetch_assoc(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_ASSOC));}function
fetch_row(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_NUMERIC));}function
fetch_field(){if(!$this->fields)$this->fields=sqlsrv_field_metadata($this->result);$k=$this->fields[$this->offset++];$F=new
\stdClass;$F->name=$k["Name"];$F->type=($k["Type"]==1?254:15);$F->charsetnr=(in_array($k["Type"],array(-2,-3,-4))?63:0);return$F;}function
seek($ef){for($p=0;$p<$ef;$p++)sqlsrv_fetch($this->result);}}function
last_id($E){return(string)get_val("SELECT SCOPE_IDENTITY()");}function
explain(Db$f,$D){$f->query("SET SHOWPLAN_ALL ON");$F=$f->query($D);$f->query("SET SHOWPLAN_ALL OFF");return$F;}}else{abstract
class
MssqlDb
extends
PdoDb{function
select_db($zb){return$this->query(use_sql($zb));}function
lastInsertId(){return$this->pdo->lastInsertId();}}function
last_id($E){return
connection()->lastInsertId();}function
explain(Db$f,$D){}if(extension_loaded("pdo_sqlsrv")){class
Db
extends
MssqlDb{var$extension="PDO_SQLSRV";function
attach($K,$U,$B){list($pd,$Nf)=host_port($K);return$this->dsn("sqlsrv:Server=$pd".($Nf?",$Nf":""),$U,$B);}}}elseif(extension_loaded("pdo_dblib")){class
Db
extends
MssqlDb{var$extension="PDO_DBLIB";function
attach($K,$U,$B){list($pd,$Nf)=host_port($K);return$this->dsn("dblib:charset=utf8;host=$pd".($Nf?(is_numeric($Nf)?";port=":";unix_socket=").$Nf:""),$U,$B);}}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
function
connect($K,$U,$B){if($K=="")$K="localhost:1433";return
parent::connect($K,$U,$B);}function
__construct(Db$f){parent::__construct($f);$this->types=array('Čísla'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Dátum a čas'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Reťazce'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binárne'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
insertUpdate($P,array$H,array$C){$l=fields($P);$T=array();$Z=array();$L=reset($H);$e="c".implode(", c",range(1,count($L)));$Ha=0;$Hd=array();foreach($L
as$u=>$W){$Ha++;$z=idf_unescape($u);if(!$l[$z]["auto_increment"])$Hd[$u]="c$Ha";if(isset($C[$z]))$Z[]="$u = c$Ha";else$T[]="$u = c$Ha";}$Y=array();foreach($H
as$L)$Y[]="(".implode(", ",$L).")";if($Z){$ud=queries("SET IDENTITY_INSERT ".table($P)." ON");$F=queries("MERGE ".table($P)." USING (VALUES\n\t".implode(",\n\t",$Y)."\n) AS source ($e) ON ".implode(" AND ",$Z).($T?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$T):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($ud?$L:$Hd)).") VALUES (".($ud?$e:implode(", ",$Hd)).");");if($ud)queries("SET IDENTITY_INSERT ".table($P)." OFF");}else$F=queries("INSERT INTO ".table($P)." (".implode(", ",array_keys($L)).") VALUES\n".implode(",\n",$Y));return$F;}function
begin(){return
queries("BEGIN TRANSACTION");}function
quoteBinary($ug){return"0x".bin2hex($ug);}function
tableHelp($z,$Rd=false){$ke=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$x=$ke[get_schema()];if($x)return"relational-databases/system-$x".preg_replace('~_~','-',strtolower($z))."-transact-sql";}}function
idf_escape($r){return"[".str_replace("]","]]",$r)."]";}function
table($r){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($r);}function
get_databases($Hc){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($D,$Z,$w,$ef=0,$J=" "){return($w?" TOP (".($w+$ef).")":"")." $D$Z";}function
limit1($P,$D,$Z,$J="\n"){return
limit($D,$Z,1,0,$J);}function
db_collation($h,array$Wa){return
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($h));}function
logged_user(){return
get_val("SELECT SUSER_NAME()");}function
tables_list(){return
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
count_tables(array$_b){$F=array();foreach($_b
as$h){connection()->select_db($h);$F[$h]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$F;}function
table_status($z="",$tc=false){$F=array();$Og=array();foreach(get_rows("SELECT object_id, SUM(CASE WHEN index_id < 2 THEN row_count ELSE 0 END) AS [Rows],
SUM(CASE WHEN index_id < 2 THEN used_page_count ELSE 0 END) * 8192 AS Data_length,
SUM(CASE WHEN index_id > 1 THEN used_page_count ELSE 0 END) * 8192 AS Index_length,
SUM(reserved_page_count - used_page_count) * 8192 AS Data_free
FROM sys.dm_db_partition_stats
GROUP BY object_id",null,"")as$G){$cf=$G["object_id"];unset($G["object_id"]);$Og[$cf]=$G;}foreach(get_rows("SELECT ao.object_id, ao.name AS Name, ao.type_desc AS Engine,
	(SELECT cast(value as varchar(max)) FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment
FROM sys.all_objects AS ao
WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($z!=""?"AND name = ".q($z):"ORDER BY name"))as$G){$cf=$G["object_id"];unset($G["object_id"]);$F[$G["Name"]]=$G+idx($Og,$cf,array());}return$F;}function
is_view(array$Q){return$Q["Engine"]=="VIEW";}function
fk_support(array$Q){return
true;}function
fields($P){$ab=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($P).", 'column', NULL)");$F=array();$hh=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($P));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name,
	t.name type, d.definition [default], d.name default_constraint, i.is_primary_key
FROM sys.all_columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE c.object_id = ".q($hh))as$G){$S=$G["type"];$v=(preg_match("~char|binary~",$S)?intval($G["max_length"])/($S[0]=='n'?2:1):($S=="decimal"?"$G[precision],$G[scale]":""));$F[$G["name"]]=array("field"=>$G["name"],"full_type"=>$S.($v?"($v)":""),"type"=>$S,"length"=>$v,"default"=>(preg_match("~^\('(.*)'\)$~",$G["default"],$y)?str_replace("''","'",$y[1]):$G["default"]),"default_constraint"=>$G["default_constraint"],"null"=>$G["is_nullable"],"auto_increment"=>$G["is_identity"],"collation"=>$G["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$G["is_primary_key"],"comment"=>$ab[$G["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($hh))as$G){$F[$G["name"]]["generated"]=($G["is_persisted"]?"PERSISTED":"VIRTUAL");$F[$G["name"]]["default"]=$G["definition"];}return$F;}function
indexes($P,$g=null){$F=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE OBJECT_NAME(i.object_id) = ".q($P),$g)as$G){$z=$G["name"];$F[$z]["type"]=($G["is_primary_key"]?"PRIMARY":($G["is_unique"]?"UNIQUE":"INDEX"));$F[$z]["lengths"]=array();$F[$z]["columns"][$G["key_ordinal"]]=$G["column_name"];$F[$z]["descs"][$G["key_ordinal"]]=($G["is_descending_key"]?'1':null);}return$F;}function
view($z){return
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($z))));}function
collations(){$F=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$Va)$F[preg_replace('~_.*~','',$Va)][]=$Va;return$F;}function
information_schema($h,$vg=""){return
in_array($vg!=""?$vg:get_schema(),array("INFORMATION_SCHEMA","sys"));}function
error(){return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
create_database($h,$Va){return
queries("CREATE DATABASE ".idf_escape($h).(preg_match('~^[a-z0-9_]+$~i',$Va)?" COLLATE $Va":""));}function
drop_databases(array$_b){return!!queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$_b)));}function
rename_database($z,$Va){if(preg_match('~^[a-z0-9_]+$~i',$Va))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $Va");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($z));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($P,$z,array$l,array$Jc,$Za,$dc,$Va,$ua,$Ff){$b=array();$ab=array();$sf=fields($P);foreach($l
as$k){$d=idf_escape($k[0]);$W=$k[1];if(!$W)$b["DROP"][]=" COLUMN $d";else{$W[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$W[1]);$ab[$k[0]]=$W[5];unset($W[5]);if(preg_match('~ AS ~',$W[3]))unset($W[1],$W[2]);if($k[0]=="")$b["ADD"][]="\n  ".implode("",$W).($P==""?substr($Jc[$W[0]],16+strlen($W[0])):"");else{$i=$W[3];unset($W[3]);unset($W[6]);if($d!=$W[0])queries("EXEC sp_rename ".q(table($P).".$d").", ".q(idf_unescape($W[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$W)][]="";$rf=$sf[$k[0]];if(default_value($rf)!=$i){if($rf["default"]!==null)$b["DROP"][]=" ".idf_escape($rf["default_constraint"]);if($i)$b["ADD"][]="\n $i FOR $d";}}}}if($P==""){$da=(array)$b["ADD"];foreach($Jc
as$u=>$W){if(!is_string($u))$da[]="\n$W";}return
queries("CREATE TABLE ".table($z)." (".implode(",",$da)."\n)");}if($P!=$z)queries("EXEC sp_rename ".q(table($P)).", ".q($z));if($Jc)$b[""]=$Jc;foreach($b
as$u=>$W){if(!queries("ALTER TABLE ".table($z)." $u".implode(",",$W)))return
false;}foreach($ab
as$u=>$W){$Za=substr($W,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($z).", @level2type = N'Column', @level2name = ".q($u));queries("EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = $Za,
@level0type = N'Schema',
@level0name = ".q(get_schema()).",
@level1type = N'Table',
@level1name = ".q($z).",
@level2type = N'Column',
@level2name = ".q($u));}return
true;}function
alter_indexes($P,$b){$s=array();$Sb=array();foreach($b
as$W){if($W[2]=="DROP"){if($W[0]=="PRIMARY")$Sb[]=idf_escape($W[1]);else$s[]=idf_escape($W[1])." ON ".table($P);}elseif(!queries(($W[0]!="PRIMARY"?"CREATE $W[0] ".($W[0]!="INDEX"?"INDEX ":"").idf_escape($W[1]!=""?$W[1]:uniqid($P."_"))." ON ".table($P):"ALTER TABLE ".table($P)." ADD PRIMARY KEY")." (".implode(", ",$W[2]).")"))return
false;}return(!$s||queries("DROP INDEX ".implode(", ",$s)))&&(!$Sb||queries("ALTER TABLE ".table($P)." DROP ".implode(", ",$Sb)));}function
found_rows(array$Q,array$Z){}function
foreign_keys($P){$F=array();$if=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($P).", @fktable_owner = ".q(get_schema()))as$G){$n=&$F[$G["FK_NAME"]];$n["db"]=$G["PKTABLE_QUALIFIER"];$n["ns"]=$G["PKTABLE_OWNER"];$n["table"]=$G["PKTABLE_NAME"];$n["on_update"]=$if[$G["UPDATE_RULE"]];$n["on_delete"]=$if[$G["DELETE_RULE"]];$n["source"][]=$G["FKCOLUMN_NAME"];$n["target"][]=$G["PKCOLUMN_NAME"];}return$F;}function
truncate_tables(array$R){return
apply_queries("TRUNCATE TABLE",$R);}function
drop_views(array$ki){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$ki)));}function
drop_tables(array$R){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$R)));}function
move_tables(array$R,array$ki,$lh){return
apply_queries("ALTER SCHEMA ".idf_escape($lh)." TRANSFER",array_merge($R,$ki));}function
trigger($z,$P){if($z=="")return
array();$H=get_rows("SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT'
	WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE'
	WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
WHERE s.xtype = 'TR' AND s.name = ".q($z));$F=reset($H);if($F)$F["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$F["text"]);return$F;}function
triggers($P){$F=array();foreach(get_rows("SELECT sys1.name,
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT'
	WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE'
	WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($P))as$G)$F[$G["name"]]=array($G["Timing"],$G["Event"]);return$F;}function
trigger_options(){return
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
schemas(){return
get_vals("SELECT name FROM sys.schemas");}function
get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return
get_val("SELECT SCHEMA_NAME()");}function
set_schema($vg,$g=null){$_GET["ns"]=$vg;return
true;}function
create_sql($P,$ua,$bh){if(is_view(table_status1($P))){$ji=view($P);return"CREATE VIEW ".table($P)." AS $ji[select]";}$l=array();$C=false;foreach(fields($P)as$z=>$k){$W=process_field($k,$k);if($W[6])$C=true;$l[]=implode("",$W);}foreach(indexes($P)as$z=>$s){if(!$C||$s["type"]!="PRIMARY"){$e=array();foreach($s["columns"]as$u=>$W)$e[]=idf_escape($W).($s["descs"][$u]?" DESC":"");$z=idf_escape($z);$l[]=($s["type"]=="INDEX"?"INDEX $z":"CONSTRAINT $z ".($s["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($P)as$z=>$Ma)$l[]="CONSTRAINT ".idf_escape($z)." CHECK ($Ma)";return"CREATE TABLE ".table($P)." (\n\t".implode(",\n\t",$l)."\n)";}function
foreign_keys_sql($P){$l=array();foreach(foreign_keys($P)as$Jc)$l[]=ltrim(format_foreign_key($Jc));return($l?"ALTER TABLE ".table($P)." ADD\n\t".implode(",\n\t",$l).";\n\n":"");}function
truncate_sql($P){return"TRUNCATE TABLE ".table($P);}function
use_sql($zb,$bh=""){return"USE ".idf_escape($zb);}function
trigger_sql($P){$F="";foreach(triggers($P)as$z=>$Fh)$F
.=create_trigger(" ON ".table($P),trigger($z,$P)).";";return$F;}function
convert_field(array$k){}function
unconvert_field(array$k,$F){return$F;}function
support($uc){return
preg_match('~^(check|comment|columns|database|drop_col|dump|fast_status|indexes|descidx|scheme|sql|table|transaction_ddl|trigger|view|view_trigger)$~',$uc);}}add_driver("oracle","Oracle beta");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="oci8";var$_current_db;private$link;function
_error($gc,$j){if(ini_bool("html_errors"))$j=html_entity_decode(strip_tags($j));$j=preg_replace('~^[^:]*: ~','',$j);$this->error=$j;}function
attach($K,$U,$B){$this->link=@oci_new_connect($U,$B,$K,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$j=oci_error();return($j?$j["message"]:'Neznáma chyba.');}function
quote($O){return"'".str_replace("'","''",$O)."'";}function
select_db($zb){$this->_current_db=$zb;return
true;}function
query($D,$Mh=false){$E=oci_parse($this->link,$D);$this->error="";if(!$E){$j=oci_error($this->link);$this->errno=$j["code"];$this->error=$j["message"];return
false;}set_error_handler(array($this,'_error'));$F=@oci_execute($E);restore_error_handler();if($F){if(oci_num_fields($E))return
new
Result($E);$this->affected_rows=oci_num_rows($E);oci_free_statement($E);}return$F;}function
timeout($Oe){return
oci_set_call_timeout($this->link,$Oe);}}class
Result{var$num_rows;private$result,$offset=1;function
__construct($E){$this->result=$E;}private
function
convert($G){foreach((array)$G
as$u=>$W){if(is_a($W,'OCILob')||is_a($W,'OCI-Lob'))$G[$u]=$W->load();}return$G;}function
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
fetch_field(){$d=$this->offset++;$F=new
\stdClass;$F->name=oci_field_name($this->result,$d);$S=oci_field_type($this->result,$d);$F->native_type=$S;$F->type=$S;$F->charsetnr=(preg_match("~raw|blob|bfile~",$S)?63:0);return$F;}}}elseif(extension_loaded("pdo_oci")){class
Db
extends
PdoDb{var$extension="PDO_OCI";var$_current_db;function
attach($K,$U,$B){return$this->dsn("oci:dbname=//$K;charset=AL32UTF8",$U,$B);}function
select_db($zb){$this->_current_db=$zb;return
true;}}}class
Driver
extends
SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
__construct(Db$f){parent::__construct($f);$this->types=array('Čísla'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Dátum a čas'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Reťazce'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binárne'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
begin(){return
true;}function
quoteBinary($ug){return"HEXTORAW(".q(bin2hex($ug)).")";}function
hasCStyleEscapes(){return
true;}}function
idf_escape($r){return'"'.str_replace('"','""',$r).'"';}function
table($r){return
idf_escape($r);}function
get_databases($Hc){return
get_vals("SELECT DISTINCT tablespace_name FROM (
SELECT tablespace_name FROM user_tablespaces
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
)
ORDER BY 1");}function
limit($D,$Z,$w,$ef=0,$J=" "){return($ef?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $D$Z) t WHERE rownum <= ".($w+$ef).") WHERE rnum > $ef":($w?" * FROM (SELECT $D$Z) WHERE rownum <= ".($w+$ef):" $D$Z"));}function
limit1($P,$D,$Z,$J="\n"){return" $D$Z";}function
db_collation($h,array$Wa){return
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
logged_user(){return
get_val("SELECT USER FROM DUAL");}function
get_current_db(){$h=connection()->_current_db?:DB;connection()->_current_db=null;return$h;}function
where_owner($Tf,$xf="owner"){if(!$_GET["ns"])return'';return"$Tf$xf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$xf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($xf?:"rownum < 0").")";}function
tables_list(){$ji=views_table("view_name");$xf=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$xf
UNION SELECT view_name, 'view' FROM $ji
ORDER BY 1");}function
count_tables(array$_b){$F=array();foreach($_b
as$h)$F[$h]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($h));return$F;}function
table_status($z="",$tc=false){$F=array();$wg=q($z);$h=get_current_db();$ji=views_table("view_name");$xf=where_owner(" AND ","t.owner");foreach(get_rows('SELECT t.table_name "Name", \'table\' "Engine", s.bytes "Data_length", i.bytes "Index_length", t.num_rows "Rows"
FROM all_tables t
LEFT JOIN (SELECT segment_name, SUM(bytes) bytes FROM user_segments WHERE segment_type LIKE \'TABLE%\' GROUP BY segment_name) s ON s.segment_name = t.table_name
LEFT JOIN (SELECT i.table_name, SUM(s.bytes) bytes FROM user_indexes i
	JOIN user_segments s ON s.segment_name = i.index_name AND s.segment_type LIKE \'INDEX%\' GROUP BY i.table_name) i ON i.table_name = t.table_name
WHERE t.tablespace_name = '.q($h).$xf.($z!=""?" AND t.table_name = $wg":"")."
UNION SELECT view_name, 'view', 0, 0, 0 FROM $ji".($z!=""?" WHERE view_name = $wg":"")."
ORDER BY 1")as$G)$F[$G["Name"]]=$G;return$F;}function
is_view(array$Q){return$Q["Engine"]=="view";}function
fk_support(array$Q){return
true;}function
fields($P){$F=array();$xf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($P)."$xf ORDER BY column_id")as$G){$S=$G["DATA_TYPE"];$v="$G[DATA_PRECISION],$G[DATA_SCALE]";if($v==",")$v=$G["CHAR_COL_DECL_LENGTH"];$F[$G["COLUMN_NAME"]]=array("field"=>$G["COLUMN_NAME"],"full_type"=>$S.($v?"($v)":""),"type"=>strtolower($S),"length"=>$v,"default"=>$G["DATA_DEFAULT"],"null"=>($G["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$F;}function
indexes($P,$g=null){$F=array();$xf=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
FROM all_ind_columns aic
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
WHERE aic.table_name = ".q($P)."$xf
ORDER BY ac.constraint_type, aic.column_position",$g)as$G){$zd=$G["INDEX_NAME"];$Ya=$G["DATA_DEFAULT"];$Ya=($Ya?trim($Ya,'"'):$G["COLUMN_NAME"]);$F[$zd]["type"]=($G["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($G["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$F[$zd]["columns"][]=$Ya;$F[$zd]["lengths"][]=($G["CHAR_LENGTH"]&&$G["CHAR_LENGTH"]!=$G["COLUMN_LENGTH"]?$G["CHAR_LENGTH"]:null);$F[$zd]["descs"][]=($G["DESCEND"]&&$G["DESCEND"]=="DESC"?'1':null);}return$F;}function
view($z){$ji=views_table("view_name, text");$H=get_rows('SELECT text "select" FROM '.$ji.' WHERE view_name = '.q($z));return
reset($H);}function
collations(){return
array();}function
information_schema($h,$vg=""){return($vg!=""?$vg:get_schema())=="INFORMATION_SCHEMA";}function
error(){return
h(connection()->error);}function
explain(Db$f,$D){$f->query("EXPLAIN PLAN FOR $D");return$f->query("SELECT * FROM plan_table");}function
found_rows(array$Q,array$Z){}function
auto_increment(){return"";}function
alter_table($P,$z,array$l,array$Jc,$Za,$dc,$Va,$ua,$Ff){$b=$Sb=array();$sf=($P?fields($P):array());foreach($l
as$k){$W=$k[1];if($W&&$k[0]!=""&&idf_escape($k[0])!=$W[0])queries("ALTER TABLE ".table($P)." RENAME COLUMN ".idf_escape($k[0])." TO $W[0]");$rf=$sf[$k[0]];if($W&&$rf){$gf=process_field($rf,$rf);if($W[2]==$gf[2])$W[2]="";}if($W)$b[]=($P!=""?($k[0]!=""?"MODIFY (":"ADD ("):"  ").implode($W).($P!=""?")":"");else$Sb[]=idf_escape($k[0]);}if($P=="")return
queries("CREATE TABLE ".table($z)." (\n".implode(",\n",array_merge($b,$Jc))."\n)");return(!$b||queries("ALTER TABLE ".table($P)."\n".implode("\n",$b)))&&(!$Sb||queries("ALTER TABLE ".table($P)." DROP (".implode(", ",$Sb).")"))&&($P==$z||queries("ALTER TABLE ".table($P)." RENAME TO ".table($z)));}function
alter_indexes($P,$b){$Sb=array();$bg=array();foreach($b
as$W){if($W[0]!="INDEX"){$W[2]=preg_replace('~ DESC$~','',$W[2]);$qb=($W[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($W[1]):"\nADD".($W[1]!=""?" CONSTRAINT ".idf_escape($W[1]):"")." $W[0] ".($W[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$W[2]).")");array_unshift($bg,"ALTER TABLE ".table($P).$qb);}elseif($W[2]=="DROP")$Sb[]=idf_escape($W[1]);else$bg[]="CREATE INDEX ".idf_escape($W[1]!=""?$W[1]:uniqid($P."_"))." ON ".table($P)." (".implode(", ",$W[2]).")";}if($Sb)array_unshift($bg,"DROP INDEX ".implode(", ",$Sb));foreach($bg
as$D){if(!queries($D))return
false;}return
true;}function
foreign_keys($P){$F=array();$D="SELECT c_list.CONSTRAINT_NAME as NAME,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.OWNER as DEST_DB,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN,
c_list.DELETE_RULE as ON_DELETE
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = 'R'
AND c_src.TABLE_NAME = ".q($P);foreach(get_rows($D)as$G)$F[$G['NAME']]=array("db"=>$G['DEST_DB'],"table"=>$G['DEST_TABLE'],"source"=>array($G['SRC_COLUMN']),"target"=>array($G['DEST_COLUMN']),"on_delete"=>$G['ON_DELETE'],"on_update"=>null,);return$F;}function
truncate_tables(array$R){return
apply_queries("TRUNCATE TABLE",$R);}function
drop_views(array$ki){return
apply_queries("DROP VIEW",$ki);}function
drop_tables(array$R){return
apply_queries("DROP TABLE",$R);}function
last_id($E){return"0";}function
schemas(){$F=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($F?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
get_schema(){return
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
set_schema($vg,$g=null){return!!connection($g)->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($vg));}function
show_variables(){return
get_rows('SELECT name, display_value FROM v$parameter');}function
show_status(){$F=array();$H=get_rows('SELECT * FROM v$instance');foreach(reset($H)as$u=>$W)$F[]=array($u,$W);return$F;}function
process_list(){return
get_rows('SELECT
	sess.process AS "process",
	sess.username AS "user",
	sess.schemaname AS "schema",
	sess.status AS "status",
	sess.wait_class AS "wait_class",
	sess.seconds_in_wait AS "seconds_in_wait",
	sql.sql_text AS "sql_text",
	sess.machine AS "machine",
	sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \'USER\'
ORDER BY PROCESS
');}function
convert_field(array$k){}function
unconvert_field(array$k,$F){return$F;}function
support($uc){return
preg_match('~^(columns|database|drop_col|fast_status|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$uc);}}class
Adminer{static$instance;var$error='';private$values=array();function
name(){return"<a href='https://www.adminer.org/editor/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=6.0.0")."' width='24' height='24' alt='' id='logo'>".'Editor'."</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($qb=false){return
password_file($qb);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($K){return'';}function
database(){if(connection()){$_b=adminer()->databases(false);if(!$_b)return
get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)");foreach($_b
as$h){if(!information_schema($h))return$h;}return$_b[0];}return
null;}function
operators(){return
array("<=",">=");}function
schemas(){return
schemas();}function
databases($Hc=true){return
get_databases($Hc);}function
pluginsLinks(){}function
queryTimeout(){return
5;}function
afterConnect(){}function
headers(){}function
csp(array$tb){return$tb;}function
verifyVersion(){return
true;}function
head($xb=null){return
true;}function
bodyClass(){echo" editor";}function
css(){$F=array();foreach(array("","-dark")as$Ne){$m="adminer$Ne.css";if(file_exists($m)){$xc=file_get_contents($m);$F["$m?v=".crc32($xc)]=($Ne?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$xc)?'':'light'));}}return$F;}function
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('username','<tr><th>'.'Používateľ'.'<td>',input_hidden("auth[driver]","server").'<input name="auth[username]" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'),adminer()->loginFormField('password','<tr><th>'.'Heslo'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),"</table>\n","<p><input type='submit' value='".'Prihlásiť sa'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Trvalé prihlásenie')."\n";}function
loginFormField($z,$ld,$X){return$ld.$X."\n";}function
login($pe,$B){return
true;}function
tableName(array$gh){return
h(isset($gh["Engine"])?($gh["Comment"]!=""?$gh["Comment"]:$gh["Name"]):"");}function
fieldName(array$k,$of=0){return
h(preg_replace('~\s+\[.*\]$~','',($k["comment"]!=""?$k["comment"]:$k["field"])));}function
selectLinks(array$gh,$L=""){$a=$gh["Name"];if($L!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.url_escape($a).$L).'">'.'Nová položka'."</a>\n";}function
foreignKeys($P){return
foreign_keys($P);}function
backwardKeys($P,$fh){$F=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = ".q(adminer()->database())."
AND REFERENCED_TABLE_SCHEMA = ".q(adminer()->database())."
AND REFERENCED_TABLE_NAME = ".q($P)."
ORDER BY ORDINAL_POSITION",null,"")as$G)$F[$G["TABLE_NAME"]]["keys"][$G["CONSTRAINT_NAME"]][$G["COLUMN_NAME"]]=$G["REFERENCED_COLUMN_NAME"];foreach($F
as$u=>$W){$z=adminer()->tableName(table_status1($u,true));if($z!=""){$wg=preg_quote($fh);$J="(:|\\s*-)?\\s+";$F[$u]["name"]=(preg_match("(^$wg$J(.+)|^(.+?)$J$wg\$)iu",$z,$y)?$y[2].$y[3]:$z);}else
unset($F[$u]);}return$F;}function
backwardKeysPrint(array$za,array$G){foreach($za
as$P=>$ya){foreach($ya["keys"]as$Xa){$x=ME.'select='.url_escape($P);$p=0;foreach($Xa
as$d=>$W)$x
.=where_link($p++,$d,$G[$W]);echo"<a href='".h($x)."'>".h($ya["name"])."</a>";$x=ME.'edit='.url_escape($P);foreach($Xa
as$d=>$W)$x
.="&set[".url_escape(bracket_escape($d))."]=".url_escape($G[$W]);echo"<a href='".h($x)."' title='".'Nová položka'."'>+</a> ";}}}function
selectQuery($D,$Yg,$sc=false){return"<!--\n".str_replace("--","--><!-- ",$D)."\n(".format_time($Yg).")\n-->\n";}function
rowDescription($P){foreach(fields($P)as$k){if(preg_match("~varchar|character varying~",$k["type"]))return
idf_escape($k["field"]);}return"";}function
rowDescriptions(array$H,array$Lc){$F=$H;foreach($H[0]as$u=>$W){if(list($P,$q,$z)=$this->_foreignColumn($Lc,$u)){$vd=array();foreach($H
as$G){if(isset($G[$u]))$vd[$G[$u]]=q($G[$u]);}if(!$vd)continue;$Fb=$this->values[$P];if(!$Fb)$Fb=get_key_vals("SELECT $q, $z FROM ".table($P)." WHERE $q IN (".implode(", ",$vd).")");foreach($H
as$Se=>$G){if(isset($G[$u]))$F[$Se][$u]=(string)$Fb[$G[$u]];}}}return$F;}function
selectLink($W,array$k){}function
selectVal($W,$x,array$k,$tf){$F="$W";$x=h($x);if(is_blob($k)&&!is_utf8($W)){$F=lang_format(array('%d bajt','%d bajty','%d bajtov'),strlen($tf));$Ng=(function_exists('getimagesizefromstring')?@getimagesizefromstring($tf):array());if($Ng)$F="<img src='$x' alt='$F' $Ng[3] loading='lazy'>";}if(like_bool($k)&&$F!="")$F=(preg_match('~^(1|t|true|y|yes|on)$~i',$W)?'áno':'nie');if($x)$F="<a href='$x'".(is_url($x)?target_blank():"").">$F</a>";if(preg_match('~date~',$k["type"]))$F="<div class='datetime'>$F</div>";return$F;}function
editVal($W,array$k){if(preg_match('~date|timestamp~',$k["type"])&&$W!==null)return
preg_replace('~^(\d{2}(\d+))-(0?(\d+))-(0?(\d+))~','$6.$4.$1',$W);return$W;}function
config(){return
array();}function
selectColumnsPrint(array$I,array$e){}private
function
searchColumns(array$l){$F=array();$p=0;foreach($l
as$z=>$k){if(isset($k["privileges"]["where"])&&$this->fieldName($k)!=""&&($k["type"]=="enum"||like_bool($k)||is_array($this->foreignKeyOptions($_GET["select"],$z))))$F[--$p]=$z;}return$F;}function
selectSearchPrint(array$Z,array$e,array$t){$Z=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Vyhľadať'."</legend><div>\n";$l=fields($_GET["select"]);foreach($this->searchColumns($l)as$p=>$z){$k=$l[$z];$W=idx($Z[$p],"val");echo"<div>".h($e[$z]);if($k["type"]=="enum"||like_bool($k))echo": ",(like_bool($k)?"<select name='where[$p][val]' data-default=''>".optionlist(array(""=>"",'nie','áno'),$W,true)."</select>":enum_input("checkbox"," name='where[$p][val][]'",$k,(array)$W,'prázdne'));else{$_=$this->foreignKeyOptions($_GET["select"],$z);if($k["null"])$_[0]='('.'prázdne'.')';echo": <select name='where[$p][val]' data-default=''>".optionlist($_,$W,true)."</select>";}echo"</div>\n";unset($e[$z]);}$p=0;foreach($Z
as$u=>$W){if($u>=0&&($W["col"]==""||$e[$W["col"]])&&"$W[col]$W[val]"!=""){echo"<div><select name='where[$p][col]' data-default=''><option value=''>(".'kdekoľvek'.")".optionlist($e,$W["col"],true)."</select>",html_select("where[$p][op]",array(-1=>"")+adminer()->operators(),$W["op"]," data-default=''"),"<input type='search' name='where[$p][val]' value='".h($W["val"])."' data-default=''".on('keydown','selectSearchKeydown').on('search','selectSearchSearch')."></div>\n";$p++;}}echo"<div><select name='where[$p][col]' data-default=''".on('change','selectAddRow')."><option value=''>(".'kdekoľvek'.")".optionlist($e,null,true)."</select>",html_select("where[$p][op]",array(-1=>"")+adminer()->operators(),null," data-default=''"),"<input type='search' name='where[$p][val]' data-default=''".on('change','selectFirstChange').on('keydown','selectSearchKeydown').on('search','selectSearchSearch')."></div>\n","</div></fieldset>\n";}function
selectOrderPrint(array$of,array$e,array$t){$qf=array();foreach($t
as$u=>$s){$of=array();foreach($s["columns"]as$W)$of[]=$e[$W];if(count(array_filter($of,'strlen'))>1&&$u!="PRIMARY")$qf[$u]=implode(", ",$of);}if($qf)echo'<fieldset><legend>'.'Zotriediť'."</legend><div>","<select name='index_order' data-default=''>".optionlist(array(""=>"")+$qf,(idx($_GET["order"],0)!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";if($_GET["order"])echo"<div hidden>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function
selectLimitPrint($w){echo"<fieldset><legend>".'Limit'."</legend><div>",html_select("limit",array("","50","100"),(string)$w," data-default='50'"),"</div></fieldset>\n";}function
selectLengthPrint($ph){}function
selectActionPrint(array$t){echo"<fieldset><legend>".'Akcia'."</legend><div>","<input type='submit' value='".'Vypísať'."'>","</div></fieldset>\n";}function
selectCommandPrint(){return
true;}function
selectImportPrint(){return
true;}function
selectEmailPrint(array$ac,array$e){}function
selectColumnsProcess(array$e,array$t){return
array(array(),array());}function
selectSearchProcess(array$l,array$t){$F=array();$xg=$this->searchColumns($l);if($_GET["select"]!=""&&!$_POST&&!is_ajax()){$Wd=array();$x="";foreach((array)$_GET["where"]as$u=>$Z){$Pf=($u>=0?array_search($Z["col"],$xg,true):false);$k=idx($l,$Z["col"],array());if($Pf!==false&&$k["type"]!="enum"&&!is_array($Z["val"])&&$Z["val"]!=""&&$Z["op"]==(like_bool($k)?"":"=")){$Wd[]=$u;$x
.="&where[$Pf][val]=".url_escape($Z["val"]);}}if($Wd)redirect(remove_from_uri("where(%5B|\[)(".implode("|",$Wd).")(%5D|\])[^=]*").$x);}foreach((array)$_GET["where"]as$u=>$Z){if($u<0){$Z["col"]=idx($xg,$u,"");$k=idx($l,$Z["col"],array());$Z["op"]=($k&&($k["type"]=="enum"||like_bool($k))?"":"=");$_GET["where"][$u]=$Z;}$Ua=$Z["col"];$jf=$Z["op"];$W=$Z["val"];if(($u>=0&&$Ua!="")||$W!=""){$cb=array();foreach(($Ua!=""?array($Ua=>$l[$Ua]):$l)as$z=>$k){if($Ua!=""||is_numeric($W)||!preg_match(number_type(),$k["type"])){$z=idf_escape($z);if($Ua!=""&&$k["type"]=="enum"){$xd=array();foreach(preg_grep('~^val-~',$W)as$ei)$xd[]=q(substr($ei,4));$cb[]=(in_array("null",$W)?"$z IS NULL OR ":"").($xd?"$z IN (".implode(", ",$xd).")":"0");}else{$qh=preg_match('~char|text|enum|set~',$k["type"]);$X=adminer()->processInput($k,(!$jf&&$qh&&preg_match('~^[^%]+$~',$W)?"%$W%":$W));$cb[]=driver()->convertSearch($z,$Z,$k).($X=="NULL"?" IS".($jf==">="?" NOT":"")." $X":(in_array($jf,adminer()->operators())||$jf=="="?" $jf $X":($qh?" LIKE $X":" IN (".($X[0]=="'"?str_replace(",","', '",$X):$X).")")));if($u<0&&$W=="0")$cb[]="$z IS NULL";}}}$F[]=($cb?"(".implode(" OR ",$cb).")":"1 = 0");}}return$F;}function
selectOrderProcess(array$l,array$t){$_d=$_GET["index_order"];if($_d!="")unset($_GET["order"][1]);if($_GET["order"])return
array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($_d!=""?array($t[$_d]):$t)as$s){if($_d!=""||$s["type"]=="INDEX"){$ed=array_filter($s["descs"]);$Eb=false;foreach($s["columns"]as$W){if(preg_match('~date|timestamp~',$l[$W]["type"])){$Eb=true;break;}}$F=array();foreach($s["columns"]as$u=>$W)$F[]=idf_escape($W).(($ed?$s["descs"][$u]:$Eb)?" DESC":"");return$F;}}return
array();}function
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
selectLengthProcess(){return"100";}function
selectEmailProcess(array$Z,array$Lc){return
false;}function
selectQueryBuild(array$I,array$Z,array$Xc,array$of,$w,$A){return"";}function
messageQuery($D,$rh,$sc=false){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$D)."\n".($rh?"($rh)\n":"")."-->";}function
editRowPrint($P,array$l,$G,$T){}function
editFunctions(array$k){$F=array();if($k["null"]&&preg_match('~blob~',$k["type"]))$F["NULL"]='prázdne';$F[""]=($k["null"]||$k["auto_increment"]||like_bool($k)?"":"*");if(preg_match('~date|time~',$k["type"]))$F["now"]='teraz';if(preg_match('~_(md5|sha1)$~i',$k["field"],$y))$F[]=strtolower($y[1]);return$F;}function
editInput($P,array$k,$c,$X){if($k["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='orig' checked><i>".'originál'."</i></label> ":"").enum_input("radio",$c,$k,$X,'prázdne');$_=$this->foreignKeyOptions($P,$k["field"],$X);if($_!==null){if(!$k["null"]&&is_array($_))unset($_[""]);return(is_array($_)?"<select$c>".optionlist($_,(string)$X,true)."</select>":"<input value='".h($X)."'$c class='hidden'>"."<input value='".h($_)."' class='jsonly'".on('input','whisper',ME."script=complete&source=".url_escape($P)."&field=".url_escape($k["field"])."&value=").">"."<div".on('click','whisperClick')."></div>");}if(like_bool($k))return'<input type="checkbox" value="1"'.(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?' checked':'')."$c>";$nd="";if(preg_match('~time~',$k["type"]))$nd='HH:MM:SS';if(preg_match('~date|timestamp~',$k["type"]))$nd='d.m.[rrrr]'.($nd?" [$nd]":"");if($nd)return"<input value='".h($X)."'$c> ($nd)";if(preg_match('~_(md5|sha1)$~i',$k["field"]))return"<input type='password' value='".h($X)."'$c>";return'';}function
editHint($P,array$k,$X){return(preg_match('~\s+(\[.*\])$~',($k["comment"]!=""?$k["comment"]:$k["field"]),$y)?h(" $y[1]"):'');}function
processInput(array$k,$X,$o=""){if($o=="now")return"$o()";$F=$X;if(preg_match('~date|timestamp~',$k["type"])&&preg_match('(^'.str_replace('\$1','(?P<p1>\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\2>\d{1,2})',preg_quote('$6.$4.$1'))).'(.*))',$X,$y))$F=($y["p1"]!=""?$y["p1"]:($y["p2"]!=""?($y["p2"]<70?20:19).$y["p2"]:gmdate("Y")))."-$y[p3]$y[p4]-$y[p5]$y[p6]".end($y);$F=q($F);if($X==""&&like_bool($k))$F="'0'";elseif($X==""&&($k["null"]||!preg_match('~char|text~',$k["type"])))$F="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$F="$o($F)";return
unconvert_field($k,$F);}function
dumpOutput(){return
array();}function
dumpFormat(){return
array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($h){}function
dumpTable($P,$bh,$Rd=0){echo"\xef\xbb\xbf";}function
dumpData($P,$bh,$D){$E=connection()->query($D,1);if($E){while($G=$E->fetch_assoc()){if($bh=="table"){dump_csv(array_keys($G));$bh="INSERT";}dump_csv($G);}}}function
dumpFilename($td){return
friendly_url($td);}function
dumpHeaders($td,$Qe=false){$oc="csv";header("Content-Type: text/csv; charset=utf-8");return$oc;}function
dumpFooter(){}function
importServerPath(){return'';}function
homepage(){return
true;}function
navigation($Me){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$Ve=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/editor/#download'".target_blank()." id='version'>".(version_compare(VERSION,$Ve)<0?h($Ve):"").version_iframe()."</a>","</span></h1>\n";if($Me=="auth"){$Cc=true;foreach((array)$_SESSION["pwds"]as$hi=>$Ig){foreach($Ig[""]as$U=>$B){if($B!==null){if($Cc){echo"<ul id='logins'".on('mouseover','menuOver').on('mouseout','menuOut').">";$Cc=false;}echo"<li><a href='".h(auth_url($hi,"",$U))."'>".($U!=""?h($U):"<i>".'prázdne'."</i>")."</a>\n";}}}}else{adminer()->databasesPrint($Me);$ca=adminer()->menuActions(array(),$Me);echo($ca?"<p class='links'>\n".implode("\n",$ca)."\n":"");if($Me!="db"&&$Me!="ns"){$Q=table_status('',true);if(!$Q)echo"<p class='message'>".'Žiadne tabuľky.'."\n";else
adminer()->tablesPrint($Q);}}}function
syntaxHighlighting(array$R){}function
databasesPrint($Me){}function
menuActions(array$ca,$Me){return$ca;}function
tablesPrint(array$R){echo"<ul id='tables'".on('mouseover','menuOver').on('mouseout','menuOut').">";foreach($R
as$G){echo'<li>';$z=adminer()->tableName($G);if($z!="")echo"<a href='".h(ME).'select='.url_escape($G["Name"])."'".bold($_GET["select"]==$G["Name"]||$_GET["edit"]==$G["Name"],"select")." title='".'Vypísať dáta'."'>$z</a>\n";}echo"</ul>\n";}function
_foreignColumn(array$Lc,$d){foreach((array)$Lc[$d]as$Kc){if(count($Kc["source"])==1){$z=adminer()->rowDescription($Kc["table"]);if($z!=""){$q=idf_escape($Kc["target"][0]);return
array($Kc["table"],$q,$z);}}}}private
function
foreignKeyOptions($P,$d,$X=null){if(list($lh,$q,$z)=$this->_foreignColumn(column_foreign_keys($P),$d)){$F=&$this->values[$lh];if($F===null){$Q=table_status1($lh);$F=($Q["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $q, $z FROM ".table($lh)." ORDER BY 2"));}if(!$F&&$X!==null)return
get_val("SELECT $z FROM ".table($lh)." WHERE $q = ".q($X));return$F;}}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$drivers=array();var$driverFiles=array();var$error='';private$hooks=array();function
__construct($Mf){$Rb=SqlDriver::$drivers;$md=" href='https://www.adminer.org/plugins/#use'".target_blank();if($Mf===null){$Mf=array();$Ba="adminer-plugins";if(is_dir($Ba)){foreach(glob("$Ba/*.php")as$m){$yc=SqlDriver::$drivers;$this->includeOnce($m);foreach(array_diff_key(SqlDriver::$drivers,$yc)as$q=>$z)$this->driverFiles[$q]=$m;}}if(file_exists("$Ba.php")){$yd=$this->includeOnce("$Ba.php");if(is_array($yd)){foreach($yd
as$u=>$Lf)$Mf[is_object($Lf)?get_class($Lf):$u]=$Lf;}else$this->error
.=sprintf('%s musí <a%s>vracať pole</a>.',"<b>$Ba.php</b>",$md)."<br>";}foreach(get_declared_classes()as$Ra){if(!$Mf[$Ra]&&(preg_match('~^Adminer\w~i',$Ra)||is_subclass_of($Ra,'Adminer\Plugin'))){$ig=new
\ReflectionClass($Ra);$ib=$ig->getConstructor();if($ib&&$ib->getNumberOfRequiredParameters())$this->error
.=sprintf('<a%s>Nakonfigurujte</a> %s v %s.',$md,"<b>$Ra</b>","<b>$Ba.php</b>")."<br>";else$Mf[$Ra]=new$Ra;}}}$Kd=array_filter($Mf,function($Lf){return!is_object($Lf);});if($Kd){$this->error
.=sprintf('Každý plugin musí <a%s>byť objekt</a>.',$md)."<br>";$Mf=array_diff_key($Mf,$Kd);}$this->drivers=array_diff_key(SqlDriver::$drivers,$Rb);$this->plugins=$Mf;$ga=new
Adminer;$Mf[]=$ga;$ig=new
\ReflectionObject($ga);foreach($ig->getMethods()as$Le){foreach($Mf
as$Lf){$z=$Le->getName();if(method_exists($Lf,$z))$this->hooks[$z][]=$Lf;}}}function
includeOnce($m){return
include_once"./$m";}static
function
checksum($m){$xc=str_replace("\r","",file_get_contents($m));$xc=preg_replace('~\n\tprotected \$translations = array\(.*?\n\t\);~s','',$xc);return
dechex(crc32($xc));}function
checksums(){$zc=array_values($this->driverFiles);foreach($this->plugins
as$Lf){$ig=new
\ReflectionObject($Lf);$zc[]=$ig->getFileName();}$F=array();foreach($zc
as$m)$F[basename($m,'.php')]=self::checksum($m);return$F;}static
function
officialChecksums(){return
array('adminer.js'=>'a0599090','backward-keys'=>'afce3b7d','before-unload'=>'48618ca0','config'=>'f49cc617','dark-switcher'=>'3d490dea','database-hide'=>'90c6c0dc','designs'=>'56f1c186','dump-alter'=>'d078b2db','dump-bz2'=>'f0d0e336','dump-date'=>'adc7f1c7','dump-json'=>'767dd321','dump-xml'=>'9f039895','dump-zip'=>'93817d96','edit-foreign'=>'8c874a58','edit-textarea'=>'a24c3cc','editor-setup'=>'a7dc3a37','editor-views'=>'5c12b185','enum-option'=>'a2563959','file-upload'=>'235eaa7a','foreign-system'=>'ebb4c654','frames'=>'b0e1d11a','highlight-codemirror'=>'f1a34275','highlight-monaco'=>'6a92cc58','highlight-prism'=>'4c12cf3','import-csv'=>'1d174088','login-ip'=>'b4766b62','login-otp'=>'62c517c0','login-passkey'=>'f69f2f06','login-password-less'=>'97c37010','login-reverse-proxy'=>'7bb63f11','login-servers'=>'f9ac2f28','login-ssl'=>'6ed147bc','login-table'=>'7b15c3cd','menu-links'=>'f1f86a60','remote-color'=>'33a766c2','row-numbers'=>'eec8698c','select-email'=>'ead22272','select-image'=>'f55c0231','slugify'=>'4d5adde6','sql-gemini'=>'fabc3537','sql-log'=>'b4355039','table-indexes-structure'=>'a90cc0c9','table-structure'=>'a8458e02','tables-filter'=>'f8f51976','timeout'=>'90597366','version-github'=>'497af47b','version-noverify'=>'966937e9','clickhouse'=>'5bb80dfb','elastic'=>'f7017c4','firebird'=>'5499d1a','igdb'=>'170d083','imap'=>'ac143217','mongo'=>'c3b8f5a4','redis'=>'12f1a73b','simpledb'=>'79488f8b',);}function
__call($z,array$Bf){$pa=array();foreach($Bf
as$u=>$W)$pa[]=&$Bf[$u];$F=null;foreach($this->hooks[$z]as$Lf){$X=call_user_func_array(array($Lf,$z),$pa);if($X!==null){if(!self::$append[$z])return$X;$F=$X+(array)$F;}}return$F;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($r,$bf=null){$pa=func_get_args();$pa[0]=idx($this->translations[LANG],$r)?:$r;return
call_user_func_array('Adminer\lang_format',$pa);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
Plugins(null):new
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
Db
extends
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
__construct(){parent::init();}function
attach($K,$U,$B){mysqli_report(MYSQLI_REPORT_OFF);list($pd,$Nf)=host_port($K);$M=adminer()->connectSsl();$ai=($M&&($M['key']||$M['cert']||$M['ca']||isset($M['verify'])));if($ai)$this->ssl_set($M['key'],$M['cert'],$M['ca'],'','');$F=@$this->real_connect(($K!=""?$pd:ini_get("mysqli.default_host")),($K.$U!=""?$U:ini_get("mysqli.default_user")),($K.$U.$B!=""?$B:ini_get("mysqli.default_pw")),null,(is_numeric($Nf)?intval($Nf):ini_get("mysqli.default_port")),(is_numeric($Nf)?null:$Nf),($ai?($M['verify']!==false?MYSQLI_CLIENT_SSL:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($F?'':$this->error);}function
set_charset($La){if(parent::set_charset($La))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $La");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($O){return"'".$this->escape_string($O)."'";}function
inTransaction(){return
false;}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db
extends
SqlDb{private$link;function
attach($K,$U,$B){if(ini_bool("mysql.allow_local_infile"))return
sprintf('Zakážte %s alebo povoľte rozšírenie %s alebo %s.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($K!=""?$K:ini_get("mysql.default_host")),($K.$U!=""?$U:ini_get("mysql.default_user")),($K.$U.$B!=""?$B:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
set_charset($La){return
mysql_set_charset($La,$this->link)||mysql_set_charset('utf8',$this->link);}function
quote($O){return"'".mysql_real_escape_string($O,$this->link)."'";}function
select_db($zb){return
mysql_select_db($zb,$this->link);}function
query($D,$Mh=false){$E=@($Mh?mysql_unbuffered_query($D,$this->link):mysql_query($D,$this->link));$this->error="";if(!$E){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($E===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($E);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($E){$this->result=$E;$this->num_rows=mysql_num_rows($E);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$F=mysql_fetch_field($this->result,$this->offset++);$F->orgtable=$F->table;$F->charsetnr=($F->blob?63:0);return$F;}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($K,$U,$B){$_=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);if(isset($_GET["select"]))$_[\PDO::MYSQL_ATTR_MULTI_STATEMENTS]=false;$M=adminer()->connectSsl();if($M){if($M['key'])$_[\PDO::MYSQL_ATTR_SSL_KEY]=$M['key'];if($M['cert'])$_[\PDO::MYSQL_ATTR_SSL_CERT]=$M['cert'];if($M['ca'])$_[\PDO::MYSQL_ATTR_SSL_CA]=$M['ca'];if(isset($M['verify']))$_[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$M['verify'];}list($pd,$Nf)=host_port($K);return$this->dsn("mysql:charset=utf8".($pd!=""?";host=$pd":'').($Nf?(is_numeric($Nf)?";port=":";unix_socket=").$Nf:""),$U,$B,$_);}function
set_charset($La){return$this->query("SET NAMES $La");}function
select_db($zb){return$this->query("USE ".idf_escape($zb));}function
query($D,$Mh=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Mh);return
parent::query($D,$Mh);}}}class
Driver
extends
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");var$partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");static
function
connect($K,$U,$B){$f=parent::connect($K,$U,$B);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($ug=iconv("windows-1252","utf-8//IGNORE",$f))>strlen($f))$f=$ug;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Čísla'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Dátum a čas'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Reťazce'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Zoznamy'=>array("enum"=>65535,"set"=>64),'Binárne'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometria'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types['Reťazce']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Reťazce']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$f)){$this->types['Sieť']["inet6"]=39;if(min_version('','10.10',$f))$this->types['Sieť']["inet4"]=15;}if(min_version(9,11.7,$f))$this->types['Čísla']["vector"]=16383;if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$k){return(preg_match("~binary~",$k["type"])?"<code class='jush-sql'>UNHEX</code>":($k["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):($k["type"]=="vector"?"<code class='jush-sql'>".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."</code>":(preg_match("~geometry|point|linestring|polygon~",$k["type"])?"<code class='jush-sql'>GeomFromText</code>":""))));}function
insert($P,array$L){return($L?parent::insert($P,$L):queries("INSERT INTO ".table($P)." ()\nVALUES ()"));}function
insertUpdate($P,array$H,array$C){$e=array_keys(reset($H));$Tf="INSERT INTO ".table($P)." (".implode(", ",$e).") VALUES\n";$Y=array();foreach($e
as$u)$Y[$u]="$u = VALUES($u)";$ch="\nON DUPLICATE KEY UPDATE ".implode(", ",$Y);$Y=array();$v=0;foreach($H
as$L){$X="(".implode(", ",$L).")";if($Y&&(strlen($Tf)+$v+strlen($X)+strlen($ch)>1e6)){if(!queries($Tf.implode(",\n",$Y).$ch))return
false;$Y=array();$v=0;}$Y[]=$X;$v+=strlen($X)+2;}return
queries($Tf.implode(",\n",$Y).$ch);}function
slowQuery($D,$sh){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$sh FOR $D";elseif(preg_match('~^(SELECT\b)(.+)~is',$D,$y))return"$y[1] /*+ MAX_EXECUTION_TIME(".($sh*1000).") */ $y[2]";}}function
convertSearch($r,array$W,array$k){return(preg_match('~char|text|enum|set~',$k["type"])&&!preg_match("~^utf8~",$k["collation"])&&preg_match('~[\x80-\xFF]~',$W['val'])?"CONVERT($r USING ".charset($this->conn).")":$r);}function
typeName(\stdClass$k){$Lh=array("decimal","tinyint","smallint","int","float","double",7=>"timestamp","bigint","mediumint","date","time","datetime","year",15=>"varchar","bit",242=>"vector",245=>"json","decimal","enum","set","tinytext","mediumtext","longtext","text","varchar","char","geometry",);$F=idx($Lh,$k->type,"");return
parent::typeName($k)?:($k->charsetnr==63?str_replace(array("text","varchar","char"),array("blob","varbinary","binary"),$F):$F);}function
quoteBinary($ug){return"X".q(bin2hex($ug));}function
warnings(){$E=$this->conn->query("SHOW WARNINGS");if($E&&$E->num_rows){ob_start();print_select_result($E);return
ob_get_clean();}}function
tableHelp($z,$Rd=false){$re=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower(str_replace("_","-",DB)."-".($re?"$z-table/":str_replace("_","-",$z)."-table.html"));if(DB=="sys")return($re?"sys-schema/":strtolower("sys-".str_replace("_","-",preg_replace('~^x\$~','',$z)).".html"));if(DB=="mysql")return($re?"mysql$z-table/":"system-schema.html");}function
partitionsInfo($P){$Rc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($P);$E=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Rc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$G=($E?$E->fetch_row():null);if(!$G)return
array();$F=array();list($F["partition_by"],$F["partition"],$F["partitions"])=$G;$Gf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Rc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$F["partition_names"]=array_keys($Gf);$F["partition_values"]=array_values($Gf);return$F;}function
hasCStyleEscapes(){static$Ia;if($Ia===null){$Wg=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Ia=(strpos($Wg,'NO_BACKSLASH_ESCAPES')===false);}return$Ia;}function
lineComment(){return"#|-- ";}function
engines(){$F=array();foreach(get_rows("SHOW ENGINES")as$G){if(preg_match("~YES|DEFAULT~",$G["Support"]))$F[]=$G["Engine"];}return$F;}function
indexAlgorithms(array$gh){return(preg_match('~^(MEMORY|NDB)$~',$gh["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($r){return"`".str_replace("`","``",$r)."`";}function
table($r){return
idf_escape($r);}function
get_databases($Hc){$F=get_session("dbs");if($F===null){$D="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$Yg=microtime(true);$F=($Hc?slow_query($D):get_vals($D));if(microtime(true)-$Yg>0.1){restart_session();set_session("dbs",$F);stop_session();}}return$F;}function
limit($D,$Z,$w,$ef=0,$J=" "){return" $D$Z".($w?$J."LIMIT $w".($ef?" OFFSET $ef":""):"");}function
limit1($P,$D,$Z,$J="\n"){return
limit($D,$Z,1,0,$J);}function
db_collation($h,array$Wa){$F=null;$qb=get_val("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$qb,$y))$F=$y[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$qb,$y))$F=$Wa[$y[1]][-1];return$F;}function
logged_user(){return
get_val("SELECT USER()");}function
tables_list(){return
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
count_tables(array$_b){$F=array();foreach($_b
as$h)$F[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$F;}function
table_status($z="",$tc=false){$F=array();foreach(get_rows($tc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($z!=""?"AND TABLE_NAME = ".q($z):"ORDER BY Name"):"SHOW TABLE STATUS".($z!=""?" LIKE ".q(addcslashes($z,"%_\\")):""))as$G){if($G["Engine"]=="InnoDB")$G["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$G["Comment"]);if(!isset($G["Engine"]))$G["Comment"]="";if($z!="")$G["Name"]=$z;$F[$G["Name"]]=$G;}return$F;}function
is_view(array$Q){return$Q["Engine"]===null;}function
fk_support(array$Q){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$Q["Engine"]);}function
parse_type($Sc){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$Sc,$y);return
array($y[1],$y[2],ltrim($y[3].$y[4]));}function
fields($P){$re=(connection()->flavor=='maria');$F=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($P)." ORDER BY ORDINAL_POSITION")as$G){$k=$G["COLUMN_NAME"];$S=$G["COLUMN_TYPE"];$Wc=$G["GENERATION_EXPRESSION"];$rc=$G["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$rc,$Vc);list($Kh,$v,$Th)=parse_type($S);$i=$G["COLUMN_DEFAULT"];if($i!=""){$Qd=preg_match('~text|json~',$Kh);if(!$re&&$Qd)$i=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($i));if($re||$Qd){$i=($i=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($y){return
stripslashes(str_replace("''","'",$y[1]));},$i));}if(!$re&&preg_match('~binary~',$Kh)&&preg_match('~^0x(\w*)$~',$i,$y))$i=pack("H*",$y[1]);}$F[$k]=array("field"=>$k,"full_type"=>$S,"type"=>$Kh,"length"=>$v,"unsigned"=>$Th,"default"=>($Vc?($re?$Wc:stripslashes($Wc)):$i),"null"=>($G["IS_NULLABLE"]=="YES"),"auto_increment"=>($rc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$rc,$y)?$y[1]:""),"collation"=>$G["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$G[PRIVILEGES],where,order")),"comment"=>$G["COLUMN_COMMENT"],"primary"=>($G["COLUMN_KEY"]=="PRI"),"generated"=>($Vc[1]=="PERSISTENT"?"STORED":$Vc[1]),);}return$F;}function
indexes($P,$g=null){$F=array();foreach(get_rows("SHOW INDEX FROM ".table($P),$g)as$G){$z=$G["Key_name"];$F[$z]["type"]=($z=="PRIMARY"?"PRIMARY":($G["Index_type"]=="FULLTEXT"?"FULLTEXT":($G["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$G["Index_type"])?$G["Index_type"]:"INDEX"):"UNIQUE")));$F[$z]["columns"][]=$G["Column_name"];$F[$z]["lengths"][]=($G["Index_type"]=="SPATIAL"?null:$G["Sub_part"]);$F[$z]["descs"][]=null;$F[$z]["algorithm"]=$G["Index_type"];}return$F;}function
foreign_keys($P){static$If='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$F=array();$rb=get_val("SHOW CREATE TABLE ".table($P),1);if($rb){preg_match_all("~CONSTRAINT ($If) FOREIGN KEY ?\\(((?:$If,? ?)+)\\) REFERENCES ($If)(?:\\.($If))? \\(((?:$If,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$rb,$ue,PREG_SET_ORDER);foreach($ue
as$y){preg_match_all("~$If~",$y[2],$Tg);preg_match_all("~$If~",$y[5],$lh);$F[idf_unescape($y[1])]=array("db"=>idf_unescape($y[4]!=""?$y[3]:$y[4]),"table"=>idf_unescape($y[4]!=""?$y[4]:$y[3]),"source"=>array_map('Adminer\idf_unescape',$Tg[0]),"target"=>array_map('Adminer\idf_unescape',$lh[0]),"on_delete"=>($y[6]?:"RESTRICT"),"on_update"=>($y[7]?:"RESTRICT"),);}}return$F;}function
view($z){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($z),1)));}function
collations(){$F=array();foreach(get_rows("SHOW COLLATION")as$G){if($G["Default"])$F[$G["Charset"]][-1]=$G["Collation"];else$F[$G["Charset"]][]=$G["Collation"];}ksort($F);foreach($F
as$u=>$W)sort($F[$u]);return$F;}function
information_schema($h,$vg=""){return($h=="information_schema")||(min_version(5.5)&&$h=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($h,$Va){return
queries("CREATE DATABASE ".idf_escape($h).($Va?" COLLATE ".q($Va):""));}function
drop_databases(array$_b){$F=apply_queries("DROP DATABASE",$_b,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$F;}function
rename_database($z,$Va){$F=false;if(create_database($z,$Va)){$R=array();$ki=array();foreach(tables_list()as$P=>$S){if($S=='VIEW')$ki[]=$P;else$R[]=$P;}$F=(!$R&&!$ki)||move_tables($R,$ki,$z);drop_databases($F?array(DB):array());}return$F;}function
auto_increment(){$va=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$va="";break;}if($s["type"]=="PRIMARY")$va=" UNIQUE";}}return" AUTO_INCREMENT$va";}function
alter_table($P,$z,array$l,array$Jc,$Za,$dc,$Va,$ua,$Ff){$b=array();foreach($l
as$k){if($k[1]){$i=$k[1][3];if(preg_match('~ GENERATED~',$i)){$k[1][3]=(connection()->flavor=='maria'?"":$k[1][2]);$k[1][2]=$i;}$b[]=($P!=""?($k[0]!=""?"CHANGE ".idf_escape($k[0]):"ADD"):" ")." ".implode($k[1]).($P!=""?$k[2]:"");}else$b[]="DROP ".idf_escape($k[0]);}$b=array_merge($b,$Jc);$N=($Za!==null?" COMMENT=".q($Za):"").($dc?" ENGINE=".q($dc):"").($Va?" COLLATE ".q($Va):"").($ua!=""?" AUTO_INCREMENT=$ua":"");if($Ff){$Gf=array();if($Ff["partition_by"]=='RANGE'||$Ff["partition_by"]=='LIST'){foreach($Ff["partition_names"]as$u=>$W){$X=$Ff["partition_values"][$u];$Gf[]="\n  PARTITION ".idf_escape($W)." VALUES ".($Ff["partition_by"]=='RANGE'?"LESS THAN":"IN").($X!=""?" ($X)":" MAXVALUE");}}$N
.="\nPARTITION BY $Ff[partition_by]($Ff[partition])";if($Gf)$N
.=" (".implode(",",$Gf)."\n)";elseif($Ff["partitions"])$N
.=" PARTITIONS ".(+$Ff["partitions"]);}elseif($Ff===null)$N
.="\nREMOVE PARTITIONING";if($P=="")return
queries("CREATE TABLE ".table($z)." (\n".implode(",\n",$b)."\n)$N");if($P!=$z)$b[]="RENAME TO ".table($z);if($N)$b[]=ltrim($N);return($b?queries("ALTER TABLE ".table($P)."\n".implode(",\n",$b)):true);}function
alter_indexes($P,$b){$Ja=array();foreach($b
as$W)$Ja[]=($W[2]=="DROP"?"\nDROP INDEX ".idf_escape($W[1]):"\nADD $W[0] ".($W[0]=="PRIMARY"?"KEY ":"").($W[1]!=""?idf_escape($W[1])." ":"")."(".implode(", ",$W[2]).")");return
queries("ALTER TABLE ".table($P).implode(",",$Ja));}function
truncate_tables(array$R){return
apply_queries("TRUNCATE TABLE",$R);}function
drop_views(array$ki){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$ki)));}function
drop_tables(array$R){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$R)));}function
move_tables(array$R,array$ki,$lh){$mg=array();foreach($R
as$P)$mg[]=table($P)." TO ".idf_escape($lh).".".table($P);if(!$mg||queries("RENAME TABLE ".implode(", ",$mg))){$Cb=array();foreach($ki
as$P)$Cb[table($P)]=view($P);connection()->select_db($lh);$h=idf_escape(DB);foreach($Cb
as$z=>$ji){if(!queries("CREATE VIEW $z AS ".str_replace(" $h."," ",$ji["select"]))||!queries("DROP VIEW $h.$z"))return
false;}return
true;}return
false;}function
copy_tables(array$R,array$ki,$lh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($R
as$P){$z=($lh==DB?table("copy_$P"):idf_escape($lh).".".table($P));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $z"))||!queries("CREATE TABLE $z LIKE ".table($P))||!queries("INSERT INTO $z SELECT * FROM ".table($P)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($P,"%_\\")))as$G){$Fh=$G["Trigger"];if(!queries("CREATE TRIGGER ".($lh==DB?idf_escape("copy_$Fh"):idf_escape($lh).".".idf_escape($Fh))." $G[Timing] $G[Event] ON $z FOR EACH ROW\n$G[Statement];"))return
false;}}foreach($ki
as$P){$z=($lh==DB?table("copy_$P"):idf_escape($lh).".".table($P));$ji=view($P);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $z"))||!queries("CREATE VIEW $z AS $ji[select]"))return
false;}return
true;}function
trigger($z,$P){if($z=="")return
array();$H=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($z));return
reset($H);}function
triggers($P){$F=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($P,"%_\\")))as$G)$F[$G["Trigger"]]=array($G["Timing"],$G["Event"]);return$F;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($z,$S){$H=get_rows("SELECT PARAMETER_NAME, DTD_IDENTIFIER, PARAMETER_MODE, CHARACTER_SET_NAME
FROM information_schema.PARAMETERS
WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$S' AND SPECIFIC_NAME = ".q($z)."
ORDER BY ORDINAL_POSITION");$l=array();foreach($H
as$G){$Sc=$G["DTD_IDENTIFIER"];list($Kh,$v,$Th)=parse_type($Sc);$l[]=array("field"=>$G["PARAMETER_NAME"],"type"=>$Kh,"length"=>$v,"unsigned"=>$Th,"null"=>true,"full_type"=>$Sc,"inout"=>($S=="FUNCTION"?"":$G["PARAMETER_MODE"]),"collation"=>$G["CHARACTER_SET_NAME"],);}$F=connection()->query("SELECT
	ROUTINE_COMMENT comment,
	CONCAT(IF(IS_DETERMINISTIC = 'YES', 'DETERMINISTIC\\n', ''), IF(SQL_DATA_ACCESS != 'CONTAINS SQL', CONCAT(SQL_DATA_ACCESS, '\\n'), ''), ROUTINE_DEFINITION) definition,
	'SQL' language
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$S' AND ROUTINE_NAME = ".q($z))->fetch_assoc();if($l&&$l[0]['field']=='')$F['returns']=array_shift($l);$F['fields']=$l;return$F;}function
routines(){return
get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($z,array$G){return
idf_escape($z);}function
last_id($E){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$f,$D){return$f->query("EXPLAIN ".(min_version(5.7)?"":"PARTITIONS ").$D);}function
found_rows(array$Q,array$Z){return($Z||$Q["Engine"]!="InnoDB"?null:$Q["Rows"]);}function
create_sql($P,$ua,$bh){$F=get_val("SHOW CREATE TABLE ".table($P),1);if(!$ua)$F=preg_replace('~(\n\)[^\n]*?) AUTO_INCREMENT=\d+~','\1',$F);return$F;}function
truncate_sql($P){return"TRUNCATE ".table($P);}function
use_sql($zb,$bh=""){$z=idf_escape($zb);$F="";if(preg_match('~CREATE~',$bh)&&($qb=get_val("SHOW CREATE DATABASE $z",1))){set_utf8mb4($qb);if($bh=="DROP+CREATE")$F="DROP DATABASE IF EXISTS $z;\n";$F
.="$qb;\n";}return$F."USE $z";}function
trigger_sql($P){$F="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($P,"%_\\")),null,"-- ")as$G)$F
.="\nCREATE TRIGGER ".idf_escape($G["Trigger"])." $G[Timing] $G[Event] ON ".table($G["Table"])." FOR EACH ROW\n$G[Statement];;\n";return$F;}function
show_variables(){return
get_rows("SHOW VARIABLES");}function
show_status(){return
get_rows("SHOW STATUS");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
convert_field(array$k){if(preg_match("~binary~",$k["type"]))return"HEX(".idf_escape($k["field"]).")";if($k["type"]=="bit")return"BIN(".idf_escape($k["field"])." + 0)";if($k["type"]=="vector")return(connection()->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."(".idf_escape($k["field"]).")";if(preg_match("~geometry|point|linestring|polygon~",$k["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($k["field"]).")";}function
unconvert_field(array$k,$F){if(preg_match("~binary~",$k["type"]))$F="UNHEX($F)";if($k["type"]=="bit")$F="CONVERT(b$F, UNSIGNED)";if($k["type"]=="vector")$F=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($F)";if(preg_match("~geometry|point|linestring|polygon~",$k["type"])){$Tf=(min_version(8)?"ST_":"");$F=$Tf."GeomFromText($F, $Tf"."SRID($k[field]))";}return$F;}function
support($uc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|event|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').(min_version(8,99)?'|fast_status':'').')$~',$uc);}function
kill_process($q){return
queries("KILL ".number($q));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types($qc=false){return
array();}function
type_values($q){return"";}function
type_definition($q){return
array("kind"=>"","definition"=>"");}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($vg,$g=null){return
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').($_GET["ext"]?"ext=".url_escape($_GET["ext"]).'&':'').(isset($_GET[DRIVER])?DRIVER."=".url_escape(SERVER).'&':'').(isset($_GET["username"])?"username=".url_escape($_GET["username"]).'&':'').(DB!=""?'db='.url_escape(DB).'&'.(isset($_GET["ns"])?"ns=".url_escape($_GET["ns"])."&":""):''));function
page_header($uh,$j="",$Fa=array(),$vh=""){page_headers();if(is_ajax()&&$j){page_messages($j);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$wh=$uh.($vh!=""?": $vh":"");$xh=strip_tags($wh.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
<html lang=\'sk\' dir=\'ltr\' class=\'ltr nojs\'>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>',$xh,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=6.0.0"),'">
';$ub=adminer()->css();if(is_int(key($ub)))$ub=array_fill_keys($ub,'light');$gd=in_array('light',$ub)||in_array('',$ub);$dd=in_array('dark',$ub)||in_array('',$ub);$xb=($gd?($dd?null:false):($dd?:null));$Ee=" media='(prefers-color-scheme: dark)'";if($xb!==false)echo"<link rel='stylesheet'".($xb?"":$Ee)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=6.0.0")."'>\n";echo"<meta name='color-scheme' content='".($xb===null?"light dark":($xb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=6.0.0");if(adminer()->head($xb))echo"<link rel='icon' href='data:image/gif;base64,"."R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=6.0.0")."'>\n";foreach($ub
as$Wh=>$Ne){$c=($Ne=='dark'&&!$xb?$Ee:($Ne=='light'&&$dd?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$c href='".h($Wh)."'>\n";}echo"\n<body class='";adminer()->bodyClass();echo"'>\n",script((isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"onload = partial(verifyVersion, '".VERSION."');\n")."
const offlineMessage = '".js_escape('Ste offline.')."';
const thousandsSeparator = '".js_escape(' ')."';
const urlSeparators = '".js_escape(ini_get("arg_separator.input"))."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'".on('mouseover','helpKeep').on('mouseout','helpMouseout')."></div>\n","<div id='content'>\n","<span id='menuopen' class='jsonly'".on('click','menuToggle')."><button title='".'Menu'."' class='icon icon-move' aria-expanded='false'></button></span>\n";if($Fa!==null){$x=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($x?:".").'">'.get_driver(DRIVER).'</a> » ';$x=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$K=adminer()->serverName(SERVER);$K=($K!=""?$K:'Server');if($Fa===false)echo"$K\n";else{echo"<a href='".h($x)."' accesskey='1' title='Alt+Shift+1'>$K</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Fa)))echo'<a href="'.h($x."&db=".url_escape(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Fa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Fa
as$u=>$W){$Eb=(is_array($W)?$W[1]:h($W));if($Eb!="")echo"<a href='".h(ME."$u=").url_escape(is_array($W)?$W[0]:$W)."'>$Eb</a> » ";}}echo"$uh\n";}}echo"<h2>$wh</h2>\n","<div id='ajaxstatus' role='status' class='jsonly'></div>\n";restart_session();page_messages($j);$_b=&get_session("dbs");if(DB!=""&&$_b&&!in_array(DB,$_b,true))$_b=null;stop_session();define('Adminer\PAGE_HEADER',1);ob_flush();flush();}function
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$tb){$jd=array();foreach($tb
as$u=>$W)$jd[]="$u $W";header("Content-Security-Policy: ".implode("; ",$jd));}adminer()->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
design_checksums(){$bi=array();foreach(array_keys(adminer()->css())as$Wh)$bi[preg_replace('~\?.*~','',$Wh)]=true;$F=array();foreach(array("adminer.css","adminer-dark.css")as$m){if($bi[$m]&&file_exists($m)){preg_match('~^/\* Adminer design ([-\w]+) \*/~',file_get_contents($m),$y);$F[$m]=array((string)$y[1],Plugins::checksum($m));}}return$F;}function
official_design_checksums(){return
array('adminer-border/adminer-dark.css'=>'b2527e3','adminer-border/adminer.css'=>'430977ad','adminer-dark/adminer-dark.css'=>'a26bcd7b','brade/adminer.css'=>'be4161f0','bueltge/adminer.css'=>'1a8f00b4','dracula/adminer-dark.css'=>'cfaf61dd','esterka/adminer.css'=>'1f805f36','flat/adminer.css'=>'49a61af9','galkaev/adminer-dark.css'=>'16c46f94','haeckel/adminer.css'=>'147a3565','hever/adminer.css'=>'78b8cd43','konya/adminer.css'=>'3cc606c5','lavender-light/adminer.css'=>'bf03f5d7','lucas-sandery/adminer.css'=>'6596353','mancave/adminer-dark.css'=>'e1ac813d','mvt/adminer.css'=>'ebd3afdc','nette/adminer.css'=>'5ab360e7','ng9/adminer.css'=>'488583cf','nicu/adminer.css'=>'ecb9bd1e','pappu687/adminer.css'=>'b58d128c','paranoiq/adminer.css'=>'64d27e5','pepa-linha/adminer.css'=>'baf25f0','pokorny/adminer.css'=>'ee9eea6d','price/adminer.css'=>'b3c939b2','rmsoft/adminer.css'=>'391d54ad','rmsoft_blue-dark/adminer.css'=>'17714d77','rmsoft_blue/adminer.css'=>'c0f192ea','win98/adminer.css'=>'e82d63c3',);}function
version_iframe(){return(isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"<noscript><iframe sandbox src='https://www.adminer.org/version/?current=".VERSION."&amp;noscript=1'></iframe></noscript>");}function
get_nonce(){static$Xe;if(!$Xe)$Xe=base64_encode(rand_string());return$Xe;}function
page_messages($j){$Vh=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$He=idx($_SESSION["messages"],$Vh);if($He){echo"<div class='message'>".implode("</div>\n<div class='message'>",$He)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Vh]);}if($j)echo"<div class='error'>$j</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
page_footer($Me=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($Me);echo"</div>\n";if($Me!="auth")echo'<form action="" method="post">
<p class="logout">
<span title="Používateľ">',h($_GET["username"])."\n",'</span>
<input type=\'submit\' name=\'logout\' value=\'Odhlásiť\' id=\'logout\'>
',input_token(),'</form>
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
int32($Se){while($Se>=2147483648)$Se-=4294967296;while($Se<=-2147483649)$Se+=4294967296;return(int)$Se;}function
long2str(array$V,$mi){$ug='';foreach($V
as$W)$ug
.=pack('V',$W);if($mi)return
substr($ug,0,end($V));return$ug;}function
str2long($ug,$mi){$V=array_values(unpack('V*',str_pad($ug,4*ceil(strlen($ug)/4),"\0")));if($mi)$V[]=strlen($ug);return$V;}function
xxtea_mx($si,$ri,$dh,$Ud){return
int32((($si>>5&0x7FFFFFF)^$ri<<2)+(($ri>>3&0x1FFFFFFF)^$si<<4))^int32(($dh^$ri)+($Ud^$si));}function
encrypt_string($ah,$u){if($ah=="")return"";$u=array_values(unpack("V*",pack("H*",md5($u))));$V=str2long($ah,true);$Se=count($V)-1;$si=$V[$Se];$ri=$V[0];$ag=floor(6+52/($Se+1));$dh=0;while($ag-->0){$dh=int32($dh+0x9E3779B9);$Wb=$dh>>2&3;for($yf=0;$yf<$Se;$yf++){$ri=$V[$yf+1];$Re=xxtea_mx($si,$ri,$dh,$u[$yf&3^$Wb]);$si=int32($V[$yf]+$Re);$V[$yf]=$si;}$ri=$V[0];$Re=xxtea_mx($si,$ri,$dh,$u[$yf&3^$Wb]);$si=int32($V[$Se]+$Re);$V[$Se]=$si;}return
long2str($V,false);}function
decrypt_string($ah,$u){if($ah=="")return"";if(!$u)return
false;$u=array_values(unpack("V*",pack("H*",md5($u))));$V=str2long($ah,false);$Se=count($V)-1;$si=$V[$Se];$ri=$V[0];$ag=floor(6+52/($Se+1));$dh=int32($ag*0x9E3779B9);while($dh){$Wb=$dh>>2&3;for($yf=$Se;$yf>0;$yf--){$si=$V[$yf-1];$Re=xxtea_mx($si,$ri,$dh,$u[$yf&3^$Wb]);$ri=int32($V[$yf]-$Re);$V[$yf]=$ri;}$si=$V[$Se];$Re=xxtea_mx($si,$ri,$dh,$u[$yf&3^$Wb]);$ri=int32($V[0]-$Re);$V[0]=$ri;$dh=int32($dh-0x9E3779B9);}return
long2str($V,true);}$Kf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$W){list($u)=explode(":",$W);$Kf[$u]=$W;}}function
add_invalid_login(){$Aa=get_temp_dir()."/adminer-invalid";foreach(glob("$Aa*")?:array($Aa)as$m){$Pc=file_open_lock($m);if($Pc)break;}if(!$Pc)$Pc=file_open_lock("$Aa-".rand_string());if(!$Pc)return;$Ld=json_decode(stream_get_contents($Pc),true);$rh=time();if($Ld){foreach($Ld
as$Md=>$W){if($W[0]<$rh)unset($Ld[$Md]);}}$Kd=&$Ld[adminer()->bruteForceKey()];if(!$Kd)$Kd=array($rh+30*60,0);$Kd[1]++;file_write_unlock($Pc,json_encode($Ld));}function
check_invalid_login(array&$Kf){$Ld=array();foreach(glob(get_temp_dir()."/adminer-invalid*")as$m){$Pc=file_open_lock($m);if($Pc){$Ld=json_decode(stream_get_contents($Pc),true);file_unlock($Pc);break;}}$u=adminer()->bruteForceKey();$Kd=idx($Ld,$u,array());$We=($Kd[1]>29?$Kd[0]-time():0);if($We>0){$j=lang_format(array('Príliš veľa pokusov o prihlásenie, skúste to znova za %d minútu.','Príliš veľa pokusov o prihlásenie, skúste to znova za %d minúty.','Príliš veľa pokusov o prihlásenie, skúste to znova za %d minút.'),ceil($We/60));if($_SERVER["HTTP_X_FORWARDED_FOR"]!=""&&$u==$_SERVER["REMOTE_ADDR"])$j
.='<br>'.sprintf('Ak Adminer beží za reverznou proxy, použite <a%2$s>plugin</a> %1$s.','<b>login-reverse-proxy</b>'," href='https://www.adminer.org/plugins/?version=".VERSION."'".target_blank());auth_error($j,$Kf);}}function
password_required(){static$F;if($F===null){$F=(bool)get_session("password_required");if(!$F){$sb=adminer()->credentials();$F=!is_object(Driver::connect($sb[0],$sb[1],""));if($F)set_session("password_required",true);}}return$F;}$ta=$_POST["auth"];if($ta){session_regenerate_id();$hi=$ta["driver"];$K=$ta["server"];$U=$ta["username"];$B=(string)$ta["password"];$h=$ta["db"];set_password($hi,$K,$U,$B);$_SESSION["db"][$hi][$K][$U][$h]=true;if($ta["permanent"]){$u=implode("-",array_map('base64_encode',array($hi,$K,$U,$h)));$Xf=adminer()->permanentLogin(true);$Kf[$u]="$u:".base64_encode($Xf?encrypt_string($B,$Xf):"");cookie("adminer_permanent",implode(" ",$Kf));}if(count($_POST)==1||DRIVER!=$hi||SERVER!=$K||$_GET["username"]!==$U||DB!=$h)redirect(auth_url($hi,$K,$U,$h));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$u)set_session($u,null);unset_permanent($Kf);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Odhlásenie prebehlo v poriadku.'.' '.'Vďaka za používanie Admineru, <a href="https://www.adminer.org/sk/donation/">prispejte</a> na vývoj.');}elseif($Kf&&!$_SESSION["pwds"]){session_regenerate_id();$Xf=adminer()->permanentLogin();foreach($Kf
as$u=>$W){list(,$Qa)=explode(":",$W);list($hi,$K,$U,$h)=array_map('base64_decode',explode("-",$u));set_password($hi,$K,$U,decrypt_string(base64_decode($Qa),$Xf));$_SESSION["db"][$hi][$K][$U][$h]=true;}}function
unset_permanent(array&$Kf){foreach($Kf
as$u=>$W){list($hi,$K,$U,$h)=array_map('base64_decode',explode("-",$u));if($hi==DRIVER&&$K==SERVER&&$U==$_GET["username"]&&$h==DB)unset($Kf[$u]);}cookie("adminer_permanent",implode(" ",$Kf));}function
auth_error($j,array&$Kf){$Jg=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Jg]||$_GET[$Jg])&&!$_SESSION["token"])$j='Session vypršala, prihláste sa prosím znova.';else{restart_session();add_invalid_login();$B=get_password();if($B!==null){if($B===false)$j
.=($j?'<br>':'').sprintf('Platnosť hlavného hesla vypršala. <a href="https://www.adminer.org/sk/extension/"%s>Implementujte</a> metódu %s, aby platilo natrvalo.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Kf);}}if(!$_COOKIE[$Jg]&&$_GET[$Jg]&&ini_bool("session.use_only_cookies"))$j='Session premenné musia byť povolené.';$Bf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Bf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Prihlásiť sa',$j,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'Akcia sa vykoná po úspešnom prihlásení s rovnakými prihlasovacími údajmi.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Kf);page_header('Žiadne rozšírenie',sprintf('Nie je dostupné žiadne z podporovaných rozšírení (%s).',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($pd,$Nf)=host_port(SERVER);if(preg_match('~[^-\w.:/]~',$pd.$Nf))auth_error('Neplatný server.',$Kf);if(preg_match('~^-?\d+~',$Nf,$y)&&($y[0]<1024||$y[0]>65535))auth_error('Pripojenie k privilegovaným portom nie je povolené.',$Kf);check_invalid_login($Kf);$sb=adminer()->credentials();$f=Driver::connect($sb[0],$sb[1],$sb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$pe=null;if(!is_object($f)||($pe=adminer()->login($_GET["username"],get_password()))!==true){$j=(is_string($f)?nl_br(h($f)):(is_string($pe)?$pe:'Neplatné prihlasovacie údaje.')).(preg_match('~^ | $~',get_password())?'<br>'.'V zadanom hesle je medzera, ktorá môže byť príčinou.':'');auth_error($j,$Kf);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Odhlásiť','Neplatný token CSRF. Odošlite formulár znova.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($ta&&$_POST["token"])$_POST["token"]=get_token();$j='';if($_POST){if(!verify_token())$j='Neplatný token CSRF. Odošlite formulár znova.'.' '.'Pokiaľ ste tento požiadavok neodoslali z Adminera, zatvorte túto stránku.';}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$j=sprintf('Príliš veľké POST dáta. Zmenšite dáta alebo zvýšte hodnotu konfiguračnej direktívy %s.',"<b>post_max_size</b>'");if(isset($_GET["sql"]))$j
.=' '.'Veľký SQL súbor môžete nahrať pomocou FTP a importovať ho zo servera.';}function
doc_link(array$Hf,$nh=""){return"";}function
like_bool(array$k){return$k["type"]=="bool"||(preg_match('~bit|tinyint~',$k["type"])&&$k["length"]==1);}connection()->select_db(adminer()->database());if(support("scheme")){$vg=get_schema();if($vg!="")set_schema($vg);}adminer()->afterConnect();add_driver(DRIVER,'Prihlásiť sa');if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$l=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$I=array(idf_escape($_GET["field"]));$E=driver()->select($a,$I,array(where($_GET,$l)),$I);$G=($E?$E->fetch_row():array());echo
driver()->value($G[0],$l[$_GET["field"]]);exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$l=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$l):""):where($_GET,$l));$T=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($l
as$z=>$k){if((!$T&&!isset($k["privileges"]["insert"]))||adminer()->fieldName($k)=="")unset($l[$z]);}if($_POST&&!$j&&!isset($_GET["select"])){$oe=$_POST["referer"];if($_POST["insert"])$oe=($T?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$oe))$oe=ME."select=".url_escape($a);$t=indexes($a);$Ph=unique_array($_GET["where"],$t);$dg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($oe,'Položka bola vymazaná.',driver()->delete($a,$dg,$Ph?0:1));else{$L=array();foreach($l
as$z=>$k){$W=process_input($k);if($W!==false&&$W!==null)$L[idf_escape($z)]=$W;}if($T){if(!$L)redirect($oe);queries_redirect($oe,'Položka bola aktualizovaná.',driver()->update($a,$L,$dg,$Ph?0:1));if(is_ajax()){page_headers();page_messages($j);exit;}}else{$E=driver()->insert($a,$L);$ee=($E?last_id($E):0);queries_redirect($oe,sprintf('Položka%s bola vložená.',($ee?" $ee":"")),$E);}}}$G=null;if($Z){$I=array();foreach($l
as$z=>$k){if(isset($k["privileges"]["select"])){$ra=($_POST["clone"]&&$k["auto_increment"]?"''":convert_field($k));$I[]=($ra?"$ra AS ":"").idf_escape($z);}}$G=array();if(!support("table"))$I=array("*");if($I){$E=driver()->select($a,$I,array($Z),$I,array(),(isset($_GET["select"])?2:1));if(!$E)$j=error();else{$G=$E->fetch_assoc();if(!$G)$G=false;}if(isset($_GET["select"])&&(!$G||$E->fetch_assoc()))$G=null;}}if(!$l&&driver()->primary!=""){if(!$Z){$E=driver()->select($a,array("*"),array(),array("*"));$G=($E?$E->fetch_assoc():false);if(!$G)$G=array(driver()->primary=>"");}if($G){foreach($G
as$u=>$W){if(!$Z)$G[$u]=null;$l[$u]=array("field"=>$u,"null"=>($u!=driver()->primary),"auto_increment"=>($u==driver()->primary));}}}if($_POST["save"]){$Qf=array();foreach((array)$_POST["fields"]as$u=>$W)$Qf[bracket_escape($u,true)]=$W;$G=$Qf+($G?$G:array());}edit_form($a,$l,$G,$T,$j);}elseif(isset($_GET["select"])){$a=$_GET["select"];$Q=table_status1($a);$t=indexes($a);$l=fields($a);$Mc=column_foreign_keys($a);$ff=$Q["Oid"];$ha=get_settings("adminer_import");$sg=array();$e=array();$xg=array();$pf=array();$ph=null;foreach($l
as$u=>$k){$z=adminer()->fieldName($k);$Te=html_entity_decode(strip_tags($z),ENT_QUOTES);if(isset($k["privileges"]["select"])&&$z!=""){$e[$u]=$Te;if(is_shortable($k))$ph=adminer()->selectLengthProcess();}if(isset($k["privileges"]["where"])&&$z!="")$xg[$u]=$Te;if(isset($k["privileges"]["order"])&&$z!="")$pf[$u]=$Te;$sg+=$k["privileges"];}list($I,$Xc)=adminer()->selectColumnsProcess($e,$t);$I=array_unique($I);$Xc=array_unique($Xc);$Od=count($Xc)<count($I);$Z=adminer()->selectSearchProcess($l,$t);$of=adminer()->selectOrderProcess($l,$t);$w=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Qh=>$G){$ra=convert_field($l[key($G)]);$I=array($ra?:idf_escape(key($G)));$Z[]=where_check(bracket_escape($Qh,true),$l);$F=driver()->select($a,$I,$Z,$I);if($F)echo
first($F->fetch_row());}exit;}$C=$Sh=array();foreach($t
as$s){if($s["type"]=="PRIMARY"){$C=array_flip($s["columns"]);$Sh=($I?$C:array());foreach($Sh
as$u=>$W){if(in_array(idf_escape($u),$I))unset($Sh[$u]);}break;}}if($ff&&!$C){$C=$Sh=array($ff=>0);$t[]=array("type"=>"PRIMARY","columns"=>array($ff));}if($_POST&&!$j){$oi=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Pa=array();foreach($_POST["check"]as$Ma)$Pa[]=where_check($Ma,$l);$oi[]="((".implode(") OR (",$Pa)."))";}$qi=$oi;$oi=($oi?"\nWHERE ".implode(" AND ",$oi):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$zg=($I?:array("*"));$mb=convert_fields($e,$l,$I);if($mb)$zg[]=substr($mb,2);$D="";if(is_array($_POST["check"])&&!$C){$Rc=implode(", ",$zg)."\nFROM ".table($a);$Zc=($Xc&&$Od?"\nGROUP BY ".implode(", ",$Xc):"").($of?"\nORDER BY ".implode(", ",$of):"");$Oh=array();foreach($_POST["check"]as$W)$Oh[]="(SELECT".limit($Rc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W,$l).$Zc,1).")";$D=implode(" UNION ALL ",$Oh);}adminer()->dumpData($a,"table",$D,$zg,$qi,($Od?$Xc:array()),$of);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Mc)){if($_POST["save"]||$_POST["delete"]){$E=true;$ia=0;$L=array();if(!$_POST["delete"]){foreach($l
as$z=>$W){$r=bracket_escape($z);if(isset($_POST["fields"][$r])||$_FILES["fields-$r"]){$W=process_input($l[$z]);if($W!==null&&($_POST["clone"]||$W!==false))$L[idf_escape($z)]=($W!==false?$W:idf_escape($z));}}}if($_POST["delete"]||$L){$D=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($L)).")\nSELECT ".implode(", ",$L)."\nFROM ".table($a):"");if($_POST["all"]||($C&&is_array($_POST["check"]))||$Od){$E=($_POST["delete"]?driver()->delete($a,$oi):($_POST["clone"]?queries("INSERT $D$oi".driver()->insertReturning($a)):driver()->update($a,$L,$oi)));$ia=connection()->affected_rows;if(is_object($E))$ia+=$E->num_rows;}else{foreach((array)$_POST["check"]as$W){$ni="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W,$l);$E=($_POST["delete"]?driver()->delete($a,$ni,1):($_POST["clone"]?queries("INSERT".limit1($a,$D,$ni)):driver()->update($a,$L,$ni,1)));if(!$E)break;$ia+=connection()->affected_rows;}}}$Ge=sprintf('%d položiek bolo ovplyvnených.',$ia);if($_POST["clone"]&&$E&&$ia==1){$ee=last_id($E);if($ee)$Ge=sprintf('Položka%s bola vložená.'," $ee");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page|next":""),$Ge,$E);if(!$_POST["delete"]){$Qf=(array)$_POST["fields"];edit_form($a,array_intersect_key($l,$Qf),$Qf,!$_POST["clone"],$j);page_footer();exit;}}elseif(!$_POST["import"]){$E=true;$ia=0;foreach((array)$_POST["val"]as$Qh=>$G){$L=array();foreach($G
as$u=>$W){$u=bracket_escape($u,true);$L[idf_escape($u)]=(preg_match('~char|text~',$l[$u]["type"])||$W!=""?adminer()->processInput($l[$u],$W):"NULL");}$E=driver()->update($a,$L," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check(bracket_escape($Qh,true),$l),($Od||$C?0:1)," ");if(!$E)break;$ia+=connection()->affected_rows;}queries_redirect(remove_from_uri(),sprintf('%d položiek bolo ovplyvnených.',$ia),$E);}elseif(!is_string($xc=get_file("csv_file",true)))$j=upload_error($xc);elseif(!preg_match('~~u',$xc))$j='Súbor musí byť v kódovaní UTF-8.';else{save_settings(array("output"=>$ha["output"],"format"=>$_POST["separator"]),"adminer_import");$Xa=array_keys($l);$J=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$vb=parse_csv($xc,$J);$ia=count($vb);driver()->begin();$H=array();foreach($vb
as$u=>$Y){if(!$u&&!array_diff($Y,$Xa)){$Xa=$Y;$ia--;}else{$L=array();foreach($Y
as$p=>$Ua)$L[idf_escape($Xa[$p])]=($Ua==""&&$l[$Xa[$p]]["null"]?"NULL":q(csv_value($Ua)));$H[]=$L;}}$E=(!$H||driver()->insertUpdate($a,$H,$C));if($E)driver()->commit();queries_redirect(remove_from_uri("page|next"),lang_format(array('Bol importovaný %d záznam.','Boli importované %d záznamy.','Bolo importovaných %d záznamov.'),$ia),$E);driver()->rollback();}}}$jh=adminer()->tableName($Q);if(is_ajax()){page_headers();ob_start();}else
page_header('Vypísať'.": $jh",$j);$L=null;if(isset($sg["insert"])||!support("table")){$L="";foreach((array)$_GET["where"]as$W){$X=$W["val"];if(is_array($X))$X=(count($X)==1&&preg_match('~^val-(.*)~s',reset($X),$y)?$y[1]:"");if($W["col"]!=""&&$X!=""&&($W["op"]=="="||(!$W["op"]&&(is_array($W["val"])||!preg_match('~[_%]~',$X)))))$L
.="&set[".url_escape(bracket_escape($W["col"]))."]=".url_escape($X);}}adminer()->selectLinks($Q,$L);if(!$e&&support("table"))echo"<p class='error'>".'Tabuľku sa nepodarilo vypísať'.($l?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div hidden>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($I,$e);adminer()->selectSearchPrint($Z,$xg,$t);adminer()->selectOrderPrint($of,$pf,$t);adminer()->selectLimitPrint($w);if($ph!==null)adminer()->selectLengthPrint($ph);adminer()->selectActionPrint($t);echo"</form>\n";foreach((array)$_GET["where"]as$W){if($W["op"]=="SQL"&&!in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"))){echo"<p class='error'>".'Neplatný token CSRF. Odošlite formulár znova.'.' '.'Pokiaľ ste tento požiadavok neodoslali z Adminera, zatvorte túto stránku.'."\n";page_footer();exit;}}$A=$_GET["page"];$Oc=null;if($A=="last"){$Oc=get_val(count_rows($a,$Z,$Od,$Xc));$A=floor(max(0,intval($Oc)-1)/$w);}$yg=$I;$Yc=$Xc;if(!$yg){$yg[]="*";$mb=convert_fields($e,$l,$I);if($mb)$yg[]=substr($mb,2);}foreach($I
as$u=>$W){$k=$l[idf_unescape($W)];if($k&&($ra=convert_field($k)))$yg[$u]="$ra AS $W";}if(JUSH=="pgsql"||JUSH=="mssql"){foreach((array)$_GET["columns"]as$u=>$W){if(isset($yg[$u])&&$W["fun"])$yg[$u].=" AS ".idf_escape(apply_sql_function($W["fun"],($W["col"]!=""?$W["col"]:"*")));}}if(!$Od&&$Sh){foreach($Sh
as$u=>$W){$yg[]=idf_escape($u);if($Yc)$Yc[]=idf_escape($u);}}$E=driver()->select($a,$yg,$Z,$Yc,$of,$w,$A,true);if(!is_object($E))echo"<p class='error'>".(error()?:'Neznáma chyba.')."\n";else{if(JUSH=="mssql"&&$A)$E->seek($w*$A);$bc=array();$H=array();while($G=$E->fetch_assoc()){if($A&&JUSH=="oracle")unset($G["RNUM"]);$H[]=$G;}$hd=($w&&(support("cursor")?$_GET["next"]!="":count($H)>=$w));if(is_ajax()&&$hd)header("X-Next-Page: ".pagination_href($A+1));if($_GET["modify"]&&$H){$_e=max_input_vars(count($H[0])+1,20);echo($_e&&count($H)>$_e?"<p class='error'>".max_input_vars_error()."\n":"");}echo"<form action='' method='post' enctype='multipart/form-data'>\n";if($_GET["page"]!="last"&&$w&&$Xc&&$Od&&JUSH=="sql")$Oc=get_val(" SELECT FOUND_ROWS()");if(!$H)echo"<p class='message'>".'Žiadne riadky.'."\n";else{$_a=adminer()->backwardKeys($a,$jh);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'".on('click','tableClick').on('dblclick','tableClick').on('keydown','editingKeydown').">\n","<thead><tr>".(!$Xc&&$I?"":"<td class='hover check'><input type='checkbox' id='all-page' class='jsonly' title='".'Všetky riadky na tejto stránke'."'".on('click','formCheck','^check').">");$Ue=array();$Uc=array();reset($I);$gg=1;foreach($H[0]as$u=>$W){if(!isset($Sh[$u])){$W=idx($_GET["columns"],key($I))?:array();$k=$l[$I?($W?$W["col"]:current($I)):$u];$z=($k?adminer()->fieldName($k,$gg):($W["fun"]?"*":h($u)));if($z!=""){$gg++;$Ue[$u]=$z;$d=idf_escape($u);$qd=remove_from_uri('(order|desc)[^=]*|page|next').'&order[0]='.url_escape($u);$Eb="&desc[0]=1";$Qg=preg_replace('~ DESC( NULLS LAST)?$~','',$of[0]);$Sg=($Qg==$d||$Qg==$u);echo"<th id='th[".h(bracket_escape($u))."]'".($Sg?" aria-sort='".($Qg==$of[0]?"ascending":"descending")."'":"").">";$Tc=apply_sql_function($W["fun"],$z);$Rg=isset($k["privileges"]["order"])||$Tc!=$z;echo($Rg?"<a href='".h($qd.($Sg&&$Qg==$of[0]?$Eb:''))."'>$Tc</a>":$Tc);$Fe=($Rg?"<a href='".h($qd.$Eb)."' title='".'zostupne'."' class='text'> ↓</a>":'');if(!$W["fun"]&&isset($k["privileges"]["where"]))$Fe
.="<a href='#fieldset-search' title='".'Vyhľadať'."' class='text jsonly'".on('click','selectSearch',$u)."> =</a>";echo($Fe?"<span class='column'>$Fe</span>":"");}$Uc[$u]=$W["fun"];next($I);}}$ie=array();if($_GET["modify"]){foreach($H
as$G){foreach($G
as$u=>$W)$ie[$u]=max($ie[$u],min(40,strlen(utf8_decode($W))));}}echo($_a?"<th>".'Vzťahy':"")."<tbody>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($H,$Mc)as$Se=>$G){$Ph=unique_array($H[$Se],$t);if(!$Ph){$Ph=array();reset($I);foreach($H[$Se]as$u=>$W){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($I)))$Ph[$u]=$W;next($I);}}$Qh="";foreach($Ph
as$u=>$W){$k=(array)$l[$u];$Nd=is_blob($k);if((JUSH=="sql"||JUSH=="pgsql")&&($Nd||preg_match('~char|text|enum|set~',$k["type"]))&&strlen($W)>64){$u=(strpos($u,'(')?$u:idf_escape($u));$u="MD5(".($Nd||JUSH!='sql'||preg_match("~^utf8~",$k["collation"])?$u:"CONVERT($u USING ".charset(connection()).")").")";$W=md5($Nd?(string)driver()->value($W,$k):$W);}$Qh
.="&".($W!==null?"where[".url_escape(bracket_escape($u))."]=".url_escape($W===false?"f":$W):"null[]=".url_escape($u));}echo"<tr>".(!$Xc&&$I?"":"<td class='hover check'>".($Od||information_schema(DB)?"":"<a href='".h(ME."edit=".url_escape($a).$Qh)."' class='edit'>".'upraviť'."</a> ").checkbox("check[]",substr($Qh,1),in_array(substr($Qh,1),(array)$_POST["check"])));reset($I);foreach($G
as$u=>$W){if(isset($Ue[$u])){$d=current($I);$k=(array)$l[$u];if($W!=""&&(!isset($bc[$u])||$bc[$u]!=""))$bc[$u]=(is_mail($W)?$Ue[$u]:"");$x="";if(is_blob($k)&&$W!="")$x=ME.'download='.url_escape($a).'&field='.url_escape($u).$Qh;if(!$x&&$W!==null){foreach((array)$Mc[$u]as$n){if(count($Mc[$u])==1||end($n["source"])==$u){$x="";foreach($n["source"]as$p=>$Tg)$x
.=where_link($p,$n["target"][$p],$H[$Se][$Tg]);$x=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.url_escape($n["db"]),ME):ME).'select='.url_escape($n["table"]).$x;if($n["ns"])$x=preg_replace('~([?&]ns=)[^&]+~','\1'.url_escape($n["ns"]),$x);if(count($n["source"])==1)break;}}}if($d=="COUNT(*)"){$x=ME."select=".url_escape($a);$p=0;foreach((array)$_GET["where"]as$V){if(!array_key_exists($V["col"],$Ph))$x
.=where_link($p++,$V["col"],$V["val"],$V["op"]);}foreach($Ph
as$Ud=>$V)$x
.=where_link($p++,$Ud,$V);}$rd=select_value($W,$x,$k,$ph);$r=bracket_escape($Qh);$q=h("val[$r][".bracket_escape($u)."]");$Sf=idx(idx($_POST["val"],$r),bracket_escape($u));$T=idx($k["privileges"],"update");$Yb=!is_array($G[$u])&&!is_blob($k)&&is_utf8($W)&&$H[$Se][$u]==$W&&!$Uc[$u]&&!$k["generated"]&&$T;$S=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$y)?$l[idf_unescape($y[2])]["type"]:$k["type"]);$nh=preg_match('~text|json|lob~',$S);$Pd=preg_match(number_type(),$S)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$q'".($Pd&&($W===null||is_numeric(strip_tags($rd))||$S=="money")?" class='number'":"");if(($_GET["modify"]&&$Yb&&$W!==null)||$Sf!==null){$bd=h($Sf!==null?$Sf:$W);echo">".($nh?"<textarea name='$q' cols='30' rows='".(substr_count($W,"\n")+1)."'>$bd</textarea>":"<input name='$q' value='$bd' size='$ie[$u]'>");}else{$qe=strpos($rd,"<i>…</i>");echo($T?" data-text='".($qe?2:($nh?1:0))."'".($Yb?"":" data-warning='".'Pre zmenu tejto hodnoty použite odkaz upraviť.'."'"):"").">$rd";}}next($I);}if($_a)echo"<td>";adminer()->backwardKeysPrint($_a,$H[$Se]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($H||$A||$hd){$mc=true;if($_GET["page"]!="last"){if(!$w||(count($H)<$w&&($H||!$A)))$Oc=($A?$A*$w:0)+count($H);elseif(JUSH!="sql"||!$Od){$Oc=($Od?false:found_rows($Q,$Z));if(intval($Oc)<max(1e4,2*($A+1)*$w))$Oc=first(slow_query(count_rows($a,$Z,$Od,$Xc)));elseif(JUSH=='sql'||JUSH=='pgsql')$mc=false;}}if(!support("cursor"))$hd=(($Oc===false?count($H)+1:$Oc-$A*$w)>$w);$_f=($w&&($hd||$A));if($_f)echo($hd?'<p><a href="'.h(pagination_href($A+1)).'" class="loadmore"'.on('click','selectLoadMore','Načítava sa…').'>'.'Načítať ďalšie dáta'.'</a>':''),"\n";echo"<div class='footer'><div>\n";if($_f){$ze=($Oc===false?$A+($H?(count($H)>=$w?2:1):0):floor(($Oc-1)/$w));echo"<fieldset><legend>".'Stránka'."</legend>";if(!support("cursor")){echo
pagination(0,$A).($A>5?" …":"");for($p=max(1,$A-4);$p<min($ze,$A+5);$p++)echo
pagination($p,$A);if($ze>0)echo($A+5<$ze?" …":""),($mc&&$Oc!==false?pagination($ze,$A):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ze'>".'posledný'."</a>");}else
echo
pagination(0,$A).($A>1?" …":""),($A?pagination($A,$A):""),($hd?pagination($A+1,$A)." …":"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Celý výsledok'."</legend>";$Ib=($mc?"":"~ ").$Oc;$ae=($Oc!==false?($mc?"":"~ ").lang_format(array('%d riadok','%d riadky','%d riadkov'),$Oc):"");echo
checkbox("all",1,0,$ae,on('click','countRows',$Ib))."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':" title='".'Ctrl+kliknite na políčko, ktoré chcete zmeniť.'."'"),'>
<legend><a href=\'',h($_GET["modify"]?remove_from_uri("modify"):relative_uri()."&modify=1"),'\'>Zmeniť</a></legend><div>
<input type=\'submit\' id=\'save\' value=\'Uložiť\'',($_GET["modify"]?'':" class='jsonly' disabled"),'>
</div></fieldset>

<fieldset><legend>Označené <span id="selected"></span></legend><div>
<input type=\'submit\' name=\'edit\' value=\'Upraviť\'>
<input type=\'submit\' name=\'clone\' value=\'Klonovať\'>
<input type=\'submit\' name=\'delete\' value=\'Zmazať\'',confirm(),'>
</div></fieldset>
';$Nc=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Nc['sql']);break;}}if($Nc){print_fieldset("export",'Export'." <span id='selected2'></span>");$wf=adminer()->dumpOutput();echo($wf?html_select("output",$wf,$ha["output"])." ":""),html_select("format",$Nc,$ha["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($bc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import' class='toggle'>".'Import'."</a>","<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input(" name='csv_file'"," ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ha["format"])." <input type='submit' name='import' value='".'Import'."'>"),"</span>";echo
input_token(),"</form>\n",(!$Xc&&$I?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));elseif(list($P,$q,$z)=adminer()->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$w=11;$E=connection()->query("SELECT $q, $z FROM ".table($P)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$q = $_GET[value] OR ":"")."$z LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $w");for($p=1;($G=$E->fetch_row())&&$p<$w;$p++)echo"<a href='".h(ME."edit=".url_escape($P)."&where[".url_escape(bracket_escape(idf_unescape($q)))."]=".url_escape($G[0]))."'>".h($G[1])."</a><br>\n";if($G)echo"...\n";}exit;}else{page_header('Server',"",false);if(adminer()->homepage()){echo"<form action='' method='post'>\n","<p>".'Vyhľadať dáta v tabuľkách'.": <input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Vyhľadať'."'>\n";if($_POST["query"]!="")search_tables();echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'".on('click','tableClick').on('dblclick','tableClick').">\n",'<thead><tr class="wrap">','<td class="hover"><input id="check-all" type="checkbox" class="jsonly"'.on('click','formCheck','^tables\[').'>','<th>'.'Tabuľka','<td>'.'Riadky',"<tbody>\n";foreach(table_status()as$P=>$G){$z=adminer()->tableName($G);if($z!="")echo'<tr><td class="hover">'.checkbox("tables[]",$P,in_array($P,(array)$_POST["tables"],true)),"<th><a href='".h(ME).'select='.url_escape($P)."'>$z</a>","<td align='right'><a href='".h(ME."edit=").url_escape($P)."'>".format_status($G,"Rows")."</a>";}echo"</table>\n","</div>\n","</form>\n",script("tableCheck();");adminer()->pluginsLinks();}}page_footer();