credentials();$L=Driver::connect($wb[0],$wb[1],$wb[2]);return(is_object($L)?$L:null);}function idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$me=substr($v,-1);return str_replace($me.$me,$me,substr($v,1,-1));}function q($wh){return connection()->quote($wh);}function escape_string($X){return substr(q($X),1,-1);}function idx($ta,$y,$k=null){return($ta&&array_key_exists($y,$ta)?$ta[$y]:$k);}function number($X){return preg_replace('~[^0-9]+~','',$X);}function number_type(){return'((?$W){unset($qg[$y][$ee]);if(is_array($W)){$qg[$y][stripslashes($ee)]=$W;$qg[]=&$qg[$y][stripslashes($ee)];}else$qg[$y][stripslashes($ee)]=($Nc?$W:stripslashes($W));}}}}function bracket_escape($v,$Aa=false){static$fi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($v,($Aa?array_flip($fi):$fi));}function min_version($Gi,$_e="",$g=null){$g=connection($g);$bh=$g->server_info;if($_e&&preg_match('~([\d.]+)-MariaDB~',$bh,$B)){$bh=$B[1];$Gi=$_e;}return$Gi&&version_compare($bh,$Gi)>=0;}function charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function ini_bool($Nd){$X=ini_get($Nd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function sid(){static$L;if($L===null)$L=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$L;}function set_password($Fi,$P,$V,$H){$_SESSION["pwds"][$Fi][$P][$V]=($_COOKIE["adminer_key"]&&is_string($H)?array(encrypt_string($H,$_COOKIE["adminer_key"])):$H);}function get_password(){$L=get_session("pwds");if(is_array($L))$L=($_COOKIE["adminer_key"]?decrypt_string($L[0],$_COOKIE["adminer_key"]):false);return$L;}function get_val($J,$m=0,$mb=null){$mb=connection($mb);$K=$mb->query($J);if(!is_object($K))return false;$M=$K->fetch_row();return($M?$M[$m]:false);}function get_vals($J,$c=0){$L=array();$K=connection()->query($J);if(is_object($K)){while($M=$K->fetch_row())$L[]=$M[$c];}return$L;}function get_key_vals($J,$g=null,$eh=true){$g=connection($g);$L=array();$K=$g->query($J);if(is_object($K)){while($M=$K->fetch_row()){if($eh)$L[$M[0]]=$M[1];else$L[]=$M[0];}}return$L;}function get_rows($J,$g=null,$l="

"){$mb=connection($g);$L=array();$K=$mb->query($J);if(is_object($K)){while($M=$K->fetch_assoc())$L[]=$M;}elseif(!$K&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$L;}function unique_array($M,array$x){foreach($x as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$L=array();foreach($w["columns"]as$y){if(!isset($M[$y]))continue 2;$L[$y]=$M[$y];}return$L;}}}function escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return idf_escape($y);}function where(array$Z,array$n=array()){$L=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,true);$c=escape_key($y);$m=idx($n,$y,array());$Lc=$m["type"];$L[]=$c.(JUSH=="sql"&&$Lc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Lc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Lc)&&preg_match("~[^ -@]~",$X))$L[]="$c = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$y)$L[]=escape_key($y)." IS NULL";return implode(" AND ",$L);}function where_check($X,array$n=array()){parse_str($X,$Sa);remove_slashes(array(&$Sa));return where($Sa,$n);}function where_link($t,$c,$Y,$sf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$sf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function convert_fields(array$d,array$n,array$O=array()){$L="";foreach($d as$y=>$X){if($O&&!in_array(idf_escape($y),$O))continue;$ua=convert_field($n[$y]);if($ua)$L .=", $ua AS ".idf_escape($y);}return$L;}function cookie($D,$Y,$ue=2592000){header("Set-Cookie: $D=".urlencode($Y).($ue?"; expires=".gmdate("D, d M Y H:i:s",time()+$ue)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function get_settings($sb){parse_str($_COOKIE[$sb],$fh);return$fh;}function get_setting($y,$sb="adminer_settings"){$fh=get_settings($sb);return$fh[$y];}function save_settings(array$fh,$sb="adminer_settings"){$Y=http_build_query($fh+get_settings($sb));cookie($sb,$Y);$_COOKIE[$sb]=$Y;}function restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function stop_session($Sc=false){$_i=ini_bool("session.use_cookies");if(!$_i||$Sc){session_write_close();if($_i&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function auth_url($Fi,$P,$V,$j=null){$wi=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Fi=='mssql'||$Fi=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$wi,$B);return"$B[1]?".(sid()?SID."&":"").($Fi!="server"||$P!=""?urlencode($Fi)."=".urlencode($P)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($B[2]?"&$B[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($A,$C=null){if($C!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$C;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function query_redirect($J,$A,$C,$yg=true,$zc=true,$Hc=false,$Sh=""){if($zc){$sh=microtime(true);$Hc=!connection()->query($J);$Sh=format_time($sh);}$nh=($J?adminer()->messageQuery($J,$Sh,$Hc):"");if($Hc){adminer()->error .=error().$nh.script("messagesPrint();")."
";return false;}if($yg)redirect($A,$C.$nh);return true;}class Queries{static$queries=array();static$start=0;}function queries($J){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(preg_match('~;$~',$J)?"DELIMITER ;;\n$J;\nDELIMITER ":$J).";";return connection()->query($J);}function apply_queries($J,array$T,$vc='Adminer\table'){foreach($T as$R){if(!queries("$J ".$vc($R)))return false;}return true;}function queries_redirect($A,$C,$yg){$tg=implode("\n",Queries::$queries);$Sh=format_time(Queries::$start);return query_redirect($tg,$A,$C,$yg,false,!$yg,$Sh);}function format_time($sh){return lang(0,max(0,microtime(true)-$sh));}function relative_uri(){return str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function remove_from_uri($Lf=""){return substr(preg_replace("~(?<=[?&])($Lf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function get_file($y,$Hb=false,$Nb=""){$Mc=$_FILES[$y];if(!$Mc)return null;foreach($Mc as$y=>$X)$Mc[$y]=(array)$X;$L='';foreach($Mc["error"]as$y=>$l){if($l)return$l;$D=$Mc["name"][$y];$ai=$Mc["tmp_name"][$y];$ob=file_get_contents($Hb&&preg_match('~\.gz$~',$D)?"compress.zlib://$ai":$ai);if($Hb){$sh=substr($ob,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$sh))$ob=iconv("utf-16","utf-8",$ob);elseif($sh=="\xEF\xBB\xBF")$ob=substr($ob,3);}$L .=$ob;if($Nb)$L .=(preg_match("($Nb\\s*\$)",$ob)?"":$Nb)."\n\n";}return$L;}function upload_error($l){$Ge=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?lang(1).($Ge?" ".lang(2,$Ge):""):lang(3));}function repeat_pattern($Xf,$se){return str_repeat("$Xf{0,65535}",$se/65535)."$Xf{0,".($se%65535)."}";}function is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function format_number($X){return strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function friendly_url($X){return preg_replace('~\W~i','-',$X);}function table_status1($R,$Ic=false){$L=table_status($R,$Ic);return($L?reset($L):array("Name"=>$R));}function column_foreign_keys($R){$L=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$L[$X][]=$p;}return$L;}function fields_from_edit(){$L=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$D=bracket_escape($y,true);$L[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($y==driver()->primary),);}return$L;}function dump_headers($zd,$Ue=false){$L=adminer()->dumpHeaders($zd,$Ue);$If=$_POST["output"];if($If!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($zd).".$L".($If!="file"&&preg_match('~^[0-9a-z]+$~',$If)?".$If":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$L;}function dump_csv(array$M){foreach($M as$y=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$M[$y]='"'.str_replace('"','""',$X).'"';}echo implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$M)."\r\n";}function apply_sql_function($r,$c){return($r?($r=="unixepoch"?"DATETIME($c, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$c)"):$c);}function get_temp_dir(){$L=ini_get("upload_tmp_dir");if(!$L){if(function_exists('sys_get_temp_dir'))$L=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$L=dirname($o);unlink($o);}}return$L;}function file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function file_write_unlock($q,$Bb){rewind($q);fwrite($q,$Bb);ftruncate($q,strlen($Bb));file_unlock($q);}function file_unlock($q){flock($q,LOCK_UN);fclose($q);}function first(array$ta){return reset($ta);}function password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$L=stream_get_contents($q);if(!$L){$L=rand_string();file_write_unlock($q,$L);}else file_unlock($q);return$L;}function rand_string(){return md5(uniqid(strval(mt_rand()),true));}function select_value($X,$_,array$m,$Rh){if(is_array($X)){$L="";foreach($X as$ee=>$W)$L .="".($X!=array_values($X)?"".h($ee):"")."".select_value($W,$_,$m,$Rh);return"$L
";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$L=adminer()->editVal($X,$m);if($L!==null){if(!is_utf8($L))$L="\0";elseif($Rh!=""&&is_shortable($m))$L=shorten_utf8($L,max(0,+$Rh));else$L=h($L);}return adminer()->selectVal($L,$_,$m,$X);}function is_mail($ic){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Wb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Xf="$va+(\\.$va+)*@($Wb?\\.)+$Wb";return is_string($ic)&&preg_match("(^$Xf(,\\s*$Xf)*\$)i",$ic);}function is_url($wh){$Wb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return preg_match("~^(https?)://($Wb?\\.)+$Wb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$wh);}function is_shortable(array$m){return preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$m["type"]);}function count_rows($R,array$Z,$Xd,array$s){$J=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Xd&&(JUSH=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$J":"SELECT COUNT(*)".($Xd?" FROM (SELECT 1$J GROUP BY ".implode(", ",$s).") x":$J));}function slow_query($J){$j=adminer()->database();$Th=adminer()->queryTimeout();$jh=driver()->slowQuery($J,$Th);$g=null;if(!$jh&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$ge=get_val(connection_id(),0,$g);echo script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$ge&token=".get_token()."'); }, 1000 * $Th);");}}ob_flush();flush();$L=@get_key_vals(($jh?:$J),$g,false);if($g){echo script("clearTimeout(timeout);");ob_flush();flush();}return$L;}function get_token(){$wg=rand(1,1e6);return($wg^$_SESSION["token"]).":$wg";}function verify_token(){list($bi,$wg)=explode(":",$_POST["token"]);return($wg^$_SESSION["token"])==$bi;}function lzw_decompress($Ga){$Sb=256;$Ha=8;$ab=array();$Hg=0;$Ig=0;for($t=0;$t=$Ha){$Ig-=$Ha;$ab[]=$Hg>>$Ig;$Hg&=(1<<$Ig)-1;$Sb++;if($Sb>>$Ha)$Ha++;}}$Rb=range("\0","\xFF");$L="";$Pi="";foreach($ab as$t=>$Za){$hc=$Rb[$Za];if(!isset($hc))$hc=$Pi.$Pi[0];$L .=$hc;if($t)$Rb[]=$Pi.$hc[0];$Pi=$hc;}return$L;}function script($lh,$ei="\n"){return"$lh$ei";}function script_src($xi,$Kb=false){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function input_hidden($D,$Y=""){return"\n";}function input_token(){return input_hidden("token",get_token());}function target_blank(){return' target="_blank" rel="noreferrer noopener"';}function h($wh){return str_replace("\0","�",htmlspecialchars($wh,ENT_QUOTES,'utf-8'));}function nl_br($wh){return str_replace("\n","
",$wh);}function checkbox($D,$Y,$Ua,$ie="",$rf="",$Ya="",$ke=""){$L="".($rf?script("qsl('input').onclick = function () { $rf };",""):"");return($ie!=""||$Ya?"$L".h($ie)."":$L);}function optionlist($vf,$Wg=null,$Ai=false){$L="";foreach($vf as$ee=>$W){$wf=array($ee=>$W);if(is_array($W)){$L .='';$wf=$W;}foreach($wf as$y=>$X)$L .=''.h($X);if(is_array($W))$L .='';}return$L;}function html_select($D,array$vf,$Y="",$qf="",$ke=""){static$ie=0;$je="";if(!$ke&&substr($vf[""],0,1)=="("){$ie++;$ke="label-$ie";$je="

","$re",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","
\n";}function selectSearchPrint(array$Z,array$d,array$x){print_fieldset("search",lang(46),$Z);foreach($x as$t=>$w){if($w["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"
\n";}$Pa="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"
".select_input(" name='where[$t][col]'",$d,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(47).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Pa),"",script("mixin(qsl('input'), {oninput: function () { $Pa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function selectOrderPrint(array$xf,array$d,array$x){print_fieldset("sort",lang(48),$xf);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"
".select_input(" name='order[$t]'",$d,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),lang(49))."
\n";$t++;}}echo"
".select_input(" name='order[$t]'",$d,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(49))."
\n","\n";}function selectLimitPrint($z){echo"
".lang(50)."
","",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function selectLengthPrint($Rh){if($Rh!==null)echo"
".lang(51)."
","","
\n";}function selectActionPrint(array$x){echo"
".lang(52)."
",""," ","\n","const indexColumns = ";$d=array();foreach($x as$w){$_b=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$_b)$d[$_b]=1;}$d[""]=1;foreach($d as$y=>$X)json_row($y);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function selectCommandPrint(){return!information_schema(DB);}function selectImportPrint(){return!information_schema(DB);}function selectEmailPrint(array$jc,array$d){}function selectColumnsProcess(array$d,array$x){$O=array();$s=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$O[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$s[]=$O[$y];}}return array($O,$s);}function selectSearchProcess(array$n,array$x){$L=array();foreach($x as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$L[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){$bb=$X["col"];if("$bb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$lb=array();foreach(($bb!=""?array($bb=>$n[$bb]):$n)as$D=>$m){$jg="";$kb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Dd=process_length($X["val"]);$kb .=" ".($Dd!=""?$Dd:"(NULL)");}elseif($X["op"]=="SQL")$kb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$B))$kb=" $B[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$jg="$X[op](".q($X["val"]).", ";$kb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$kb .=" ".adminer()->processInput($m,$X["val"]);if($bb!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$lb[]=$jg.driver()->convertSearch(idf_escape($D),$X,$m).$kb;}$L[]=(count($lb)==1?$lb[0]:($lb?"(".implode(" OR ",$lb).")":"1 = 0"));}}return$L;}function selectOrderProcess(array$n,array$x){$L=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$L[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$L;}function selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function selectEmailProcess(array$Z,array$Uc){return false;}function selectQueryBuild(array$O,array$Z,array$s,array$xf,$z,$F){return"";}function messageQuery($J,$Sh,$Hc=false){restart_session();$sd=&get_session("queries");if(!idx($sd,$_GET["db"]))$sd[$_GET["db"]]=array();if(strlen($J)>1e6)$J=preg_replace('~[\x80-\xFF]+$~','',substr($J,0,1e6))."\n…";$sd[$_GET["db"]][]=array($J,time(),$Sh);$ph="sql-".count($sd[$_GET["db"]]);$L="".lang(54)."\n";if(!$Hc&&($Li=driver()->warnings())){$u="warnings-".count($sd[$_GET["db"]]);$L="".lang(35).", $L\n";}return" ".@date("H:i:s").""." $L';}function editRowPrint($R,array$n,$M,$vi){}function editFunctions(array$m){$L=($m["null"]?"NULL/":"");$vi=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$y=>$bd){if(!$y||(!isset($_GET["call"])&&$vi)){foreach($bd as$Xf=>$X){if(!$Xf||preg_match("~$Xf~",$m["type"]))$L .="/$X";}}if($y&&$bd&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$L .="/SQL";}if($m["auto_increment"]&&!$vi)$L=lang(41);return explode("/",$L);}function editInput($R,array$m,$wa,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").($m["null"]?" ":"").enum_input("radio",$wa,$m,$Y,$Y===0?0:null);return"";}function editHint($R,array$m,$Y){return"";}function processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$D=$m["field"];$L=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$L="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$L=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$L=idf_escape($D)." $r $L";elseif(preg_match('~^[+-] interval$~',$r))$L=idf_escape($D)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$L);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$L="$r(".idf_escape($D).", $L)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$L="$r($L)";return unconvert_field($m,$L);}function dumpOutput(){$L=array('text'=>lang(55),'file'=>lang(56));if(function_exists('gzencode'))$L['gz']='gzip';return$L;}function dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpDatabase($j){}function dumpTable($R,$yh,$be=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($yh)dump_csv(array_keys(fields($R)));}else{if($be==2){$n=array();foreach(fields($R)as$D=>$m)$n[]=idf_escape($D)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$yh);set_utf8mb4($h);if($yh&&$h){if($yh=="DROP+CREATE"||$be==1)echo"DROP ".($be==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($be==1)$h=remove_definer($h);echo"$h;\n\n";}}}function dumpData($R,$yh,$J){if($yh){$De=(JUSH=="sqlite"?0:1048576);$n=array();$_d=false;if($_POST["format"]=="sql"){if($yh=="TRUNCATE+INSERT")echo truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$_d=true;break;}}}}$K=connection()->query($J,1);if($K){$Qd="";$La="";$fe=array();$cd=array();$_h="";$Kc=($R!=''?'fetch_assoc':'fetch_row');$tb=0;while($M=$K->$Kc()){if(!$fe){$Di=array();foreach($M as$X){$m=$K->fetch_field();if(idx($n[$m->name],'generated')){$cd[$m->name]=true;continue;}$fe[]=$m->name;$y=idf_escape($m->name);$Di[]="$y = VALUES($y)";}$_h=($yh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Di):"").";\n";}if($_POST["format"]!="sql"){if($yh=="table"){dump_csv($fe);$yh="INSERT";}dump_csv($M);}else{if(!$Qd)$Qd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$fe)).") VALUES";foreach($M as$y=>$X){if($cd[$y]){unset($M[$y]);continue;}$m=$n[$y];$M[$y]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Pg=($De?"\n":" ")."(".implode(",\t",$M).")";if(!$La)$La=$Qd.$Pg;elseif(JUSH=='mssql'?$tb%1000!=0:strlen($La)+4+strlen($Pg)+strlen($_h)<$De)$La .=",$Pg";else{echo$La.$_h;$La=$Qd.$Pg;}}$tb++;}if($La)echo$La.$_h;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($_d)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function dumpFilename($zd){return friendly_url($zd!=""?$zd:(SERVER!=""?SERVER:"localhost"));}function dumpHeaders($zd,$Ue=false){$If=$_POST["output"];$Cc=(preg_match('~sql~',$_POST["format"])?"sql":($Ue?"tar":"csv"));header("Content-Type: ".($If=="gz"?"application/x-gzip":($Cc=="tar"?"application/x-tar":($Cc=="sql"||$If!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($If=="gz"){ob_start(function($wh){return gzencode($wh);},1e6);}return$Cc;}function dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function importServerPath(){return"adminer.sql";}function homepage(){echo'

".adminer()->name()." ".VERSION;$cf=$_COOKIE["adminer_version"];echo" ".(version_compare(VERSION,$cf)<0?h($cf):"")."","

\n";switch_lang();if($Re=="auth"){$If="";foreach((array)$_SESSION["pwds"]as$Fi=>$ch){foreach($ch as$P=>$Bi){$D=h(get_setting("vendor-$Fi-$P")?:get_driver($Fi));foreach($Bi as$V=>$H){if($H!==null){$Gb=$_SESSION["db"][$Fi][$P][$V];foreach(($Gb?array_keys($Gb):array(""))as$j)$If .="
  • ($D) ".h($V.($P!=""?"@".adminer()->serverName($P):"").($j!=""?" - $j":""))."\n";}}}}if($If)echo"
      \n$If
    \n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Re&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Re);$ha=array();if(DB==""||!$Re){if(support("sql")){$ha[]="".lang(54)."";$ha[]="".lang(62)."";}$ha[]="".lang(63)."";}$Ed=$_GET["ns"]!==""&&!$Re&&DB!="";if($Ed)$ha[]='".lang(64)."";echo($ha?"

    ".lang(9)."

    \n";}}}function syntaxHighlighting(array$T){echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.3.0",true);if(support("sql")){echo"\n";if($T){$we=array();foreach($T as$R=>$U)$we[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$we).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Ih=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n as$m)$Ih[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ih)."); });\n";}}echo"\n";}echo script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function databasesPrint($Re){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"
    \n

    \n";hidden_fields_get();$Eb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"","\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo input_hidden($X);break;}}echo"

    \n";}function tablesPrint(array$T){echo"
      ".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T as$R=>$th){$R="$R";$D=adminer()->tableName($th);if($D!=""&&!$th["inherited"])echo'
    • ".lang(66)." ",(support("table")||support("indexes")?'$D":"$D")."\n";}echo"
    \n";}}class Plugins{private static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function __construct($cg){if($cg===null){$cg=array();$Fa="adminer-plugins";if(is_dir($Fa)){foreach(glob("$Fa/*.php")as$o)$Fd=include_once"./$o";}$rd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Fa.php")){$Fd=include_once"./$Fa.php";if(is_array($Fd)){foreach($Fd as$bg)$cg[get_class($bg)]=$bg;}else$this->error .=lang(67,"$Fa.php",$rd)."
    ";}foreach(get_declared_classes()as$Ya){if(!$cg[$Ya]&&preg_match('~^Adminer\w~i',$Ya)){$Cg=new \ReflectionClass($Ya);$nb=$Cg->getConstructor();if($nb&&$nb->getNumberOfRequiredParameters())$this->error .=lang(68,$rd,"$Ya","$Fa.php")."
    ";else$cg[$Ya]=new$Ya;}}}$this->plugins=$cg;$ia=new Adminer;$cg[]=$ia;$Cg=new \ReflectionObject($ia);foreach($Cg->getMethods()as$Pe){foreach($cg as$bg){$D=$Pe->getName();if(method_exists($bg,$D))$this->hooks[$D][]=$bg;}}}function __call($D,array$Mf){$sa=array();foreach($Mf as$y=>$X)$sa[]=&$Mf[$y];$L=null;foreach($this->hooks[$D]as$bg){$Y=call_user_func_array(array($bg,$D),$sa);if($Y!==null){if(!self::$append[$D])return$Y;$L=$Y+(array)$L;}}return$L;}}abstract class Plugin{protected$translations=array();function description(){return$this->lang('');}function screenshot(){return"";}protected function lang($v,$E=null){$sa=func_get_args();$sa[0]=idx($this->translations[LANG],$v)?:$v;return call_user_func_array('Adminer\lang_format',$sa);}}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($P,$V,$H){mysqli_report(MYSQLI_REPORT_OFF);list($vd,$dg)=explode(":",$P,2);$rh=adminer()->connectSsl();if($rh)$this->ssl_set($rh['key'],$rh['cert'],$rh['ca'],'','');$L=@$this->real_connect(($P!=""?$vd:ini_get("mysqli.default_host")),($P.$V!=""?$V:ini_get("mysqli.default_user")),($P.$V.$H!=""?$H:ini_get("mysqli.default_pw")),null,(is_numeric($dg)?intval($dg):ini_get("mysqli.default_port")),(is_numeric($dg)?null:$dg),($rh?($rh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($L?'':$this->error);}function set_charset($Ra){if(parent::set_charset($Ra))return true;parent::set_charset('utf8');return$this->query("SET NAMES $Ra");}function next_result(){return self::more_results()&&parent::next_result();}function quote($wh){return"'".$this->escape_string($wh)."'";}}}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($P,$V,$H){if(ini_bool("mysql.allow_local_infile"))return lang(69,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($P!=""?$P:ini_get("mysql.default_host")),("$P$V"!=""?$V:ini_get("mysql.default_user")),("$P$V$H"!=""?$H: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($Ra){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ra,$this->link))return true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ra");}function quote($wh){return"'".mysql_real_escape_string($wh,$this->link)."'";}function select_db($Db){return mysql_select_db($Db,$this->link);}function query($J,$oi=false){$K=@($oi?mysql_unbuffered_query($J,$this->link):mysql_query($J,$this->link));$this->error="";if(!$K){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return false;}if($K===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return true;}return new Result($K);}}class Result{var$num_rows;private$result;private$offset=0;function __construct($K){$this->result=$K;$this->num_rows=mysql_num_rows($K);}function fetch_assoc(){return mysql_fetch_assoc($this->result);}function fetch_row(){return mysql_fetch_row($this->result);}function fetch_field(){$L=mysql_fetch_field($this->result,$this->offset++);$L->orgtable=$L->table;$L->charsetnr=($L->blob?63:0);return$L;}function __destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class Db extends PdoDb{var$extension="PDO_MySQL";function attach($P,$V,$H){$vf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$rh=adminer()->connectSsl();if($rh){if($rh['key'])$vf[\PDO::MYSQL_ATTR_SSL_KEY]=$rh['key'];if($rh['cert'])$vf[\PDO::MYSQL_ATTR_SSL_CERT]=$rh['cert'];if($rh['ca'])$vf[\PDO::MYSQL_ATTR_SSL_CA]=$rh['ca'];if(isset($rh['verify']))$vf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$rh['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$P)),$V,$H,$vf);}function set_charset($Ra){return$this->query("SET NAMES $Ra");}function select_db($Db){return$this->query("USE ".idf_escape($Db));}function query($J,$oi=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$oi);return parent::query($J,$oi);}}}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");static function connect($P,$V,$H){$f=parent::connect($P,$V,$H);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($Pg=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Pg;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(lang(70)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(71)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(72)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(73)=>array("enum"=>65535,"set"=>64),lang(74)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(75)=>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[lang(72)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(72)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types[lang(70)]["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"GeomFromText":"")));}function insert($R,array$Q){return($Q?parent::insert($R,$Q):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function insertUpdate($R,array$N,array$lg){$d=array_keys(reset($N));$jg="INSERT INTO ".table($R)." (".implode(", ",$d).") VALUES\n";$Di=array();foreach($d as$y)$Di[$y]="$y = VALUES($y)";$_h="\nON DUPLICATE KEY UPDATE ".implode(", ",$Di);$Di=array();$se=0;foreach($N as$Q){$Y="(".implode(", ",$Q).")";if($Di&&(strlen($jg)+$se+strlen($Y)+strlen($_h)>1e6)){if(!queries($jg.implode(",\n",$Di).$_h))return false;$Di=array();$se=0;}$Di[]=$Y;$se+=strlen($Y)+2;}return queries($jg.implode(",\n",$Di).$_h);}function slowQuery($J,$Th){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Th FOR $J";elseif(preg_match('~^(SELECT\b)(.+)~is',$J,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($Th*1000).") */ $B[2]";}}function convertSearch($v,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function warnings(){$K=$this->conn->query("SHOW WARNINGS");if($K&&$K->num_rows){ob_start();print_select_result($K);return ob_get_clean();}}function tableHelp($D,$be=false){$ze=($this->conn->flavor=='maria');if(information_schema(DB))return strtolower("information-schema-".($ze?"$D-table/":str_replace("_","-",$D)."-table.html"));if(DB=="mysql")return($ze?"mysql$D-table/":"system-schema.html");}function partitionsInfo($R){$Zc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$K=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Zc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$L=array();list($L["partition_by"],$L["partition"],$L["partitions"])=$K->fetch_row();$Tf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Zc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$L["partition_names"]=array_keys($Tf);$L["partition_values"]=array_values($Tf);return$L;}function hasCStyleEscapes(){static$Ma;if($Ma===null){$qh=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Ma=(strpos($qh,'NO_BACKSLASH_ESCAPES')===false);}return$Ma;}function engines(){$L=array();foreach(get_rows("SHOW ENGINES")as$M){if(preg_match("~YES|DEFAULT~",$M["Support"]))$L[]=$M["Engine"];}return$L;}function indexAlgorithms(array$Dh){return(preg_match('~^(MEMORY|NDB)$~',$Dh["Engine"])?array("HASH","BTREE"):array());}}function idf_escape($v){return"`".str_replace("`","``",$v)."`";}function table($v){return idf_escape($v);}function get_databases($Rc){$L=get_session("dbs");if($L===null){$J="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$L=($Rc?slow_query($J):get_vals($J));restart_session();set_session("dbs",$L);stop_session();}return$L;}function limit($J,$Z,$z,$if=0,$ah=" "){return" $J$Z".($z?$ah."LIMIT $z".($if?" OFFSET $if":""):"");}function limit1($R,$J,$Z,$ah="\n"){return limit($J,$Z,1,0,$ah);}function db_collation($j,array$b){$L=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$B))$L=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$B))$L=$b[$B[1]][-1];return$L;}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$i){$L=array();foreach($i as$j)$L[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$L;}function table_status($D="",$Ic=false){$L=array();foreach(get_rows($Ic?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$M){if($M["Engine"]=="InnoDB")$M["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$M["Comment"]);if(!isset($M["Engine"]))$M["Comment"]="";if($D!="")$M["Name"]=$D;$L[$M["Name"]]=$M;}return$L;}function is_view(array$S){return$S["Engine"]===null;}function fk_support(array$S){return preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function fields($R){$ze=(connection()->flavor=='maria');$L=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$M){$m=$M["COLUMN_NAME"];$U=$M["COLUMN_TYPE"];$dd=$M["GENERATION_EXPRESSION"];$Fc=$M["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Fc,$cd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ae);$k=$M["COLUMN_DEFAULT"];if($k!=""){$ae=preg_match('~text|json~',$Ae[1]);if(!$ze&&$ae)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($ze||$ae){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return stripslashes(str_replace("''","'",$B[1]));},$k));}if(!$ze&&preg_match('~binary~',$Ae[1])&&preg_match('~^0x(\w*)$~',$k,$B))$k=pack("H*",$B[1]);}$L[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Ae[1],"length"=>$Ae[2],"unsigned"=>ltrim($Ae[3].$Ae[4]),"default"=>($cd?($ze?$dd:stripslashes($dd)):$k),"null"=>($M["IS_NULLABLE"]=="YES"),"auto_increment"=>($Fc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Fc,$B)?$B[1]:""),"collation"=>$M["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$M[PRIVILEGES],where,order")),"comment"=>$M["COLUMN_COMMENT"],"primary"=>($M["COLUMN_KEY"]=="PRI"),"generated"=>($cd[1]=="PERSISTENT"?"STORED":$cd[1]),);}return$L;}function indexes($R,$g=null){$L=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$M){$D=$M["Key_name"];$L[$D]["type"]=($D=="PRIMARY"?"PRIMARY":($M["Index_type"]=="FULLTEXT"?"FULLTEXT":($M["Non_unique"]?($M["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$L[$D]["columns"][]=$M["Column_name"];$L[$D]["lengths"][]=($M["Index_type"]=="SPATIAL"?null:$M["Sub_part"]);$L[$D]["descs"][]=null;$L[$D]["algorithm"]=$M["Index_type"];}return$L;}function foreign_keys($R){static$Xf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$L=array();$ub=get_val("SHOW CREATE TABLE ".table($R),1);if($ub){preg_match_all("~CONSTRAINT ($Xf) FOREIGN KEY ?\\(((?:$Xf,? ?)+)\\) REFERENCES ($Xf)(?:\\.($Xf))? \\(((?:$Xf,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$ub,$Be,PREG_SET_ORDER);foreach($Be as$B){preg_match_all("~$Xf~",$B[2],$lh);preg_match_all("~$Xf~",$B[5],$Mh);$L[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('Adminer\idf_unescape',$lh[0]),"target"=>array_map('Adminer\idf_unescape',$Mh[0]),"on_delete"=>($B[6]?:"RESTRICT"),"on_update"=>($B[7]?:"RESTRICT"),);}}return$L;}function view($D){return array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($D),1)));}function collations(){$L=array();foreach(get_rows("SHOW COLLATION")as$M){if($M["Default"])$L[$M["Charset"]][-1]=$M["Collation"];else$L[$M["Charset"]][]=$M["Collation"];}ksort($L);foreach($L as$y=>$X)sort($L[$y]);return$L;}function information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function error(){return h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function create_database($j,$db){return queries("CREATE DATABASE ".idf_escape($j).($db?" COLLATE ".q($db):""));}function drop_databases(array$i){$L=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$L;}function rename_database($D,$db){$L=false;if(create_database($D,$db)){$T=array();$Ii=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Ii[]=$R;else$T[]=$R;}$L=(!$T&&!$Ii)||move_tables($T,$Ii,$D);drop_databases($L?array(DB):array());}return$L;}function auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$za="";break;}if($w["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function alter_table($R,$D,array$n,array$Tc,$hb,$mc,$db,$ya,$G){$qa=array();foreach($n as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$qa[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$qa[]="DROP ".idf_escape($m[0]);}$qa=array_merge($qa,$Tc);$th=($hb!==null?" COMMENT=".q($hb):"").($mc?" ENGINE=".q($mc):"").($db?" COLLATE ".q($db):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($G){$Tf=array();if($G["partition_by"]=='RANGE'||$G["partition_by"]=='LIST'){foreach($G["partition_names"]as$y=>$X){$Y=$G["partition_values"][$y];$Tf[]="\n PARTITION ".idf_escape($X)." VALUES ".($G["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$th .="\nPARTITION BY $G[partition_by]($G[partition])";if($Tf)$th .=" (".implode(",",$Tf)."\n)";elseif($G["partitions"])$th .=" PARTITIONS ".(+$G["partitions"]);}elseif($G===null)$th .="\nREMOVE PARTITIONING";if($R=="")return queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$qa)."\n)$th");if($R!=$D)$qa[]="RENAME TO ".table($D);if($th)$qa[]=ltrim($th);return($qa?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$qa)):true);}function alter_indexes($R,$qa){$Qa=array();foreach($qa as$X)$Qa[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return queries("ALTER TABLE ".table($R).implode(",",$Qa));}function truncate_tables(array$T){return apply_queries("TRUNCATE TABLE",$T);}function drop_views(array$Ii){return queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Ii)));}function drop_tables(array$T){return queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function move_tables(array$T,array$Ii,$Mh){$Fg=array();foreach($T as$R)$Fg[]=table($R)." TO ".idf_escape($Mh).".".table($R);if(!$Fg||queries("RENAME TABLE ".implode(", ",$Fg))){$Mb=array();foreach($Ii as$R)$Mb[table($R)]=view($R);connection()->select_db($Mh);$j=idf_escape(DB);foreach($Mb as$D=>$Hi){if(!queries("CREATE VIEW $D AS ".str_replace(" $j."," ",$Hi["select"]))||!queries("DROP VIEW $j.$D"))return false;}return true;}return false;}function copy_tables(array$T,array$Ii,$Mh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T as$R){$D=($Mh==DB?table("copy_$R"):idf_escape($Mh).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $D"))||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M){$ii=$M["Trigger"];if(!queries("CREATE TRIGGER ".($Mh==DB?idf_escape("copy_$ii"):idf_escape($Mh).".".idf_escape($ii))." $M[Timing] $M[Event] ON $D FOR EACH ROW\n$M[Statement];"))return false;}}foreach($Ii as$R){$D=($Mh==DB?table("copy_$R"):idf_escape($Mh).".".table($R));$Hi=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $D"))||!queries("CREATE VIEW $D AS $Hi[select]"))return false;}return true;}function trigger($D,$R){if($D=="")return array();$N=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return reset($N);}function triggers($R){$L=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M)$L[$M["Trigger"]]=array($M["Timing"],$M["Event"]);return$L;}function trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function routine($D,$U){$oa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$mh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$oc=driver()->enumLength;$mi="((".implode("|",array_merge(array_keys(driver()->types()),$oa)).")\\b(?:\\s*\\(((?:[^'\")]|$oc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Xf="$mh*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$mi";$h=get_val("SHOW CREATE $U ".idf_escape($D),2);preg_match("~\\(((?:$Xf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$mi\\s+":"")."(.*)~is",$h,$B);$n=array();preg_match_all("~$Xf\\s*,?~is",$B[1],$Be,PREG_SET_ORDER);foreach($Be as$Lf)$n[]=array("field"=>str_replace("``","`",$Lf[2]).$Lf[3],"type"=>strtolower($Lf[5]),"length"=>preg_replace_callback("~$oc~s",'Adminer\normalize_enum',$Lf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Lf[8] $Lf[7]"))),"null"=>true,"full_type"=>$Lf[4],"inout"=>strtoupper($Lf[1]),"collation"=>strtolower($Lf[9]),);return array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($D)),)+($U!="FUNCTION"?array("definition"=>$B[11]):array("returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",));}function routines(){return get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function routine_languages(){return array();}function routine_id($D,array$M){return idf_escape($D);}function last_id($K){return get_val("SELECT LAST_INSERT_ID()");}function explain(Db$f,$J){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$J);}function found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function create_sql($R,$ya,$yh){$L=get_val("SHOW CREATE TABLE ".table($R),1);if(!$ya)$L=preg_replace('~ AUTO_INCREMENT=\d+~','',$L);return$L;}function truncate_sql($R){return"TRUNCATE ".table($R);}function use_sql($Db){return"USE ".idf_escape($Db);}function trigger_sql($R){$L="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$M)$L .="\nCREATE TRIGGER ".idf_escape($M["Trigger"])." $M[Timing] $M[Event] ON ".table($M["Table"])." FOR EACH ROW\n$M[Statement];;\n";return$L;}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$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function unconvert_field(array$m,$L){if(preg_match("~binary~",$m["type"]))$L="UNHEX($L)";if($m["type"]=="bit")$L="CONVERT(b$L, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$jg=(min_version(8)?"ST_":"");$L=$jg."GeomFromText($L, $jg"."SRID($m[field]))";}return$L;}function support($Jc){return preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Jc);}function kill_process($X){return queries("KILL ".number($X));}function connection_id(){return"SELECT CONNECTION_ID()";}function max_connections(){return get_val("SELECT @@max_connections");}function types(){return array();}function type_values($u){return"";}function schemas(){return array();}function get_schema(){return"";}function set_schema($Rg,$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.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function page_header($Vh,$l="",$Ka=array(),$Wh=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Xh=$Vh.($Wh!=""?": $Wh":"");$Yh=strip_tags($Xh.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' ',$Yh,' ';$yb=adminer()->css();if(is_int(key($yb)))$yb=array_fill_keys($yb,'light');$od=in_array('light',$yb)||in_array('',$yb);$md=in_array('dark',$yb)||in_array('',$yb);$Ab=($od?($md?null:false):($md?:null));$Je=" media='(prefers-color-scheme: dark)'";if($Ab!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.3.0");if(adminer()->head($Ab))echo"\n","\n";foreach($yb as$xi=>$Se){$wa=($Se=='dark'&&!$Ab?$Je:($Se=='light'&&$md?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Gi=unserialize(file_get_contents($o));$sg="-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8 h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ fQIDAQAB -----END PUBLIC KEY----- ";if(openssl_verify($Gi["version"],base64_decode($Gi["signature"]),$sg)==1)$_COOKIE["adminer_version"]=$Gi["version"];}echo script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."}); document.body.classList.replace('nojs', 'js'); const offlineMessage = '".js_escape(lang(77))."'; const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"
    \n","".icon("move","","menu","")."".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ka!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $Xh

    \n","\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}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$xb){$pd=array();foreach($xb as$y=>$X)$pd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$pd));}adminer()->headers();}function csp(){return array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function get_nonce(){static$ef;if(!$ef)$ef=base64_encode(rand_string());return$ef;}function page_messages($l){$wi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Oe=idx($_SESSION["messages"],$wi);if($Oe){echo"
    ".implode("
    \n
    ",$Oe)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$wi]);}if($l)echo"
    $l
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function page_footer($Re=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function int32($We){while($We>=2147483648)$We-=4294967296;while($We<=-2147483649)$We+=4294967296;return(int)$We;}function long2str(array$W,$Ki){$Pg='';foreach($W as$X)$Pg .=pack('V',$X);if($Ki)return substr($Pg,0,end($W));return$Pg;}function str2long($Pg,$Ki){$W=array_values(unpack('V*',str_pad($Pg,4*ceil(strlen($Pg)/4),"\0")));if($Ki)$W[]=strlen($Pg);return$W;}function xxtea_mx($Ri,$Qi,$Ah,$ee){return int32((($Ri>>5&0x7FFFFFF)^$Qi<<2)+(($Qi>>3&0x1FFFFFFF)^$Ri<<4))^int32(($Ah^$Qi)+($ee^$Ri));}function encrypt_string($vh,$y){if($vh=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($vh,true);$We=count($W)-1;$Ri=$W[$We];$Qi=$W[0];$I=floor(6+52/($We+1));$Ah=0;while($I-->0){$Ah=int32($Ah+0x9E3779B9);$dc=$Ah>>2&3;for($Jf=0;$Jf<$We;$Jf++){$Qi=$W[$Jf+1];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Ri=int32($W[$Jf]+$Ve);$W[$Jf]=$Ri;}$Qi=$W[0];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Ri=int32($W[$We]+$Ve);$W[$We]=$Ri;}return long2str($W,false);}function decrypt_string($vh,$y){if($vh=="")return"";if(!$y)return false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($vh,false);$We=count($W)-1;$Ri=$W[$We];$Qi=$W[0];$I=floor(6+52/($We+1));$Ah=int32($I*0x9E3779B9);while($Ah){$dc=$Ah>>2&3;for($Jf=$We;$Jf>0;$Jf--){$Ri=$W[$Jf-1];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Qi=int32($W[$Jf]-$Ve);$W[$Jf]=$Qi;}$Ri=$W[$We];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Qi=int32($W[0]-$Ve);$W[0]=$Qi;$Ah=int32($Ah-0x9E3779B9);}return long2str($W,true);}$Zf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Zf[$y]=$X;}}function add_invalid_login(){$Da=get_temp_dir()."/adminer.invalid";foreach(glob("$Da*")?:array($Da)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Da-".rand_string());if(!$q)return;$Vd=unserialize(stream_get_contents($q));$Sh=time();if($Vd){foreach($Vd as$Wd=>$X){if($X[0]<$Sh)unset($Vd[$Wd]);}}$Ud=&$Vd[adminer()->bruteForceKey()];if(!$Ud)$Ud=array($Sh+30*60,0);$Ud[1]++;file_write_unlock($q,serialize($Vd));}function check_invalid_login(array&$Zf){$Vd=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$Vd=unserialize(stream_get_contents($q));file_unlock($q);break;}}$Ud=idx($Vd,adminer()->bruteForceKey(),array());$df=($Ud[1]>29?$Ud[0]-time():0);if($df>0)auth_error(lang(79,ceil($df/60)),$Zf);}$xa=$_POST["auth"];if($xa){session_regenerate_id();$Fi=$xa["driver"];$P=$xa["server"];$V=$xa["username"];$H=(string)$xa["password"];$j=$xa["db"];set_password($Fi,$P,$V,$H);$_SESSION["db"][$Fi][$P][$V][$j]=true;if($xa["permanent"]){$y=implode("-",array_map('base64_encode',array($Fi,$P,$V,$j)));$ng=adminer()->permanentLogin(true);$Zf[$y]="$y:".base64_encode($ng?encrypt_string($H,$ng):"");cookie("adminer_permanent",implode(" ",$Zf));}if(count($_POST)==1||DRIVER!=$Fi||SERVER!=$P||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Fi,$P,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent($Zf);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(80).' '.lang(81));}elseif($Zf&&!$_SESSION["pwds"]){session_regenerate_id();$ng=adminer()->permanentLogin();foreach($Zf as$y=>$X){list(,$Xa)=explode(":",$X);list($Fi,$P,$V,$j)=array_map('base64_decode',explode("-",$y));set_password($Fi,$P,$V,decrypt_string(base64_decode($Xa),$ng));$_SESSION["db"][$Fi][$P][$V][$j]=true;}}function unset_permanent(array&$Zf){foreach($Zf as$y=>$X){list($Fi,$P,$V,$j)=array_map('base64_decode',explode("-",$y));if($Fi==DRIVER&&$P==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Zf[$y]);}cookie("adminer_permanent",implode(" ",$Zf));}function auth_error($l,array&$Zf){$dh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$dh]||$_GET[$dh])&&!$_SESSION["token"])$l=lang(82);else{restart_session();add_invalid_login();$H=get_password();if($H!==null){if($H===false)$l .=($l?'
    ':'').lang(83,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Zf);}}if(!$_COOKIE[$dh]&&$_GET[$dh]&&ini_bool("session.use_only_cookies"))$l=lang(84);$Mf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Mf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(27),$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(85)."\n";echo"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Zf);page_header(lang(86),lang(87,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($vd,$dg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$dg,$B)&&($B[1]<1024||$B[1]>65535))auth_error(lang(88),$Zf);check_invalid_login($Zf);$wb=adminer()->credentials();$f=Driver::connect($wb[0],$wb[1],$wb[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)));}}$xe=null;if(!is_object($f)||($xe=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($xe)?$xe:lang(89))).(preg_match('~^ | $~',get_password())?'
    '.lang(90):'');auth_error($l,$Zf);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(78),lang(91));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($xa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Nd="max_input_vars";$He=ini_get($Nd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$He||$X<$He)){$Nd=$y;$He=$X;}}}$l=(!$_POST["token"]&&$He?lang(92,"'$Nd'"):lang(91).' '.lang(93));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=lang(94,"'post_max_size'");if(isset($_GET["sql"]))$l .=' '.lang(95);}function print_select_result($K,$g=null,array$Af=array(),$z=0){$we=array();$x=array();$d=array();$Ia=array();$ni=array();$L=array();for($t=0;(!$z||$t<$z)&&($M=$K->fetch_row());$t++){if(!$t){echo"
    \n","\n","";for($ce=0;$cefetch_field();$D=$m->name;$_f=(isset($m->orgtable)?$m->orgtable:"");$zf=(isset($m->orgname)?$m->orgname:$D);if($Af&&JUSH=="sql")$we[$ce]=($D=="table"?"table=":($D=="possible_keys"?"indexes=":null));elseif($_f!=""){if(isset($m->table))$L[$m->table]=$_f;if(!isset($x[$_f])){$x[$_f]=array();foreach(indexes($_f,$g)as$w){if($w["type"]=="PRIMARY"){$x[$_f]=array_flip($w["columns"]);break;}}$d[$_f]=$x[$_f];}if(isset($d[$_f][$zf])){unset($d[$_f][$zf]);$x[$_f][$zf]=$ce;$we[$ce]=$_f;}}if($m->charsetnr==63)$Ia[$ce]=true;$ni[$ce]=$m->type;echo"name!=$zf?" title='".h(($_f!=""?"$_f.":"").$zf)."'":"").">".h($D).($Af?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($D),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($M as$y=>$X){$_="";if(isset($we[$y])&&!$d[$we[$y]]){if($Af&&JUSH=="sql"){$R=$M[array_search("table=",$we)];$_=ME.$we[$y].urlencode($Af[$R]!=""?$Af[$R]:$R);}else{$_=ME."edit=".urlencode($we[$y]);foreach($x[$we[$y]]as$bb=>$ce)$_ .="&where".urlencode("[".bracket_escape($bb)."]")."=".urlencode($M[$ce]);}}elseif(is_url($X))$_=$X;if($X===null)$X="NULL";elseif($Ia[$y]&&!is_utf8($X))$X="".lang(36,strlen($X))."";else{$X=h($X);if($ni[$y]==254)$X="$X";}if($_)$X="$X";echo"$X";}}echo($t?"
    \n
    ":"

    ".lang(12))."\n";return$L;}function referencable_primary($Yg){$L=array();foreach(table_status('',true)as$Eh=>$R){if($Eh!=$Yg&&fk_support($R)){foreach(fields($Eh)as$m){if($m["primary"]){if($L[$Eh]){unset($L[$Eh]);break;}$L[$Eh]=$m;}}}}return$L;}function textarea($D,$Y,$N=10,$eb=80){echo"";}function select_input($wa,array$vf,$Y="",$qf="",$ag=""){$Lh=($vf?"select":"input");return"<$Lh$wa".($vf?">

    ".lang(115,get_driver(DRIVER),"".h(connection()->server_info)."","".connection()->extension."")."\n","

    ".lang(116,"".h(logged_user())."")."\n";$i=adminer()->databases();if($i){$Sg=support("scheme");$b=collations();echo"

    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i as$j=>$T){$Lg=h(ME)."db=".urlencode($j);$u=h("Db-".$j);echo"".(support("database")?"
    ":"")."".lang(26).(get_session("dbs")!==null?" - ".lang(117)."":"")."".lang(118)."".lang(119)."".lang(120)." - ".lang(121)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$u):""),"".h($j)."";$db=h(db_collation($j,$b));echo"".(support("database")?"$db":$db),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"
    \n","

    ".lang(124)."

    \n
      \n";foreach(adminer()->plugins as$bg){$Pb=(method_exists($bg,'description')?$bg->description():"");if(!$Pb){$Cg=new \ReflectionObject($bg);if(preg_match('~^/[\s*]+(.+)~',$Cg->getDocComment(),$B))$Pb=$B[1];}$Tg=(method_exists($bg,'screenshot')?$bg->screenshot():"");echo"
    • ".get_class($bg)."".h($Pb?": $Pb":"").($Tg?" (".lang(125).")":"")."\n";}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}class TmpFile{private$handler;var$size;function __construct(){$this->handler=tmpfile();}function write($pb){$this->size+=strlen($pb);fwrite($this->handler,$pb);}function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$O=array(idf_escape($_GET["field"]));$K=driver()->select($a,$O,array(where($_GET,$n)),$O);$M=($K?$K->fetch_row():array());echo driver()->value($M[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:lang(9);$S=table_status1($a);$D=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?lang(126):lang(127):lang(128)).": ".($D!=""?$D:h($a)),$l);$Kg=array();foreach($n as$y=>$m)$Kg+=$m["privileges"];adminer()->selectLinks($S,(isset($Kg["insert"])||!support("table")?"":null));$hb=$S["Comment"];if($hb!="")echo"

    ".lang(39).": ".h($hb)."\n";function tables_links($T){echo"

    \n";}$Md=driver()->inheritsFrom($a);if($Md){echo"

    ".lang(129)."

    \n";tables_links($Md);}elseif($n)adminer()->tableStructurePrint($n,$S);if(support("indexes")&&driver()->supportsIndex($S)){echo"

    ".lang(130)."

    \n";$x=indexes($a);if($x)adminer()->tableIndexesPrint($x,$S);echo'

    ".lang(96)."

    \n";$Vc=foreign_keys($a);if($Vc){echo"\n","\n";foreach($Vc as$D=>$p){echo"","
    ".lang(132)."".lang(133)."".lang(99)."".lang(98)."
    ".implode(", ",array_map('Adminer\h',$p["source"]))."";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"".($p["db"]!=""&&$p["db"]!=DB?"".h($p["db"]).".":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('Adminer\h',$p["target"])).")","".h($p["on_delete"]),"".h($p["on_update"]),''.lang(134).'',"\n";}echo"
    \n";}echo'

    ".lang(136)."

    \n";$Ta=driver()->checkConstraints($a);if($Ta){echo"\n";foreach($Ta as$y=>$X)echo"","
    ".h($X),"".lang(134)."","\n";echo"
    \n";}echo'

    ".lang(138)."

    \n";$ki=triggers($a);if($ki){echo"\n";foreach($ki as$y=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($y)."".lang(134)."\n";echo"
    \n";}echo'

    ".lang(140)."

    \n";$Pf=driver()->partitionsInfo($a);if($Pf)echo"

    BY ".h("$Pf[partition_by]($Pf[partition])")."\n";tables_links($Ld);}}elseif(isset($_GET["schema"])){page_header(lang(60),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Fh=array();$Gh=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$Be,PREG_SET_ORDER);foreach($Be as$t=>$B){$Fh[$B[1]]=array($B[2],$B[3]);$Gh[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$ci=0;$Ea=-1;$Rg=array();$Bg=array();$qe=array();$pa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$eg=0;$Rg[$R]["fields"]=array();foreach($pa[$R]as$m){$eg+=1.25;$m["pos"]=$eg;$Rg[$R]["fields"][$m["field"]]=$m;}$Rg[$R]["pos"]=($Fh[$R]?:array($ci,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$oe=$Ea;if(idx($Fh[$R],1)||idx($Fh[$X["table"]],1))$oe=min(idx($Fh[$R],1,0),idx($Fh[$X["table"]],1,0))-1;else$Ea-=.1;while($qe[(string)$oe])$oe-=.0001;$Rg[$R]["references"][$X["table"]][(string)$oe]=array($X["source"],$X["target"]);$Bg[$X["table"]][$R][(string)$oe]=$X["target"];$qe[(string)$oe]=true;}}$ci=max($ci,$Rg[$R]["pos"][0]+2.5+$eg);}echo'

    qs(\'#schema\').onselectstart = () => false; const tablePos = {',implode(",",$Gh)."\n",'}; const em = qs(\'#schema\').offsetHeight / ',$ci,'; document.onmousemove = schemaMousemove; document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); ';foreach($Rg as$D=>$R){echo"
    ",''.h($D)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$Nh=>$Dg){foreach($Dg as$oe=>$zg){$pe=$oe-idx($Fh[$D],1);$t=0;foreach($zg[0]as$lh)echo"\n
    "."
    ";}}foreach((array)$Bg[$D]as$Nh=>$Dg){foreach($Dg as$oe=>$d){$pe=$oe-idx($Fh[$D],1);$t=0;foreach($d as$Mh)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($Rg as$D=>$R){foreach((array)$R["references"]as$Nh=>$Dg){foreach($Dg as$oe=>$zg){$Qe=$ci;$Fe=-10;foreach($zg[0]as$y=>$lh){$fg=$R["pos"][0]+$R["fields"][$lh]["pos"];$gg=$Rg[$Nh]["pos"][0]+$Rg[$Nh]["fields"][$zg[1][$y]]["pos"];$Qe=min($Qe,$fg,$gg);$Fe=max($Fe,$fg,$gg);}echo"
    \n";}}}echo'
    ';$Fb=array('','USE','DROP+CREATE','CREATE');$Hh=array('','DROP+CREATE','CREATE');$Cb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Cb[]='INSERT+UPDATE';$M=get_settings("adminer_export");if(!$M)$M=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($M["events"])){$M["routines"]=$M["events"]=($_GET["dump"]=="");$M["triggers"]=$M["table_style"];}echo"
    ".lang(142)."".html_radios("output",adminer()->dumpOutput(),$M["output"])."\n","
    ".lang(143)."".html_radios("format",adminer()->dumpFormat(),$M["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(26)."".html_select('db_style',$Fb,$M["db_style"]).(support("type")?checkbox("types",1,$M["types"],lang(40)):"").(support("routine")?checkbox("routines",1,$M["routines"],lang(144)):"").(support("event")?checkbox("events",1,$M["events"],lang(145)):"")),"
    ".lang(119)."".html_select('table_style',$Hh,$M["table_style"]).checkbox("auto_increment",1,$M["auto_increment"],lang(41)).(support("trigger")?checkbox("triggers",1,$M["triggers"],lang(138)):""),"
    ".lang(146)."".html_select('data_style',$Cb,$M["data_style"]),'

    ',input_token(),' ',script("qsl('table').onclick = dumpClick;");$kg=array();if(DB!=""){$Ua=($a!=""?"":" checked");echo"","\n";$Ii="";$Jh=tables_list();foreach($Jh as$D=>$U){$jg=preg_replace('~_.*~','',$D);$Ua=($a==""||$a==(substr($a,-1)=="%"?"$jg%":$D));$mg="\n";$i=adminer()->databases();if($i){foreach($i as$j){if(!information_schema($j)){$jg=preg_replace('~_.*~','',$j);echo"
    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
    ".checkbox("tables[]",$D,$Ua,$D,"","block");if($U!==null&&!preg_match('~table~i',$U))$Ii .="$mg\n";else echo"$mg\n";$kg[$jg]++;}echo$Ii;if($Jh)echo script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
    ".checkbox("databases[]",$j,$a==""||$a=="$jg%",$j,"","block")."\n";$kg[$jg]++;}}}else echo"
    ";}echo'

    ';$Oc=true;foreach($kg as$y=>$X){if($y!=""&&$X>1){echo($Oc?"

    ":" ")."".h($y)."";$Oc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(61));echo'

    \n";hidden_fields_get();echo input_hidden("db",DB),($ed?"":input_hidden("grant")),"\n","\n";while($M=$K->fetch_assoc())echo'
    ".lang(24)."".lang(23)."
    '.h($M["User"])."".h($M["Host"]).''.lang(10)."\n";if(!$ed||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();exit;}restart_session();$td=&get_session("queries");$sd=&$td[DB];if(!$l&&$_POST["clear"]){$sd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?lang(62):lang(54)),$l);$ve='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$J=$_POST["query"];elseif($_POST["webfile"]){$oh=adminer()->importServerPath();$q=@fopen((file_exists($oh)?$oh:"compress.zlib://$oh.gz"),"rb");$J=($q?fread($q,1e6):false);}else$J=get_file("sql_file",true,";");if(is_string($J)){if(function_exists('memory_get_usage')&&($Ke=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Ke,strval(2*strlen($J)+memory_get_usage()+8e6)));if($J!=""&&strlen($J)<1e6){$I=$J.(preg_match("~;[ \t\r\n]*\$~",$J)?"":";");if(!$sd||first(end($sd))!=$I){restart_session();$sd[]=array($I,time());set_session("queries",$td);stop_session();}}$mh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$ve)[^\n]*\n?|--\r?\n)";$Nb=";";$if=0;$lc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$gb=0;$tc=array();$Nf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$ve.'|$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$di=microtime(true);$ja=get_settings("adminer_import");$cc=adminer()->dumpFormat();unset($cc["sql"]);while($J!=""){if(!$if&&preg_match("~^$mh*+DELIMITER\\s+(\\S+)~i",$J,$B)){$Nb=preg_quote($B[1]);$J=substr($J,strlen($B[0]));}elseif(!$if&&JUSH=='pgsql'&&preg_match("~^($mh*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$J,$B)){$Nb="\n\\\\\\.\r?\n";$if=strlen($B[0]);}else{preg_match("($Nb\\s*|$Nf)",$J,$B,PREG_OFFSET_CAPTURE,$if);list($Xc,$eg)=$B[0];if(!$Xc&&$q&&!feof($q))$J .=fread($q,1e5);else{if(!$Xc&&rtrim($J)=="")break;$if=$eg+strlen($Xc);if($Xc&&!preg_match("(^$Nb)",$Xc)){$Na=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($eg>0&&strtolower($J[$eg-1])=="e"));$Xf=($Xc=='/*'?'\*/':($Xc=='['?']':(preg_match("~^$ve|^#~",$Xc)?"\n":preg_quote($Xc).($Na?'|\\\\.':''))));while(preg_match("($Xf|\$)s",$J,$B,PREG_OFFSET_CAPTURE,$if)){$Pg=$B[0][0];if(!$Pg&&$q&&!feof($q))$J .=fread($q,1e5);else{$if=$B[0][1]+strlen($Pg);if(!$Pg||$Pg[0]!="\\")break;}}}else{$lc=false;$I=substr($J,0,$eg+($Nb[0]=="\n"?3:0));$gb++;$mg="
    ".adminer()->sqlCommandQuery($I)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$mh*+ATTACH\\b~i",$I,$B)){echo$mg,"

    ".lang(148)."\n";$tc[]=" $gb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$mg;ob_flush();flush();}$sh=microtime(true);if(connection()->multi_query($I)&&$g&&preg_match("~^$mh*+USE\\b~i",$I))$g->query($I);do{$K=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$mg:""),"

    ".lang(149).(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$tc[]=" $gb";if($_POST["error_stops"])break 2;}else{$Sh=" (".format_time($sh).")".(strlen($I)<1000?" ".lang(10)."":"");$la=connection()->affected_rows;$Li=($_POST["only_errors"]?"":driver()->warnings());$Mi="warnings-$gb";if($Li)$Sh .=", ".lang(35)."".script("qsl('a').onclick = partial(toggle, '$Mi');","");$Ac=null;$Af=null;$Bc="explain-$gb";if(is_object($K)){$z=$_POST["limit"];$Af=print_select_result($K,$g,array(),$z);if(!$_POST["only_errors"]){echo"

    \n";$gf=$K->num_rows;echo"
    \n";}}else{if(preg_match("~^$mh*+(CREATE|DROP|ALTER)$mh++(DATABASE|SCHEMA)\\b~i",$I)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(152,$la)."$Sh\n";}echo($Li?"

    \n":"");if($Ac){echo"\n";}}$sh=microtime(true);}while(connection()->next_result());}$J=substr($J,$if);$if=0;}}}}if($lc)echo"

    ".lang(153)."\n";elseif($_POST["only_errors"])echo"

    ".lang(154,$gb-count($tc))," (".format_time($di).")\n";elseif($tc&&$gb>1)echo"

    ".lang(149).": ".implode("",$tc)."\n";}else echo"

    ".upload_error($J)."\n";}echo'

    ';$zc="";if(!isset($_GET["import"])){$I=$_GET["sql"];if($_POST)$I=$_POST["query"];elseif($_GET["history"]=="all")$I=$sd;elseif($_GET["history"]!="")$I=idx($sd[$_GET["history"]],0);echo"

    ";textarea("query",$I,20);echo script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"

    ";adminer()->sqlPrintAfter();echo"$zc\n",lang(156).": \n";}else{echo"

    ".lang(157)."
    ";$jd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$jd (< ".ini_get("upload_max_filesize")."B): \n$zc":lang(158)),"
    \n";$Cd=adminer()->importServerPath();if($Cd)echo"
    ".lang(159)."
    ",lang(160,"".h($Cd)."$jd"),' ',"
    \n";echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(162))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(163))."\n",input_token();if(!isset($_GET["import"])&&$sd){print_fieldset("history",lang(164),$_GET["history"]!="");for($X=end($sd);$X;$X=prev($sd)){$y=key($sd);list($I,$Sh,$gc)=$X;echo''.lang(10).""." ".@date("H:i:s",$Sh).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$ve).*~m",'',$I)))),80,"").($gc?" ($gc)":"")."
    \n";}echo"\n","".lang(166)."\n","\n";}echo'

    ';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$vi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n as$D=>$m){if(!isset($m["privileges"][$vi?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$D]);}if($_POST&&!$l&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($vi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$x=indexes($a);$qi=unique_array($_GET["where"],$x);$vg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,lang(167),driver()->delete($a,$vg,$qi?0:1));else{$Q=array();foreach($n as$D=>$m){$X=process_input($m);if($X!==false&&$X!==null)$Q[idf_escape($D)]=$X;}if($vi){if(!$Q)redirect($A);queries_redirect($A,lang(168),driver()->update($a,$Q,$vg,$qi?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$K=driver()->insert($a,$Q);$ne=($K?last_id($K):0);queries_redirect($A,lang(169,($ne?" $ne":"")),$K);}}}$M=null;if($_POST["save"])$M=(array)$_POST["fields"];elseif($Z){$O=array();foreach($n as$D=>$m){if(isset($m["privileges"]["select"])){$ua=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$O[]=($ua?"$ua AS ":"").idf_escape($D);}}$M=array();if(!support("table"))$O=array("*");if($O){$K=driver()->select($a,$O,array($Z),$O,array(),(isset($_GET["select"])?2:1));if(!$K)$l=error();else{$M=$K->fetch_assoc();if(!$M)$M=false;}if(isset($_GET["select"])&&(!$M||$K->fetch_assoc()))$M=null;}}if(!support("table")&&!$n){if(!$Z){$K=driver()->select($a,array("*"),array(),array("*"));$M=($K?$K->fetch_assoc():false);if(!$M)$M=array(driver()->primary=>"");}if($M){foreach($M as$y=>$X){if(!$Z)$M[$y]=null;$n[$y]=array("field"=>$y,"null"=>($y!=driver()->primary),"auto_increment"=>($y==driver()->primary));}}}edit_form($a,$n,$M,$vi,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Rf=driver()->partitionBy;$Uf=driver()->partitionsInfo($a);$Ag=referencable_primary($a);$Vc=array();foreach($Ag as$Eh=>$m)$Vc[str_replace("`","``",$Eh)."`".str_replace("`","``",$m["field"])]=$Eh;$Df=array();$S=array();if($a!=""){$Df=fields($a);$S=table_status1($a);if(count($S)<2)$l=lang(9);}$M=$_POST;$M["fields"]=(array)$M["fields"];if($M["auto_increment_col"])$M["fields"][$M["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($M["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(170),drop_tables(array($a)));else{$n=array();$pa=array();$zi=false;$Tc=array();$Cf=reset($Df);$na=" FIRST";foreach($M["fields"]as$y=>$m){$p=$Vc[$m["type"]];$li=($p!==null?$Ag[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$rg=process_field($m,$li);$pa[]=array($m["orig"],$rg,$na);if(!$Cf||$rg!==process_field($Cf,$Cf)){$n[]=array($m["orig"],$rg,$na);if($m["orig"]!=""||$na)$zi=true;}if($p!==null)$Tc[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Vc[$m["type"]],'source'=>array($m["field"]),'target'=>array($li["field"]),'on_delete'=>$m["on_delete"],));$na=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$zi=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Cf=next($Df);if(!$Cf)$na="";}}$G=array();if(in_array($M["partition_by"],$Rf)){foreach($M as$y=>$X){if(preg_match('~^partition~',$y))$G[$y]=$X;}foreach($G["partition_names"]as$y=>$D){if($D==""){unset($G["partition_names"][$y]);unset($G["partition_values"][$y]);}}$G["partition_names"]=array_values($G["partition_names"]);$G["partition_values"]=array_values($G["partition_values"]);if($G==$Uf)$G=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$G=null;$C=lang(171);if($a==""){cookie("adminer_engine",$M["Engine"]);$C=lang(172);}$D=trim($M["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($D),$C,alter_table($a,$D,(JUSH=="sqlite"&&($zi||$Tc)?$pa:$n),$Tc,($M["Comment"]!=$S["Comment"]?$M["Comment"]:null),($M["Engine"]&&$M["Engine"]!=$S["Engine"]?$M["Engine"]:""),($M["Collation"]&&$M["Collation"]!=$S["Collation"]?$M["Collation"]:""),($M["Auto_increment"]!=""?number($M["Auto_increment"]):""),$G));}}page_header(($a!=""?lang(33):lang(64)),$l,array("table"=>$a),h($a));if(!$_POST){$ni=driver()->types();$M=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($ni["int"])?"int":(isset($ni["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$M=$S;$M["name"]=$a;$M["fields"]=array();if(!$_GET["auto_increment"])$M["Auto_increment"]="";foreach($Df as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$M["fields"][]=$m;}if($Rf){$M+=$Uf;$M["partition_names"][]="";$M["partition_values"][]="";}}}$b=collations();if(is_array(reset($b)))$b=call_user_func_array('array_merge',array_values($b));$nc=driver()->engines();foreach($nc as$mc){if(!strcasecmp($mc,$M["Engine"])){$M["Engine"]=$mc;break;}}echo'

    ';if(support("columns")||$a==""){echo lang(173).": \n",($nc?html_select("Engine",array(""=>"(".lang(174).")")+$nc,$M["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($b)echo"".optionlist($b)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($M["fields"],$b,"TABLE",$Vc);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(41).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(175),"columnShow(this.checked, 5)","jsonly");$jb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$jb,lang(39),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$M["Comment"])?"":''):''),'

    ';}echo' ';if($a!="")echo'',confirm(lang(176,$a));if($Rf&&(JUSH=='sql'||$a=="")){$Sf=preg_match('~RANGE|LIST~',$M["partition_by"]);print_fieldset("partition",lang(177),$M["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$Rf),$M["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"()\n",lang(140).": \n","\n","\n";foreach($M["partition_names"]as$y=>$X)echo'','\n\n";}echo input_token(),'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Jd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Hd=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Jd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Jd[]="SPATIAL";$x=indexes($a);$lg=array();if(JUSH=="mongo"){$lg=$x["_id_"];unset($Jd[0]);unset($x["_id_"]);}$M=$_POST;if($M)save_settings(array("index_options"=>$M["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$qa=array();foreach($M["indexes"]as$w){$D=$w["name"];if(in_array($w["type"],$Jd)){$d=array();$te=array();$Qb=array();$Id=(support("partial_indexes")?$w["partial"]:"");$Gd=(in_array($w["algorithm"],$Hd)?$w["algorithm"]:"");$Q=array();ksort($w["columns"]);foreach($w["columns"]as$y=>$c){if($c!=""){$se=idx($w["lengths"],$y);$Ob=idx($w["descs"],$y);$Q[]=idf_escape($c).($se?"(".(+$se).")":"").($Ob?" DESC":"");$d[]=$c;$te[]=($se?:null);$Qb[]=$Ob;}}$_c=$x[$D];if($_c){ksort($_c["columns"]);ksort($_c["lengths"]);ksort($_c["descs"]);if($w["type"]==$_c["type"]&&array_values($_c["columns"])===$d&&(!$_c["lengths"]||array_values($_c["lengths"])===$te)&&array_values($_c["descs"])===$Qb&&$_c["partial"]==$Id&&(!$Hd||$_c["algorithm"]==$Gd)){unset($x[$D]);continue;}}if($d)$qa[]=array($w["type"],$D,$Q,$Gd,$Id);}}foreach($x as$D=>$_c)$qa[]=array($_c["type"],$D,"DROP");if(!$qa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(180),alter_indexes($a,$qa));}page_header(lang(130),$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($M["indexes"]as$y=>$w){if($w["columns"][count($w["columns"])]!="")$M["indexes"][$y]["columns"][]="";}$w=end($M["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$M["indexes"][]=array("columns"=>array(1=>""));}if(!$M){foreach($x as$y=>$w){$x[$y]["name"]=$y;$x[$y]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$M["indexes"]=$x;}$te=(JUSH=="sql"||JUSH=="mssql");$gh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
    ';if($lg){echo"
    ',lang(181);$Ad=" class='idxopts".($gh?"":" hidden")."'";if($Hd)echo"".lang(182).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/',));echo'',lang(183).($te?" (".lang(184).")":"");if($te||support("descidx"))echo checkbox("options",1,$gh,lang(103),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(185);if(support("partial_indexes"))echo"".lang(186);echo'
    PRIMARY";foreach($lg["columns"]as$y=>$c)echo select_input(" disabled",$n,$c)," ";echo"\n";}$ce=1;foreach($M["indexes"]as$w){if(!$_POST["drop_col"]||$ce!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$ce][type]",array(-1=>"")+$Jd,$w["type"],($ce==count($M["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($Hd)echo"".html_select("indexes[$ce][algorithm]",array_merge(array(""),$Hd),$w['algorithm'],"label-algorithm");echo"";ksort($w["columns"]);$t=1;foreach($w["columns"]as$y=>$c){echo"".select_input(" name='indexes[$ce][columns][$t]' title='".lang(37)."'",($n?array_combine($n,$n):$n),$c,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"",($te?"":""),(support("descidx")?checkbox("indexes[$ce][descs][$t]",1,idx($w["descs"],$y),lang(49)):"")," ";$t++;}echo"\n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$ce]","x",lang(107)).script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ce++;}echo'

    ',input_token(),'

    ';}elseif(isset($_GET["database"])){$M=$_POST;if($_POST&&!$l&&!$_POST["add"]){$D=trim($M["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(187),drop_databases(array(DB)));}elseif(DB!==$D){if(DB!=""){$_GET["db"]=$D;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($D),lang(188),rename_database($D,$M["collation"]));}else{$i=explode("\n",str_replace("\r","",$D));$zh=true;$me="";foreach($i as$j){if(count($i)==1||$j!=""){if(!create_database($j,$M["collation"]))$zh=false;$me=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($me),lang(189),$zh);}}else{if(!$M["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($D).(preg_match('~^[a-z0-9_]+$~i',$M["collation"])?" COLLATE $M[collation]":""),substr(ME,0,-1),lang(190));}}page_header(DB!=""?lang(57):lang(111),$l,array(),h(DB));$b=collations();$D=DB;if($_POST)$D=$M["name"];elseif(DB!="")$M["collation"]=db_collation(DB,$b);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$ed){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ed,$B)&&$B[1]){$D=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'

    ',($_POST["add"]||strpos($D,"\n")?'
    ':'')."\n".($b?html_select("collation",array(""=>"(".lang(97).")")+$b,$M["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",)):""),' ';if(DB!="")echo"".confirm(lang(176,DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo icon("plus","add[0]","+",lang(104))."\n";echo input_token(),'

    ';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(191).": ".h($ca),$l);$Mg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Dd=array();$Hf=array();foreach($Mg["fields"]as$t=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$Hf[$t]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Dd[]=$t;}if(!$l&&$_POST){$Oa=array();foreach($Mg["fields"]as$y=>$m){$X="";if(in_array($y,$Dd)){$X=process_input($m);if($X===false)$X="''";if(isset($Hf[$y]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($Hf[$y]))$Oa[]="@".idf_escape($m["field"]);elseif(in_array($y,$Dd))$Oa[]=$X;}$J=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ca)."(".implode(", ",$Oa).")";$sh=microtime(true);$K=connection()->multi_query($J);$la=connection()->affected_rows;echo adminer()->selectQuery($J,$sh,!$K);if(!$K)echo"

    ".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$K=connection()->store_result();if(is_object($K))print_select_result($K,$g);else echo"

    ".lang(192,$la)." ".@date("H:i:s")."\n";}while(connection()->next_result());if($Hf)print_select_result(connection()->query("SELECT ".implode(", ",$Hf)));}}echo'

    ';if($Dd){echo"\n";foreach($Dd as$y){$m=$Mg["fields"][$y];$D=$m["field"];echo"
    ".adminer()->fieldName($m);$Y=idx($_POST["fields"],$D);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$D,""));echo"\n";}echo"
    \n";}echo'

    ',input_token(),'

    ';function
    pre_tr($Pg){return
    preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Pg))));}$R='(\+--[-+]+\+\n)';$M='(\| .* \|\n)';echo
    preg_replace_callback("~^$R?$M$R?($M*)$R?~m",function($B){$Pc=pre_tr($B[2]);return"\n".($B[1]?"$Pc\n":$Pc).pre_tr($B[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($Mg['comment']))));echo'
    ';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$D=$_GET["name"];$M=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$M["source"]=array_filter($M["source"],'strlen');ksort($M["source"]);$Mh=array();foreach($M["source"]as$y=>$X)$Mh[$y]=$M["target"][$y];$M["target"]=$Mh;}if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(" $D"=>($M["drop"]?"":" ".format_foreign_key($M))));else{$qa="ALTER TABLE ".table($a);$K=($D==""||queries("$qa DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($D)));if(!$M["drop"])$K=queries("$qa ADD".format_foreign_key($M));}queries_redirect(ME."table=".urlencode($a),($M["drop"]?lang(193):($D!=""?lang(194):lang(195))),$K);if(!$M["drop"])$l=lang(196);}page_header(lang(197),$l,array("table"=>$a),h($a));if($_POST){ksort($M["source"]);if($_POST["add"])$M["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$M["target"]=array();}elseif($D!=""){$Vc=foreign_keys($a);$M=$Vc[$D];$M["source"][]="";}else{$M["table"]=$a;$M["source"]=array("");}echo'
    ';$lh=array_keys(fields($a));if($M["db"]!="")connection()->select_db($M["db"]);if($M["ns"]!=""){$Ef=get_schema();set_schema($M["ns"]);}$_g=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Mh=array_keys(fields(in_array($M["table"],$_g)?$M["table"]:reset($_g)));$qf="this.form['change-js'].value = '1'; this.form.submit();";echo"

    \n";if(JUSH!="sqlite"){$Gb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Gb[]=$j;}echo"";}echo input_hidden("change-js"),'

    ';$ce=0;foreach($M["source"]as$y=>$X){echo"","
    ',lang(132),'',lang(133),'
    ".html_select("source[".(+$y)."]",array(-1=>"")+$lh,$X,($ce==count($M["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"".html_select("target[".(+$y)."]",$Mh,idx($M["target"],$y),"","label-target");$ce++;}echo'

    ',doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",)),'

    ';if($D!="")echo'',confirm(lang(176,$D));echo input_token(),'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$M=$_POST;$Ff="VIEW";if(JUSH=="pgsql"&&$a!=""){$th=table_status1($a);$Ff=strtoupper($th["Engine"]);}if($_POST&&!$l){$D=trim($M["name"]);$ua=" AS\n$M[select]";$A=ME."table=".urlencode($D);$C=lang(201);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$D&&JUSH!="sqlite"&&$U=="VIEW"&&$Ff=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($D).$ua,$A,$C);else{$Oh=$D."_adminer_".uniqid();drop_create("DROP $Ff ".table($a),"CREATE $U ".table($D).$ua,"DROP $U ".table($D),"CREATE $U ".table($Oh).$ua,"DROP $U ".table($Oh),($_POST["drop"]?substr(ME,0,-1):$A),lang(202),$C,lang(203),$a,$D);}}if(!$_POST&&$a!=""){$M=view($a);$M["name"]=$a;$M["materialized"]=($Ff!="VIEW");if(!$l)$l=error();}page_header(($a!=""?lang(32):lang(204)),$l,array("table"=>$a),h($a));echo'

    ',lang(185),': ',(support("materializedview")?" ".checkbox("materialized",1,$M["materialized"],lang(126)):""),'

    ';textarea("select",$M["select"]);echo'

    ';if($a!="")echo'',confirm(lang(176,$a));echo input_token(),'

    ';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Td=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$uh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$M=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(205));elseif(in_array($M["INTERVAL_FIELD"],$Td)&&isset($uh[$M["STATUS"]])){$Qg="\nON SCHEDULE ".($M["INTERVAL_VALUE"]?"EVERY ".q($M["INTERVAL_VALUE"])." $M[INTERVAL_FIELD]".($M["STARTS"]?" STARTS ".q($M["STARTS"]):"").($M["ENDS"]?" ENDS ".q($M["ENDS"]):""):"AT ".q($M["STARTS"]))." ON COMPLETION".($M["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(206):lang(207)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Qg.($aa!=$M["EVENT_NAME"]?"\nRENAME TO ".idf_escape($M["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($M["EVENT_NAME"]).$Qg)."\n".$uh[$M["STATUS"]]." COMMENT ".q($M["EVENT_COMMENT"]).rtrim(" DO\n$M[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(208).": ".h($aa):lang(209)),$l);if(!$M&&$aa!=""){$N=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$M=reset($N);}echo'
    ',lang(185),'
    ',lang(210),'
    ',lang(211),'
    ',lang(212),' ',html_select("INTERVAL_FIELD",$Td,$M["INTERVAL_FIELD"]),'
    ',lang(114),'',html_select("STATUS",$uh,$M["STATUS"]),'
    ',lang(39),'
    ',checkbox("ON_COMPLETION","PRESERVE",$M["ON_COMPLETION"]=="PRESERVE",lang(213)),'

    ';textarea("EVENT_DEFINITION",$M["EVENT_DEFINITION"]);echo'

    ';if($aa!="")echo'',confirm(lang(176,$aa));echo input_token(),'

    ';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Mg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$M=$_POST;$M["fields"]=(array)$M["fields"];if($_POST&&!process_fields($M["fields"])&&!$l){$Bf=routine($_GET["procedure"],$Mg);$Oh="$M[name]_adminer_".uniqid();foreach($M["fields"]as$y=>$m){if($m["field"]=="")unset($M["fields"][$y]);}drop_create("DROP $Mg ".routine_id($ca,$Bf),create_routine($Mg,$M),"DROP $Mg ".routine_id($M["name"],$M),create_routine($Mg,array("name"=>$Oh)+$M),"DROP $Mg ".routine_id($Oh,$M),substr(ME,0,-1),lang(214),lang(215),lang(216),$ca,$M["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(217):lang(218)).": ".h($ca):(isset($_GET["function"])?lang(219):lang(220))),$l);if(!$_POST){if($ca=="")$M["language"]="sql";else{$M=routine($_GET["procedure"],$Mg);$M["name"]=$ca;}}$b=get_vals("SHOW CHARACTER SET");sort($b);$Ng=routine_languages();echo($b?"".optionlist($b)."":""),'

    ',lang(185),': ',($Ng?"\n":""),'

    ';edit_fields($M["fields"],$b,$Mg);if(isset($_GET["function"])){echo"
    ".lang(221);edit_type("returns",(array)$M["returns"],$b,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'
    ',script("editFields();"),'

    ';textarea("definition",$M["definition"]);echo'

    ';if($ca!="")echo'',confirm(lang(176,$ca));echo input_token(),'

    ';}elseif(isset($_GET["check"])){$a=$_GET["check"];$D=$_GET["name"];$M=$_POST;if($M&&!$l){if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(),"",array(),"$D",($M["drop"]?"":$M["clause"]));else{$K=($D==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($D)));if(!$M["drop"])$K=queries("ALTER TABLE ".table($a)." ADD".($M["name"]!=""?" CONSTRAINT ".idf_escape($M["name"]):"")." CHECK ($M[clause])");}queries_redirect(ME."table=".urlencode($a),($M["drop"]?lang(222):($D!=""?lang(223):lang(224))),$K);}page_header(($D!=""?lang(225).": ".h($D):lang(137)),$l,array("table"=>$a));if(!$M){$Va=driver()->checkConstraints($a);$M=array("name"=>$D,"clause"=>$Va[$D]);}echo'

    ';if(JUSH!="sqlite")echo lang(185).': ';echo doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",),"?"),'

    ';textarea("clause",$M["clause"]);echo'

    ';if($D!="")echo'',confirm(lang(176,$D));echo input_token(),'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$D="$_GET[name]";$ji=trigger_options();$M=(array)trigger($D,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$ji["Timing"])&&in_array($_POST["Event"],$ji["Event"])&&in_array($_POST["Type"],$ji["Type"])){$of=" ON ".table($a);$Yb="DROP TRIGGER ".idf_escape($D).(JUSH=="pgsql"?$of:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Yb,$A,lang(226));else{if($D!="")queries($Yb);queries_redirect($A,($D!=""?lang(227):lang(228)),queries(create_trigger($of,$_POST)));if($D!="")queries(create_trigger($of,$M+array("Type"=>reset($ji["Type"]))));}}$M=$_POST;}page_header(($D!=""?lang(229).": ".h($D):lang(230)),$l,array("table"=>$a));echo'
    ',lang(231),'',html_select("Timing",$ji["Timing"],$M["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    ',lang(232),'',html_select("Event",$ji["Event"],$M["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$ji["Event"])?" ":""),'
    ',lang(38),'',html_select("Type",$ji["Type"],$M["Type"]),'

    ',lang(185),': ',script("qs('#form')['Timing'].onchange();"),'

    ';textarea("Statement",$M["Statement"]);echo'

    ';if($D!="")echo'',confirm(lang(176,$D));echo input_token(),'

    ';}elseif(isset($_GET["user"])){$ea=$_GET["user"];$pg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$M){foreach(explode(",",($M["Privilege"]=="Grant option"?"":$M["Context"]))as$qb)$pg[$qb][$M["Privilege"]]=$M["Comment"];}$pg["Server Admin"]+=$pg["File access on server"];$pg["Databases"]["Create routine"]=$pg["Procedures"]["Create routine"];unset($pg["Procedures"]["Create routine"]);$pg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$pg["Columns"][$X]=$pg["Tables"][$X];unset($pg["Server Admin"]["Usage"]);foreach($pg["Tables"]as$y=>$X)unset($pg["Databases"][$y]);$Ze=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Ze[$X]=(array)$Ze[$X]+idx($_POST["grants"],$y,array());}$fd=array();$mf="";if(isset($_GET["host"])&&($K=connection()->query("SHOW GRANTS FOR ".q($ea)."@".q($_GET["host"])))){while($M=$K->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$M[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$Be,PREG_SET_ORDER)){foreach($Be as$X){if($X[1]!="USAGE")$fd["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$M[0]))$fd["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$M[0],$B))$mf=$B[1];}}if($_POST&&!$l){$nf=(isset($_GET["host"])?q($ea)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $nf",ME."privileges=",lang(233));else{$bf=q($_POST["user"])."@".q($_POST["host"]);$Vf=$_POST["pass"];if($Vf!=''&&!$_POST["hashed"]&&!min_version(8)){$Vf=get_val("SELECT PASSWORD(".q($Vf).")");$l=!$Vf;}$vb=false;if(!$l){if($nf!=$bf){$vb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $bf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Vf));$l=!$vb;}elseif($Vf!=$mf)queries("SET PASSWORD FOR $bf = ".q($Vf));}if(!$l){$Jg=array();foreach($Ze as$hf=>$ed){if(isset($_GET["grant"]))$ed=array_filter($ed);$ed=array_keys($ed);if(isset($_GET["grant"]))$Jg=array_diff(array_keys(array_filter($Ze[$hf],'strlen')),$ed);elseif($nf==$bf){$kf=array_keys((array)$fd[$hf]);$Jg=array_diff($kf,$ed);$ed=array_diff($ed,$kf);unset($fd[$hf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$hf,$B)&&(!grant("REVOKE",$Jg,$B[2]," ON $B[1] FROM $bf")||!grant("GRANT",$ed,$B[2]," ON $B[1] TO $bf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($nf!=$bf)queries("DROP USER $nf");elseif(!isset($_GET["grant"])){foreach($fd as$hf=>$Jg){if(preg_match('~^(.+)(\(.*\))?$~U',$hf,$B))grant("REVOKE",array_keys($Jg),$B[2]," ON $B[1] FROM $bf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(234):lang(235)),!$l);if($vb)connection()->query("DROP USER $bf");}}page_header((isset($_GET["host"])?lang(24).": ".h("$ea@$_GET[host]"):lang(147)),$l,array("privileges"=>array('',lang(61))));$M=$_POST;if($M)$fd=$Ze;else{$M=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$M["pass"]=$mf;if($mf!="")$M["hashed"]=true;$fd[(DB==""||$fd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    ',lang(23),'
    ',lang(24),'
    ',lang(25),' ',($M["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$M["hashed"],lang(236),"typePassword(this.form['pass'], this.checked);")),'
    ',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(23),"Databases"=>lang(26),"Tables"=>lang(128),"Columns"=>lang(37),"Procedures"=>lang(237),)as$qb=>$Ob){foreach((array)$pg[$qb]as$og=>$hb){echo"$Ob'.h($og);$t=0;foreach($fd as$hf=>$ed){$D="'grants[$t][".h(strtoupper($og))."]'";$Y=$ed[strtoupper($og)];if($qb=="Server Admin"&&$hf!=(isset($fd["*.*"])?"*.*":".*"))echo"
    ".lang(61).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($fd as$hf=>$ed){echo''.($hf!="*.*"?"":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else echo"";$t++;}}}echo"
    \n",'

    ';if(isset($_GET["host"]))echo'',confirm(lang(176,"$ea@$_GET[host]"));echo input_token(),'

    ';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$he=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$he++;}queries_redirect(ME."processlist=",lang(240,$he),$he||!$_POST["kill"]);}}page_header(lang(112),$l);echo'
    ',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$M){if(!$t){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($M as$y=>$X)echo"$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),));echo"
    ".checkbox("kill[]",$M[JUSH=="sql"?"Id":"pid"],0):"");foreach($M as$y=>$X)echo"".((JUSH=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$M["Command"])&&$X!="")||(JUSH=="pgsql"&&$y=="current_query"&&$X!="")||(JUSH=="oracle"&&$y=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(241).'':h($X));echo"\n";}echo'

    ';if(support("kill"))echo($t+1)."/".lang(242,max_connections()),"

    \n";echo input_token(),'

    ',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$n=fields($a);$Vc=column_foreign_keys($a);$jf=$S["Oid"];$ka=get_settings("adminer_import");$Kg=array();$d=array();$Ug=array();$yf=array();$Rh="";foreach($n as$y=>$m){$D=adminer()->fieldName($m);$Xe=html_entity_decode(strip_tags($D),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$D!=""){$d[$y]=$Xe;if(is_shortable($m))$Rh=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$D!="")$Ug[$y]=$Xe;if(isset($m["privileges"]["order"])&&$D!="")$yf[$y]=$Xe;$Kg+=$m["privileges"];}list($O,$s)=adminer()->selectColumnsProcess($d,$x);$O=array_unique($O);$s=array_unique($s);$Xd=count($s)selectSearchProcess($n,$x);$xf=adminer()->selectOrderProcess($n,$x);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$ri=>$M){$ua=convert_field($n[key($M)]);$O=array($ua?:idf_escape(key($M)));$Z[]=where_check($ri,$n);$L=driver()->select($a,$O,$Z,$O);if($L)echo first($L->fetch_row());}exit;}$lg=$ti=array();foreach($x as$w){if($w["type"]=="PRIMARY"){$lg=array_flip($w["columns"]);$ti=($O?$lg:array());foreach($ti as$y=>$X){if(in_array(idf_escape($y),$O))unset($ti[$y]);}break;}}if($jf&&!$lg){$lg=$ti=array($jf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($jf));}if($_POST&&!$l){$Oi=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Va=array();foreach($_POST["check"]as$Sa)$Va[]=where_check($Sa,$n);$Oi[]="((".implode(") OR (",$Va)."))";}$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,"");$Zc=($O?implode(", ",$O):"*").convert_fields($d,$n,$O)."\nFROM ".table($a);$hd=($s&&$Xd?"\nGROUP BY ".implode(", ",$s):"").($xf?"\nORDER BY ".implode(", ",$xf):"");$J="SELECT $Zc$Oi$hd";if(is_array($_POST["check"])&&!$lg){$pi=array();foreach($_POST["check"]as$X)$pi[]="(SELECT".limit($Zc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$hd,1).")";$J=implode(" UNION ALL ",$pi);}adminer()->dumpData($a,"table",$J);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Vc)){if($_POST["save"]||$_POST["delete"]){$K=true;$la=0;$Q=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$D=>$X){$X=process_input($n[$D]);if($X!==null&&($_POST["clone"]||$X!==false))$Q[idf_escape($D)]=($X!==false?$X:idf_escape($D));}}if($_POST["delete"]||$Q){$J=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($Q)).")\nSELECT ".implode(", ",$Q)."\nFROM ".table($a):"");if($_POST["all"]||($lg&&is_array($_POST["check"]))||$Xd){$K=($_POST["delete"]?driver()->delete($a,$Oi):($_POST["clone"]?queries("INSERT $J$Oi".driver()->insertReturning($a)):driver()->update($a,$Q,$Oi)));$la=connection()->affected_rows;if(is_object($K))$la+=$K->num_rows;}else{foreach((array)$_POST["check"]as$X){$Ni="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$K=($_POST["delete"]?driver()->delete($a,$Ni,1):($_POST["clone"]?queries("INSERT".limit1($a,$J,$Ni)):driver()->update($a,$Q,$Ni,1)));if(!$K)break;$la+=connection()->affected_rows;}}}$C=lang(244,$la);if($_POST["clone"]&&$K&&$la==1){$ne=last_id($K);if($ne)$C=lang(169," $ne");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$C,$K);if(!$_POST["delete"]){$hg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$hg),$hg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l=lang(245);else{$K=true;$la=0;foreach($_POST["val"]as$ri=>$M){$Q=array();foreach($M as$y=>$X){$y=bracket_escape($y,true);$Q[idf_escape($y)]=(preg_match('~char|text~',$n[$y]["type"])||$X!=""?adminer()->processInput($n[$y],$X):"NULL");}$K=driver()->update($a,$Q," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($ri,$n),($Xd||$lg?0:1)," ");if(!$K)break;$la+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(244,$la),$K);}}elseif(!is_string($Mc=get_file("csv_file",true)))$l=upload_error($Mc);elseif(!preg_match('~~u',$Mc))$l=lang(246);else{save_settings(array("output"=>$ka["output"],"format"=>$_POST["separator"]),"adminer_import");$K=true;$eb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Mc,$Be);$la=count($Be[0]);driver()->begin();$ah=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$N=array();foreach($Be[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ah]*)$ah~",$X.$ah,$Ce);if(!$y&&!array_diff($Ce[1],$eb)){$eb=$Ce[1];$la--;}else{$Q=array();foreach($Ce[1]as$t=>$bb)$Q[idf_escape($eb[$t])]=($bb==""&&$n[$eb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$bb)?str_replace('""','"',substr($bb,1,-1)):$bb));$N[]=$Q;}}$K=(!$N||driver()->insertUpdate($a,$N,$lg));if($K)driver()->commit();queries_redirect(remove_from_uri("page"),lang(247,$la),$K);driver()->rollback();}}}$Eh=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header(lang(43).": $Eh",$l);$Q=null;if(isset($Kg["insert"])||!support("table")){$Mf=array();foreach((array)$_GET["where"]as$X){if(isset($Vc[$X["col"]])&&count($Vc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Mf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$Q=$Mf?"&".http_build_query($Mf):"";}adminer()->selectLinks($S,$Q);if(!$d&&support("table"))echo"

    ".lang(248).($n?".":": ".error())."\n";else{echo"

    \n","
    ";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"
    \n";adminer()->selectColumnsPrint($O,$d);adminer()->selectSearchPrint($Z,$Ug,$x);adminer()->selectOrderPrint($xf,$yf,$x);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Rh);adminer()->selectActionPrint($x);echo"
    \n";$F=$_GET["page"];$Yc=null;if($F=="last"){$Yc=get_val(count_rows($a,$Z,$Xd,$s));$F=floor(max(0,intval($Yc)-1)/$z);}$Vg=$O;$gd=$s;if(!$Vg){$Vg[]="*";$rb=convert_fields($d,$n,$O);if($rb)$Vg[]=substr($rb,2);}foreach($O as$y=>$X){$m=$n[idf_unescape($X)];if($m&&($ua=convert_field($m)))$Vg[$y]="$ua AS $X";}if(!$Xd&&$ti){foreach($ti as$y=>$X){$Vg[]=idf_escape($y);if($gd)$gd[]=idf_escape($y);}}$K=driver()->select($a,$Vg,$Z,$gd,$xf,$z,$F,true);if(!$K)echo"

    ".error()."\n";else{if(JUSH=="mssql"&&$F)$K->seek($z*$F);$kc=array();echo"

    \n";$N=array();while($M=$K->fetch_assoc()){if($F&&JUSH=="oracle")unset($M["RNUM"]);$N[]=$M;}if($_GET["page"]!="last"&&$z&&$s&&$Xd&&JUSH=="sql")$Yc=get_val(" SELECT FOUND_ROWS()");if(!$N)echo"

    ".lang(12)."\n";else{$Ca=adminer()->backwardKeys($a,$Eh);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$s&&$O?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($N,$Vc)as$We=>$M){$qi=unique_array($N[$We],$x);if(!$qi){$qi=array();reset($O);foreach($N[$We]as$y=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($O)))$qi[$y]=$X;next($O);}}$ri="";foreach($qi as$y=>$X){$m=(array)$n[$y];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$y:"CONVERT($y USING ".charset(connection()).")").")";$X=md5($X);}$ri .="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($y));}echo"".(!$s&&$O?"":"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(249)."");$Ye=array();$bd=array();reset($O);$xg=1;foreach($N[0]as$y=>$X){if(!isset($ti[$y])){$X=idx($_GET["columns"],key($O))?:array();$m=$n[$O?($X?$X["col"]:current($O)):$y];$D=($m?adminer()->fieldName($m,$xg):($X["fun"]?"*":h($y)));if($D!=""){$xg++;$Ye[$y]=$D;$c=idf_escape($y);$wd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$Ob="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$ad=apply_sql_function($X["fun"],$D);$kh=isset($m["privileges"]["order"])||$ad;echo($kh?"$ad":$ad),"";}$bd[$y]=$X["fun"];next($O);}}$te=array();if($_GET["modify"]){foreach($N as$M){foreach($M as$y=>$X)$te[$y]=max($te[$y],min(40,strlen(utf8_decode($X))));}}echo($Ca?"".lang(250):"")."
    ".checkbox("check[]",substr($ri,1),in_array(substr($ri,1),(array)$_POST["check"])).($Xd||information_schema(DB)?"":" ".lang(251).""));reset($O);foreach($M as$y=>$X){if(isset($Ye[$y])){$c=current($O);$m=(array)$n[$y];$X=driver()->value($X,$m);if($X!=""&&(!isset($kc[$y])||$kc[$y]!=""))$kc[$y]=(is_mail($X)?$Ye[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$ri;if(!$_&&$X!==null){foreach((array)$Vc[$y]as$p){if(count($Vc[$y])==1||end($p["source"])==$y){$_="";foreach($p["source"]as$t=>$lh)$_ .=where_link($t,$p["target"][$t],$N[$We][$lh]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($c=="COUNT(*)"){$_=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$qi))$_ .=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($qi as$ee=>$W)$_ .=where_link($t++,$ee,$W);}$xd=select_value($X,$_,$m,$Rh);$u=h("val[$ri][".bracket_escape($y)."]");$ig=idx(idx($_POST["val"],$ri),bracket_escape($y));$fc=!is_array($M[$y])&&is_utf8($xd)&&$N[$We][$y]==$M[$y]&&!$bd[$y]&&!$m["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$c,$B)?$n[idf_unescape($B[2])]["type"]:$m["type"]);$Qh=preg_match('~text|json|lob~',$U);$Yd=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$c);echo"".($Qh?"":"");}else{$ye=strpos($xd,"");echo" data-text='".($ye?2:($Qh?1:0))."'".($fc?"":" data-warning='".h(lang(252))."'").">$xd";}}next($O);}if($Ca)echo"";adminer()->backwardKeysPrint($Ca,$N[$We]);echo"
    \n","
    \n";}if(!is_ajax()){if($N||$F){$yc=true;if($_GET["page"]!="last"){if(!$z||(count($N)<$z&&($N||!$F)))$Yc=($F?$F*$z:0)+count($N);elseif(JUSH!="sql"||!$Xd){$Yc=($Xd?false:found_rows($S,$Z));if(intval($Yc)$z||$F));if($Kf)echo(($Yc===false?count($N)+1:$Yc-$F*$z)>$z?'

    '.lang(253).''.script("qsl('a').onclick = partial(selectLoadMore, $z, '".lang(254)."…');",""):''),"\n";echo"

    \n";}if(adminer()->selectImportPrint())echo"

    ","".lang(62)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"";echo input_token(),"

    \n",(!$s&&$O?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$th=isset($_GET["status"]);page_header($th?lang(114):lang(113));$Ei=($th?show_status():show_variables());if(!$Ei)echo"

    ".lang(12)."\n";else{echo"\n";foreach($Ei as$M){echo"";$y=array_shift($M);echo"
    ".h($y)."";foreach($M as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Bh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$D=>$S){json_row("Comment-$D",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$y)json_row("$y-$D",h($S[$y]));foreach($Bh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);if($X>=0)json_row("$y-$D",($y=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Bh[$y]))$Bh[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$D","?");}}}foreach($Bh as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Kh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Kh&&!$l&&!$_POST["search"]){$K=true;$C="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$K=truncate_tables($_POST["tables"]);$C=lang(258);}elseif($_POST["move"]){$K=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$C=lang(259);}elseif($_POST["copy"]){$K=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$C=lang(260);}elseif($_POST["drop"]){if($_POST["views"])$K=drop_views($_POST["views"]);if($K&&$_POST["tables"])$K=drop_tables($_POST["tables"]);$C=lang(261);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$M)$C .="".h($R).": ".h($M["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$K=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$C=lang(262);}elseif(!$_POST["tables"])$C=lang(9);elseif($K=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($M=$K->fetch_assoc())$C .="".h($M["Table"]).": ".h($M["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$C,$K);}page_header(($_GET["ns"]==""?lang(26).": ".h(DB):lang(263).": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(264)."

    \n";$Jh=tables_list();if(!$Jh)echo"

    ".lang(9)."\n";else{echo"

    \n";if(support("table")){echo"
    ".lang(265)."
    ","",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=driver()->convertOperator("LIKE %%");search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($Jh as$D=>$U){$Hi=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$D);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(128),''.lang(266).doc_link(array('sql'=>'storage-engines.html')),''.lang(118).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(267).doc_link(array('sql'=>'show-table-status.html',)),''.lang(268).doc_link(array('sql'=>'show-table-status.html',)),''.lang(269).doc_link(array('sql'=>'show-table-status.html')),''.lang(41).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(270).doc_link(array('sql'=>'show-table-status.html',)),(support("comment")?''.lang(39).doc_link(array('sql'=>'show-table-status.html',)):''),"
    '.checkbox(($Hi?"views[]":"tables[]"),$D,in_array("$D",$Kh,true),"","","",$u),''.(support("table")||support("indexes")?"".h($D).'':h($D));if($Hi)echo''.(preg_match('~materialized~i',$U)?lang(126):lang(127)).'','?';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(33)),"Index_length"=>array("indexes",lang(131)),"Data_free"=>array("edit",lang(34)),"Auto_increment"=>array("auto_increment=1&create",lang(33)),"Rows"=>array("select",lang(30)),)as$y=>$_){$u=" id='$y-".h($D)."'";echo($_?"".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":""),"\n";}echo"
    ".lang(242,count($Jh)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"";echo"\n","
    \n","
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo"

    ".lang(144)."

    \n";$Og=routines();if($Og){echo"\n",'\n";foreach($Og as$M){$D=($M["SPECIFIC_NAME"]==$M["ROUTINE_NAME"]?"":"&name=".urlencode($M["ROUTINE_NAME"]));echo'','
    '.lang(185).''.lang(38).''.lang(221)."
    '.h($M["ROUTINE_NAME"]).'',''.h($M["ROUTINE_TYPE"]),''.h($M["DTD_IDENTIFIER"]),''.lang(134)."";}echo"
    \n";}echo'

    ".lang(145)."

    \n";$N=get_rows("SHOW EVENTS");if($N){echo"\n","\n";foreach($N as$M)echo"","
    ".lang(185)."".lang(281)."".lang(210)."".lang(211)."
    ".h($M["Name"]),"".($M["Execute at"]?lang(282)."".$M["Execute at"]:lang(212)." ".$M["Interval value"]." ".$M["Interval field"]."$M[Starts]"),"$M[Ends]",''.lang(134).'';echo"
    \n";$wc=get_val("SELECT @@event_scheduler");if($wc&&$wc!="ON")echo"

    event_scheduler: ".h($wc)."\n";}echo'