credentials();$I=Driver::connect($Vb[0],$Vb[1],$Vb[2]);return(is_object($I)?$I:null);}function idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$Jf=substr($u,-1);return str_replace($Jf.$Jf,$Jf,substr($u,1,-1));}function q($Q){return connection()->quote($Q);}function idx($Ba,$x,$k=null){return($Ba&&array_key_exists($x,$Ba)?$Ba[$x]:$k);}function number($X){return preg_replace('~[^0-9]+~','',$X);}function int_type(){return'(tiny|small|medium|big)?int(eger|\d)?';}function number_type(){return'(^('.int_type().'|decimal|numeric|number|real|(binary_|half_|scaled_)?float\d?|(binary_)?double( precision)?|(small)?money)$)';}function text_type(){return'char|text'.(JUSH=="sql"?'|enum|set':'');}function is_searchable(array$m,array$X){if(!isset($m["privileges"]["where"]))return false;$U=$m["type"];$Dj=$X["val"];$Sa='binary$|bytea|raw|image|bfile|^vector$'.(JUSH=="mssql"?'|^timestamp$':'|^bit').(JUSH=="oracle"?'|^blob|^long|rowid':'');if(preg_match("~$Sa~",$U))return false;if(preg_match(number_type(),$U)){$ih='-?\d+(\.\d+)?';return(bool)preg_match('~^'.$ih.(preg_match('~IN$~',$X["op"])?"( *, *$ih)*":'').'$~',$Dj);}if(preg_match('~^(small)?date|^timestamp~',$U))return(bool)preg_match('~^\d+-\d+-\d+~',$Dj);if(preg_match('~^time~',$U))return(bool)preg_match('~^\d+:\d+~',$Dj);if(preg_match('~^bool~',$U)||(JUSH=="mssql"&&$U=="bit"))return(bool)preg_match('~^(t|f|true|false|[01])$~i',$Dj);return true;}function remove_slashes(array$em,$Fd=false){$I=array();foreach($em as$x=>$X)$I[stripslashes($x)]=(is_array($X)?remove_slashes($X,$Fd):($Fd?$X:stripslashes($X)));return$I;}function bracket_escape($u,$La=false){static$ol=array(':'=>':1',']'=>':2','['=>':3','"'=>':4','='=>':5');return strtr($u,($La?array_flip($ol):$ol));}function url_escape($Q){static$ol=array();if(!$ol){$ol=array(' '=>'+');foreach(str_split("\"'<>#%&+=?".ini_get("arg_separator.input"))as$eb)$ol[$eb]=sprintf('%%%02X',ord($eb));for($s=0;$s<256;$s++){if($s<32||$s>126)$ol[chr($s)]=sprintf('%%%02X',$s);}}return strtr((string)$Q,$ol);}function min_version($hm,$eg="",$g=null){$g=connection($g);$Sj=$g->server_info;if($eg&&preg_match('~([\d.]+)-MariaDB~',$Sj,$A)){$Sj=$A[1];$hm=$eg;}return$hm&&version_compare($Sj,$hm)>=0;}function charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function ini_set($Fh,$Y){return(function_exists('ini_set')?\ini_set($Fh,$Y):false);}function ini_bool($df){$X=ini_get($df);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function ini_bytes($df){$X=ini_get($df);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function max_input_vars($J,$Uh){$ig=(int)ini_get("max_input_vars");return($ig?(int)floor(($ig-$Uh)/$J):0);}function max_input_vars_error(){$df="max_input_vars";return lang(0,"$df = ".ini_get($df)."");}function sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function set_password($gm,$N,$V,$E){$_SESSION["pwds"][$gm][$N][$V]=($_COOKIE["adminer_key"]&&is_string($E)?array(encrypt_string($E,$_COOKIE["adminer_key"])):$E);}function get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function get_val($G,$m=0,$Gb=null){$Gb=connection($Gb);$H=$Gb->query($G);if(!is_object($H))return false;$J=$H->fetch_row();return($J?$J[$m]:false);}function get_vals($G,$d=0){$I=array();$H=connection()->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$d];}return$I;}function get_key_vals($G,$g=null,$Vj=true){$g=connection($g);$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($Vj)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function get_rows($G,$g=null,$l="

"){$Gb=connection($g);$I=array();$H=$Gb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.adminer()->error()."\n";return$I;}function unique_array($J,array$w){foreach($w as$v){if(preg_match("~^(PRIMARY|UNIQUE)$~",$v["type"])&&!$v["partial"]){$I=array();foreach($v["columns"]as$x){if(!isset($J[$x]))continue 2;$I[$x]=$J[$x];}return$I;}}}function escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return idf_escape($x);}function where(array$Z,array$n=array()){$I=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$_d=$m["type"];$pf=$m&&(is_blob($m)||preg_match('~binary~',$_d));$I[]=$d.($pf&&!is_utf8($X)?" = ".driver()->quoteBinary($X):(JUSH=="sql"&&$_d=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$m["full_type"])?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($_d,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))))));if(JUSH=="sql"&&preg_match('~char|text~',$_d)&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$I[]=escape_key($x)." IS NULL";return implode(" AND ",$I);}function where_columns(array$n){$I=array();foreach((array)$_GET["null"]as$x)$I[$x]=true;foreach((array)$_GET["where"]as$x=>$X){$x=bracket_escape($x,true);foreach($n as$C=>$m){if($x==$C||strpos($x,idf_escape($C))!==false)$I[$C]=true;}}return$I;}function where_check($X,array$n=array()){parse_str($X,$hb);remove_slashes(array(&$hb));return where($hb,$n);}function where_link($s,$d,$Y,$Ch="="){$_h=($Y!==null?$Ch:"IS NULL");return"&where[$s][col]=".url_escape($d).($_h!=first(adminer()->operators())?"&where[$s][op]=".url_escape($_h):"")."&where[$s][val]=".url_escape($Y);}function convert_fields(array$e,array$n,array$M=array()){$I="";foreach($e as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$Ca=convert_field($n[$x]);if($Ca)$I .=", $Ca AS ".idf_escape($x);}return$I;}function cookie_path(){return strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),array(";"=>"%3B",","=>"%2C"));}function cookie($C,$Y,$Tf=2592000){header("Set-Cookie: $C=".rawurlencode($Y).($Tf?"; expires=".gmdate("D, d M Y H:i:s",time()+$Tf)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"").($C=="adminer_import"?"":"; HttpOnly")."; SameSite=lax",false);}function get_url($Pl,$Nb){$http_response_header=null;$bd=array();set_error_handler(function($ad,$l)use(&$bd){$bd[]=preg_replace('~^file_get_contents\([^)]*\):\s*~','',$l);return true;});$I=file_get_contents($Pl,false,$Nb);restore_error_handler();$xe=(function_exists('http_get_last_response_headers')?http_get_last_response_headers():$http_response_header);return array($I,(preg_match('~^HTTP/[\d.]+ (\d+)~',idx($xe,0,''),$A)?$A[1]:''),(array)$xe,($I===false?implode("\n",$bd):''),);}function get_settings($Qb){parse_str($_COOKIE[$Qb],$Wj);return$Wj;}function get_setting($x,$Qb="adminer_settings",$k=null){return idx(get_settings($Qb),$x,$k);}function save_settings(array$Wj,$Qb="adminer_settings"){$Y=http_build_query($Wj+get_settings($Qb));cookie($Qb,$Y);$_COOKIE[$Qb]=$Y;}function restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==PHP_SESSION_NONE))session_start();}function stop_session($Od=false){$Sl=ini_bool("session.use_cookies");if(!$Sl||$Od){session_write_close();if($Sl&&ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function auth_url($gm,$N,$V,$j=null){$Ol=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($gm=='mssql'||$gm=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Ol,$A);return"$A[1]?".(sid()?SID."&":"").($_GET["ext"]?"ext=".url_escape($_GET["ext"])."&":"").($gm!="server"||$N!=""?url_escape($gm)."=".url_escape($N)."&":"")."username=".url_escape($V).($j!=""?"&db=".url_escape($j):"").($A[2]?"&$A[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($ag,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($ag!==null?$ag:$_SERVER["REQUEST_URI"]))][]=$B;}if($ag!==null){if($ag=="")$ag=".";header("Location: $ag");exit;}}function query_redirect($G,$ag,$B,$aj=true,$jd=true,$ud=false,$bl=""){if($jd){$qk=microtime(true);$ud=!connection()->query($G);$bl=format_time($qk);}$jk=($G?adminer()->messageQuery($G,$bl,$ud):"");if($ud){adminer()->error .=adminer()->error().$jk.script("messagesPrint();")."
";return false;}if($aj)redirect($ag,$B.$jk);return true;}class Queries{static$queries=array();static$start=0;}function queries($G){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$G:(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";");return connection()->query($G);}function apply_queries($G,array$T,$dd='Adminer\table'){foreach($T as$R){if(!queries("$G ".$dd($R)))return false;}return true;}function queries_redirect($ag,$B,$aj){$Ui=implode("\n",Queries::$queries);$bl=format_time(Queries::$start);return query_redirect($Ui,$ag,$B,$aj,false,!$aj,$bl);}function format_time($qk){return lang(1,max(0,microtime(true)-$qk));}function relative_uri($Ol=''){return preg_replace_callback('~^[^?]*~',function($A){return str_replace(":","%3A",$A[0]);},preg_replace('~^[^?]*/([^?]*)~','\1',($Ol?:$_SERVER["REQUEST_URI"])));}function remove_from_uri($bi=""){return substr(preg_replace("~(?<=[?&])($bi".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function get_files($C,$jc=false){$Bd=$_FILES[$C];if(!$Bd)return null;foreach($Bd as$x=>$X)$Bd[$x]=(array)$X;$I=array();foreach($Bd["error"]as$x=>$l){if($l)return$l;$o=$Bd["name"][$x];$jl=$Bd["tmp_name"][$x];$Lb=file_get_contents($jc&&preg_match('~\.gz$~',$o)?"compress.zlib://$jl":$jl);if($jc){$qk=substr($Lb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$qk))$Lb=iconv("utf-16","utf-8",$Lb);elseif($qk=="\xEF\xBB\xBF")$Lb=substr($Lb,3);}$I[]=array($o,$Lb);}return$I;}function get_file($x,$jc=false,$pc=""){$Ed=get_files($x,$jc);if(!is_array($Ed))return$Ed;$I='';foreach($Ed as$Bd){$Lb=$Bd[1];$I .=$Lb;if($pc)$I .=(preg_match("($pc\\s*\$)",$Lb)?"":$pc)."\n\n";}return$I;}function upload_error($l){$qg=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?lang(2).($qg?" ".lang(3,$qg):""):lang(4));}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(5)),preg_split('~~u',lang(6),-1,PREG_SPLIT_NO_EMPTY));}function format_status(array$S,$x){$X=idx($S,$x,'?');if(!is_numeric($X))return h($X);if($X<0)return'?';$za=($x=="Rows"&&(JUSH=="sqlite"||$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")));return($za?"~ ":"").format_number($X);}function friendly_url($X){return preg_replace('~\W~i','-',$X);}function table_status1($R,$vd=false){$I=table_status($R,$vd);return($I?reset($I):array("Name"=>$R));}function column_foreign_keys($R){$I=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$I[$X][]=$p;}return$I;}function fields_from_edit(){$I=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$I[$C]=array("field"=>$C,"full_type"=>"","type"=>"","privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>true,"auto_increment"=>($C==driver()->primary),);}return$I;}function dump_headers($Ie,$Ng=false){$I=adminer()->dumpHeaders($Ie,$Ng);$Wh=$_POST["output"];if($Wh!="text"||$I=="tar"){$Cb=($Wh!="text"&&$Wh!="file"&&preg_match('~^[0-9a-z]+$~',$Wh)?".$Wh":"");header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Ie).".$I$Cb");}session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$I;}function dump_csv(array$J){$zl=$_POST["format"]=="tsv";foreach($J as$x=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($zl?'\t':'[,;]|^$').'~',$X))$J[$x]='"'.str_replace('"','""',$X).'"';}echo implode(($_POST["format"]=="csv"?",":($zl?"\t":";")),$J)."\r\n";}function parse_csv($Yb,$Lj){$I=array();preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Yb,$gg);foreach($gg[0]as$J){preg_match_all("~((?>\"[^\"]*\")+|[^$Lj]*)$Lj~",$J.$Lj,$hg);$I[]=$hg[1];}return$I;}function csv_value($X){return(preg_match('~^".*"$~s',$X)?str_replace('""','"',substr($X,1,-1)):$X);}function apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function get_temp_dir(){return ini_get("upload_tmp_dir")?:sys_get_temp_dir();}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,$cc){rewind($q);fwrite($q,$cc);ftruncate($q,strlen($cc));file_unlock($q);}function file_unlock($q){flock($q,LOCK_UN);fclose($q);}function first(array$Ba){return reset($Ba);}function password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$I=stream_get_contents($q);if(!$I){$I=rand_string();file_write_unlock($q,$I);}else file_unlock($q);return$I;}function rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function select_value($X,$_,array$m,$Zk){if(is_array($X)){$I="";if(array_filter($X,'is_array')==array_values($X)){$Af=array();foreach($X as$W)$Af+=array_fill_keys(array_keys($W),null);foreach(array_keys($Af)as$zf)$I .="".h($zf);foreach($X as$W){$I .="";foreach(array_merge($Af,$W)as$Zl)$I .="".select_value($Zl,$_,$m,$Zk);}}else{foreach($X as$zf=>$W)$I .="".($X!=array_values($X)?"".h($zf):"")."".select_value($W,$_,$m,$Zk);}return"$I
";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$X=driver()->value($X,$m);$I=adminer()->editVal($X,$m);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Zk!=""&&is_shortable($m))$I=shorten_utf8($I,max(0,+$Zk));else$I=h($I);}return adminer()->selectVal($I,$_,$m,$X);}function is_blob(array$m){return preg_match('~blob|bytea|raw|file'.(JUSH=="mssql"?'|binary|image':'').'~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),lang(7),array()));}function is_mail($Rc){$Ea='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$si="$Ea+(\\.$Ea+)*@($Ec?\\.)+$Ec";return is_string($Rc)&&preg_match("(^$si(,\\s*$si)*\$)i",$Rc);}function is_url($Q){$Ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return preg_match("~^((https?):)?//($Ec?\\.)+$Ec(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function is_shortable(array$m){return!preg_match('~'.number_type().'|date|time|year~',$m["type"]);}function host_port($N){return(preg_match('~^(:([^:].*)|(\[(.+)\]|(([^:]+://)?[^:]+))(:(\d+))?)$~',$N,$A)?array($A[4].$A[5],$A[2].$A[8]):array($N,''));}function count_rows($R,array$Z,$qf,array$ge){$G=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($qf&&(JUSH=="sql"||count($ge)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$ge).")$G":"SELECT COUNT(*)".($qf?" FROM (SELECT 1$G GROUP BY ".implode(", ",$ge).") x":$G));}function slow_query($G){$j=adminer()->database();$cl=adminer()->queryTimeout();$bk=driver()->slowQuery($G,$cl);$g=null;if(!$bk&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$Bf=get_val(connection_id(),0,$g);echo script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Bf&token=".get_token()."'); }, 1000 * $cl);");}}ob_flush();flush();$I=@get_key_vals(($bk?:$G),$g,false);if($g){echo script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function get_token(){$Xi=rand(1,1e6);return($Xi^$_SESSION["token"]).":$Xi";}function verify_token(){list($kl,$Xi)=explode(":",$_POST["token"]);return($Xi^$_SESSION["token"])==$kl&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"));}function compress_alphabet(){return strtr(implode(range('"','~')),"'\\","!\n");}function decompress_string($Q,$vc=""){$xa=array_flip(str_split(compress_alphabet()));$y=strlen($Q);$cm=($y?13*($y-1)/2-$xa[$Q[0]]:0);$Sa="";$nj=0;$oj=0;for($s=1;$s<$y;$s+=2){$nj=($nj<<13)+$xa[$Q[$s]]*93+$xa[$Q[$s+1]];$oj+=13;while($oj>=8&&$cm>=8){$oj-=8;$cm-=8;$Sa .=chr($nj>>$oj);$nj&=(1<<$oj)-1;}}if($Sa=="")return"";if($vc!=""&&function_exists('inflate_init'))return inflate_add(inflate_init(ZLIB_ENCODING_RAW,array('dictionary'=>$vc)),$Sa,ZLIB_FINISH);return($vc==""&&function_exists('gzinflate')?gzinflate($Sa):inflate($Sa,$vc));}function inflate($Sa,$vc=""){$Qf=array(3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258);$Rf=array(0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0);$zc=array(1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577);$Ac=array(0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13);$I=$vc;$F=0;do{$Gd=inflate_bits($Sa,$F,1);$U=inflate_bits($Sa,$F,2);if(!$U){$F=($F+7)&~7;$y=inflate_bits($Sa,$F,16);$F+=16;$I .=substr($Sa,$F>>3,$y);$F+=$y<<3;}else{if($U==1){$Yf=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$Bc=array_fill(0,30,5);}else{$Xf=inflate_bits($Sa,$F,5)+257;$_c=inflate_bits($Sa,$F,5)+1;$Ih=array(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);$Cg=array_fill(0,19,0);$Bg=inflate_bits($Sa,$F,4)+4;for($s=0;$s<$Bg;$s++)$Cg[$Ih[$s]]=inflate_bits($Sa,$F,3);$Dg=inflate_table($Cg);$Sf=array();while(count($Sf)<$Xf+$_c){$Ak=inflate_symbol($Sa,$F,$Dg);if($Ak==16)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,2)+3,end($Sf)));elseif($Ak==17)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,3)+3,0));elseif($Ak==18)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,7)+11,0));else$Sf[]=$Ak;}$Yf=array_slice($Sf,0,$Xf);$Bc=array_slice($Sf,$Xf);}$Zf=inflate_table($Yf);$Dc=inflate_table($Bc);while(($Ak=inflate_symbol($Sa,$F,$Zf))!=256){if($Ak<256)$I .=chr($Ak);else{$y=$Qf[$Ak-257]+inflate_bits($Sa,$F,$Rf[$Ak-257]);$Cc=inflate_symbol($Sa,$F,$Dc);$ph=strlen($I)-$zc[$Cc]-inflate_bits($Sa,$F,$Ac[$Cc]);for($s=0;$s<$y;$s++)$I .=$I[$ph+$s];}}}}while(!$Gd);return($vc==""?$I:substr($I,strlen($vc)));}function inflate_bits($Sa,&$F,$Sb){$I=0;for($s=0;$s<$Sb;$s++){$I+=((ord($Sa[$F>>3])>>($F&7))&1)<<$s;$F++;}return$I;}function inflate_table(array$Sf){$R=array();$rb=0;for($Ta=1;$Ta<=max($Sf);$Ta++){foreach($Sf as$Ak=>$y){if($y==$Ta){$R[$Ta][$rb]=$Ak;$rb++;}}$rb<<=1;}return$R;}function inflate_symbol($Sa,&$F,array$R){$rb=0;$Ta=0;do{$rb=($rb<<1)+inflate_bits($Sa,$F,1);$Ta++;}while(!isset($R[$Ta][$rb]));return$R[$Ta][$rb];}function script($fk,$nl="\n"){return"$fk$nl";}function script_src($Pl,$mc=false){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function on($ed,$oe,$_a=null){$Aa=array();foreach(array_slice(func_get_args(),2)as$X)$Aa[]=json_encode($X,256);return" data-on$ed='".str_replace(array('&','<',"'"),array('&','<','''),"$oe(".implode(", ",$Aa).")")."'";}function input_hidden($C,$Y=""){return"\n";}function input_token(){return input_hidden("token",get_token());}function target_blank(){return' target="_blank" rel="noreferrer noopener"';}function h($Q){return str_replace(array('&','<','"',"'","\0"),array('&','<','"',''','�'),$Q);}function nl_br($Q){return str_replace("\n","
",$Q);}function checkbox($C,$Y,$kb,$Ff="",$c="",$pb="",$Hf=""){$I="";return($Ff!=""?"$I".h($Ff)."":$I);}function optionlist($Gh,$Ij=null,$Tl=false){$I="";foreach($Gh as$zf=>$W){$Hh=array($zf=>$W);if(is_array($W)){$I .='';$Hh=$W;}foreach($Hh as$x=>$X)$I .=''.h($X);if(is_array($W))$I .='';}return$I;}function html_select($C,array$Gh,$Y="",$c="",$Hf=""){static$Ff=0;$Gf="";if(!$Hf&&substr($Gh[""],0,1)=="("){$Ff++;$Hf="label-$Ff";$Gf="

","$Pf","","
\n";}function selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",lang(63),$Z);foreach($w as$s=>$v){if($v["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$v["columns"])).") AGAINST"," ",(JUSH=='sql'?checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"):''),"
\n";}$Dh=adminer()->operators();foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$Dh)))echo"
".select_input(" name='where[$s][col]' data-default=''".on('change',($X?'selectFieldChange':'selectAddRow')),$e,$X["col"],"(".lang(64).")"),html_select("where[$s][op]",$Dh,$X["op"]," data-default='".h(first($Dh))."'".on('change','selectFirstChange')),"","
\n";}echo"\n";}function selectOrderPrint(array$Ih,array$e,array$w){print_fieldset("sort",lang(65),$Ih);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"
".select_input(" name='order[$s]' data-default=''".on('change','selectFieldChange'),$e,$X),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),lang(66))."
\n";$s++;}}echo"
".select_input(" name='order[$s]' data-default=''".on('change','selectAddRow'),$e),checkbox("desc[$s]",1,false,lang(66))."
\n","\n";}function selectLimitPrint($z){echo"
".lang(67)."
","","
\n";}function selectLengthPrint($Zk){echo"
".lang(68)."
","","
\n";}function selectActionPrint(array$w){echo"
".lang(69)."
",""," ","\n","const indexColumns = ";$e=array();foreach($w as$v){$ac=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$ac)$e[$ac]=1;}$e[""]=1;foreach($e as$x=>$X)json_row($x);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$Sc,array$e){}function selectColumnsProcess(array$e,array$w){$M=array();$ge=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$ge[]=$M[$x];}}return array($M,$ge);}function selectSearchProcess(array$n,array$w){$I=array();foreach($w as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$I[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}$Dh=adminer()->operators();foreach((array)$_GET["where"]as$x=>$X){$X+=array("col"=>"","op"=>first($Dh),"val"=>"");$_GET["where"][$x]=$X;$sb=$X["col"];if("$sb$X[val]"!=""&&in_array($X["op"],$Dh)){if($X["op"]=="SQL"&&(!$_POST||!verify_token()))SqlDb::$untrusted=true;$Eb=array();foreach(($sb!=""?array($sb=>$n[$sb]):$n)as$C=>$m){$Gi="";$Db=" $X[op]";if(preg_match('~IN$~',$X["op"]))$Db .=" ".($X["val"]!=""?process_in($X["val"]):"(NULL)");elseif($X["op"]=="SQL")$Db=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$Db=" $A[1] ".q("%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Gi="$X[op](".q($X["val"]).", ";$Db=")";}elseif(!preg_match('~NULL$~',$X["op"]))$Db .=" ".q($X["val"]);if($sb!=""||is_searchable($m,$X))$Eb[]=$Gi.driver()->convertSearch(idf_escape($C),$X,$m).$Db;}$I[]=(count($Eb)==1?$Eb[0]:($Eb?"(".implode(" OR ",$Eb).")":"1 = 0"));}}return$I;}function selectOrderProcess(array$n,array$w){$I=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC".(JUSH=='pgsql'&&idx($n[$X],"null")?" NULLS LAST":""):"");}return$I;}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$Qd){return false;}function selectQueryBuild(array$M,array$Z,array$ge,array$Ih,$z,$D){return"";}function messageQuery($G,$bl,$ud=false){restart_session();$Be=&get_session("queries");if(!idx($Be,$_GET["db"]))$Be[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$Be[$_GET["db"]][]=array($G,time(),$bl);$lk="sql-".count($Be[$_GET["db"]]);$I="".lang(71)." ".copy_icon()."\n";if(!$ud&&($nm=driver()->warnings())){$t="warnings-".count($Be[$_GET["db"]]);$I="".lang(53).", $I\n";}return" ".@date("H:i:s").""." $I';}function error(){return error();}function editRowPrint($R,array$n,$J,$Ll,$G='',$bl=''){echo($G!=""?"

".h(str_replace("\n"," ",$G))." ($bl)\n":"");}function editFunctions(array$m){$I=($m["null"]?"NULL/":"");$ue=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$ae){if(!$x||(!isset($_GET["call"])&&$ue)){foreach($ae as$si=>$X){if(!$si||preg_match("~$si~",$m["type"]))$I .="/$X";}}if($x&&$ae&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$I .="/SQL";}if($m["auto_increment"]&&!$ue)$I=lang(58);return explode("/",$I);}function editInput($R,array$m,$c,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$c,$m,$Y,"NULL");return"";}function editHint($R,array$m,$Y){return"";}function processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$I="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$I=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$I=idf_escape($C)." $r $I";elseif(preg_match('~^[+-] interval$~',$r))$I=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$I="$r(".idf_escape($C).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$I="$r($I)";return unconvert_field($m,$I);}function dumpOutput(){$I=array('text'=>lang(72),'file'=>lang(73));if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpPrint(){}function dumpDatabase($j){}function dumpTable($R,$vk,$uf=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($vk)dump_csv(array_keys(fields($R)));}else{if($uf==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$vk);set_utf8mb4($h);if($vk&&$h){if(($vk=="DROP+CREATE"&&!function_exists('Adminer\drop_sql'))||$uf==1)echo"DROP ".($uf==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($uf==1)$h=remove_definer($h);echo"$h;\n\n";}}}function dumpData($R,$vk,$G,array$M=array(),array$Z=array(),array$ge=array(),array$Ih=array()){if($vk){$mg=(JUSH=="sqlite"?0:1048576);$n=array();$Ke=false;if($_POST["format"]=="sql"){if($vk=="TRUNCATE+INSERT"&&!function_exists('Adminer\truncate_all_sql'))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";$Ke=true;break;}}}}$H=($G!=""?connection()->query($G,1):driver()->select($R,($M?:array("*")),$Z,$ge,$Ih,0));if($H){$gf="";$Xa="";$Af=array();$be=array();$xk="";$xd=($R!=''?'fetch_assoc':'fetch_row');$Sb=0;while($J=$H->$xd()){if(!$Af){$em=array();foreach($J as$X){$m=$H->fetch_field();if(idx($n[$m->name],'generated')){$be[$m->name]=true;continue;}$Af[]=$m->name;$x=idf_escape($m->name);$em[]="$x = VALUES($x)";}$xk=($vk=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$em):"").";\n";}if($_POST["format"]!="sql"){if($vk=="table"){dump_csv($Af);$vk="INSERT";}dump_csv($J);}else{if(!$gf)$gf="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Af)).") VALUES";foreach($J as$x=>$X){if($be[$x]){unset($J[$x]);continue;}$m=$n[$x];$J[$x]=($X===null?"NULL":($X===false?0:unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:(!is_blob($m)||is_utf8($X)?q($X):driver()->quoteBinary($X)))));}$zj=($mg?"\n":" ")."(".implode(",\t",$J).")";if(!$Xa)$Xa=$gf.$zj;elseif(JUSH=='mssql'?$Sb%1000!=0:strlen($Xa)+4+strlen($zj)+strlen($xk)<$mg)$Xa .=",$zj";else{echo$Xa.$xk;$Xa=$gf.$zj;}}$Sb++;}if($Xa)echo$Xa.$xk;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Ke)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function dumpFilename($Ie){return friendly_url($Ie!=""?$Ie:(SERVER?:"localhost"));}function dumpHeaders($Ie,$Ng=false){$Wh=$_POST["output"];$pd=(preg_match('~sql~',$_POST["format"])?"sql":($Ng?"tar":"csv"));header("Content-Type: ".($Wh=="gz"?"application/x-gzip":($pd=="tar"?"application/x-tar":($pd=="sql"||$Wh!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Wh=="gz"){ob_start(function($Q){return gzencode($Q);},1e6);}return$pd;}function dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function importServerPath(){return"adminer.sql";}function importPrint(){}function importProcess(){return false;}function homepage(){echo'

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

\n";switch_lang();if($Hg=="auth"){$Wh="";foreach((array)$_SESSION["pwds"]as$gm=>$Tj){foreach($Tj as$N=>$Yl){$C=h(get_setting("vendor-$gm-$N")?:get_driver($gm));foreach($Yl as$V=>$E){if($C&&$E!==null){$ic=$_SESSION["db"][$gm][$N][$V];foreach(($ic?array_keys($ic):array(""))as$j)$Wh .="
  • ($C) ".h("$V@").($N!=""?adminer()->serverName($N):"").h($j!=""?" - $j":"")."\n";}}}}if($Wh)echo"
      \n$Wh
    \n";}else{$T=array();if($_GET["ns"]!==""&&!$Hg&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Hg);$la=array();if(DB==""||!$Hg){if(support("sql")){$la['sql']="".lang(71)."";$la['import']="".lang(82)."";}$la['dump']="".lang(83)."";}$Pe=$_GET["ns"]!==""&&!$Hg&&DB!="";if($Pe&&function_exists('Adminer\alter_table'))$la['create']='".lang(84)."";$la=adminer()->menuActions($la,$Hg);echo($la?"

    ".lang(12)."

    \n";}}}function syntaxHighlighting(array$T){echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=6.0.1",true);$Jg=preg_replace('~<(?=/script)~i','<\\',Driver::jushModule());echo($Jg?script("addEventListener('DOMContentLoaded', () => {\n$Jg\n});"):"");if(support("sql")){echo"\n";if($T){$Wf=array();foreach($T as$R=>$U)$Wf[]=js_escape_re($R);echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b(? { autocompleter = $Ia; });\n":"");}}echo"\n";}echo script("syntaxHighlighting('".(preg_match('~^\d\.?\d~',connection()->server_info,$A)?$A[0]:"")."', '".connection()->flavor."');");}function databasesPrint($Hg){if(support("single_db"))return;$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"
    \n

    \n";hidden_fields_get();$gc=on('mousedown','dbMouseDown').on('change','dbChange');echo"","\n";if(support("scheme")){if($Hg!="db"&&DB!=""&&connection()->select_db(DB)){echo"
    ";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo input_hidden($X);break;}}echo"

    \n";}function menuActions(array$la,$Hg){return$la;}function tablesPrint(array$T){echo"
      ";foreach($T as$R=>$P){$R="$R";$C=adminer()->tableName($P);if($C!=""&&!$P["partition"])echo'
    • ".lang(87)." ",(support("table")||support("indexes")?'$C":"$C")."\n";}echo"
    \n";}function showVariables(){return show_variables();}function showStatus(){return show_status();}function processList(){return process_list();}function killProcess($t){return kill_process($t);}}class Plugins{private static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$drivers=array();var$driverFiles=array();var$error='';private$hooks=array();function __construct($zi){$Gc=SqlDriver::$drivers;$_e=" href='https://www.adminer.org/plugins/#use'".target_blank();if($zi===null){$zi=array();$Qa="adminer-plugins";if(is_dir($Qa)){foreach(glob("$Qa/*.php")as$o){$Cd=SqlDriver::$drivers;$this->includeOnce($o);foreach(array_diff_key(SqlDriver::$drivers,$Cd)as$t=>$C)$this->driverFiles[$t]=$o;}}if(file_exists("$Qa.php")){$Re=$this->includeOnce("$Qa.php");if(is_array($Re)){foreach($Re as$x=>$wi)$zi[is_object($wi)?get_class($wi):$x]=$wi;}else$this->error .=lang(88,"$Qa.php",$_e)."
    ";}foreach(get_declared_classes()as$pb){if(!$zi[$pb]&&(preg_match('~^Adminer\w~i',$pb)||is_subclass_of($pb,'Adminer\Plugin'))){$fj=new \ReflectionClass($pb);$Kb=$fj->getConstructor();if($Kb&&$Kb->getNumberOfRequiredParameters())$this->error .=lang(89,$_e,"$pb","$Qa.php")."
    ";else$zi[$pb]=new$pb;}}}$lf=array_filter($zi,function($wi){return!is_object($wi);});if($lf){$this->error .=lang(90,$_e)."
    ";$zi=array_diff_key($zi,$lf);}$this->drivers=array_diff_key(SqlDriver::$drivers,$Gc);$this->plugins=$zi;$pa=new Adminer;$zi[]=$pa;$fj=new \ReflectionObject($pa);foreach($fj->getMethods()as$Eg){foreach($zi as$wi){$C=$Eg->getName();if(method_exists($wi,$C))$this->hooks[$C][]=$wi;}}}function includeOnce($o){return include_once"./$o";}static function checksum($o){$Bd=str_replace("\r","",file_get_contents($o));$Bd=preg_replace('~\n\tprotected \$translations = array\(.*?\n\t\);~s','',$Bd);return dechex(crc32($Bd));}function checksums(){$Dd=array_values($this->driverFiles);foreach($this->plugins as$wi){$fj=new \ReflectionObject($wi);$Dd[]=$fj->getFileName();}$I=array();foreach($Dd as$o)$I[basename($o,'.php')]=self::checksum($o);return$I;}static function officialChecksums(){return array('adminer.js'=>'a0599090','backward-keys'=>'ed1ef78f','before-unload'=>'2a613523','config'=>'722eb4af','dark-switcher'=>'3d490dea','database-hide'=>'e304a899','designs'=>'d1515f34','dump-alter'=>'896b579e','dump-bz2'=>'f0d0e336','dump-date'=>'adc7f1c7','dump-json'=>'767dd321','dump-xml'=>'4fc3cd60','dump-zip'=>'93817d96','edit-foreign'=>'72ad1562','edit-textarea'=>'a24c3cc','editor-setup'=>'a7dc3a37','editor-views'=>'5c12b185','enum-option'=>'96ee8718','file-upload'=>'10add0e8','foreign-system'=>'ebb4c654','frames'=>'b0e1d11a','highlight-codemirror'=>'f4baf411','highlight-monaco'=>'edd1b0af','highlight-prism'=>'267948e5','import-csv'=>'d429c77','login-ip'=>'4d174fea','login-otp'=>'5b5a68af','login-passkey'=>'f69f2f06','login-password-less'=>'e150daac','login-reverse-proxy'=>'24558ea2','login-servers'=>'19c42e45','login-ssl'=>'6ed147bc','login-table'=>'811f8cef','menu-links'=>'7f3d5020','remote-color'=>'86a39047','row-numbers'=>'eec8698c','select-email'=>'f84fbd2c','select-image'=>'f55c0231','slugify'=>'dec64713','sql-gemini'=>'c60ab309','sql-log'=>'8e435000','table-indexes-structure'=>'a90cc0c9','table-structure'=>'a8458e02','tables-filter'=>'ec2bcd6e','timeout'=>'97321caf','version-github'=>'627cadf9','version-noverify'=>'966937e9','clickhouse'=>'b0f6631c','elastic'=>'27503b8b','firebird'=>'5499d1a','igdb'=>'59055fd3','imap'=>'ac143217','mongo'=>'c3b8f5a4','redis'=>'ba56e72e','simpledb'=>'92f050ad',);}function __call($C,array$ci){$Aa=array();foreach($ci as$x=>$X)$Aa[]=&$ci[$x];$I=null;foreach($this->hooks[$C]as$wi){$Y=call_user_func_array(array($wi,$C),$Aa);if($Y!==null){if(!self::$append[$C])return$Y;$I=$Y+(array)$I;}}return$I;}}abstract class Plugin{protected$translations=array();function description(){return$this->lang('');}function screenshot(){return"";}protected function lang($u,$ih=null){$Aa=func_get_args();$Aa[0]=idx($this->translations[LANG],$u)?:$u;return call_user_func_array('Adminer\lang_format',$Aa);}}class Password{private$password_hash;private$password_matches=null;function __construct($oi){$this->password_hash=$oi;}function description(){return lang(91);}function credentials(){$E=get_password();return array(SERVER,$_GET["username"],($this->passwordMatches($E)&&!password_required()?"":$E));}function login($bg,$E){if($this->passwordMatches($E))return true;}protected function passwordMatches($E){if($this->password_matches===null)$this->password_matches=(function_exists('password_verify')&&password_verify(strval($E),$this->password_hash));return$this->password_matches;}}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($N,$V,$E){mysqli_report(MYSQLI_REPORT_OFF);list($Ee,$_i)=host_port($N);$pk=adminer()->connectSsl();$Ul=($pk&&($pk['key']||$pk['cert']||$pk['ca']||isset($pk['verify'])));if($Ul)$this->ssl_set($pk['key'],$pk['cert'],$pk['ca'],'','');$I=@$this->real_connect(($N!=""?$Ee:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$E!=""?$E:ini_get("mysqli.default_pw")),null,(is_numeric($_i)?intval($_i):ini_get("mysqli.default_port")),(is_numeric($_i)?null:$_i),($Ul?($pk['verify']!==false?MYSQLI_CLIENT_SSL:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($I?'':$this->error);}function set_charset($fb){if(parent::set_charset($fb))return true;parent::set_charset('utf8');return$this->query("SET NAMES $fb");}function next_result(){return self::more_results()&&parent::next_result();}function quote($Q){return"'".$this->escape_string($Q)."'";}function inTransaction(){return false;}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class Db extends SqlDb{private$link;function attach($N,$V,$E){if(ini_bool("mysql.allow_local_infile"))return lang(92,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),($N.$V!=""?$V:ini_get("mysql.default_user")),($N.$V.$E!=""?$E: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($fb){return mysql_set_charset($fb,$this->link)||mysql_set_charset('utf8',$this->link);}function quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function select_db($fc){return mysql_select_db($fc,$this->link);}function query($G,$Cl=false){$H=@($Cl?mysql_unbuffered_query($G,$this->link):mysql_query($G,$this->link));$this->error="";if(!$H){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return true;}return new Result($H);}}class Result{var$num_rows;private$result;private$offset=0;function __construct($H){$this->result=$H;$this->num_rows=mysql_num_rows($H);}function fetch_assoc(){return mysql_fetch_assoc($this->result);}function fetch_row(){return mysql_fetch_row($this->result);}function fetch_field(){$I=mysql_fetch_field($this->result,$this->offset++);$I->orgtable=$I->table;$I->charsetnr=($I->blob?63:0);return$I;}}}elseif(extension_loaded("pdo_mysql")){class Db extends PdoDb{var$extension="PDO_MySQL";function attach($N,$V,$E){$Gh=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);if(isset($_GET["select"]))$Gh[\PDO::MYSQL_ATTR_MULTI_STATEMENTS]=false;$pk=adminer()->connectSsl();if($pk){if($pk['key'])$Gh[\PDO::MYSQL_ATTR_SSL_KEY]=$pk['key'];if($pk['cert'])$Gh[\PDO::MYSQL_ATTR_SSL_CERT]=$pk['cert'];if($pk['ca'])$Gh[\PDO::MYSQL_ATTR_SSL_CA]=$pk['ca'];if(isset($pk['verify']))$Gh[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$pk['verify'];}list($Ee,$_i)=host_port($N);return$this->dsn("mysql:charset=utf8".($Ee!=""?";host=$Ee":'').($_i?(is_numeric($_i)?";port=":";unix_socket=").$_i:""),$V,$E,$Gh);}function set_charset($fb){return$this->query("SET NAMES $fb");}function select_db($fc){return$this->query("USE ".idf_escape($fc));}function query($G,$Cl=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Cl);return parent::query($G,$Cl);}}}class Driver extends SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");var$partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");static function connect($N,$V,$E){$f=parent::connect($N,$V,$E);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($zj=iconv("windows-1252","utf-8//IGNORE",$f))>strlen($f))$f=$zj;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(28)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(29)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(30)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(93)=>array("enum"=>65535,"set"=>64),lang(31)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(33)=>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(30)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(30)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$f)){$this->types[lang(32)]["inet6"]=39;if(min_version('','10.10',$f))$this->types[lang(32)]["inet4"]=15;}if(min_version(9,11.7,$f))$this->types[lang(28)]["vector"]=16383;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''"):($m["type"]=="vector"?"".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."":(preg_match("~geom|point|linestring|polygon~",$m["type"])?"GeomFromText":""))));}function insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function insertUpdate($R,array$K,array$Ki){$e=array_keys(reset($K));$Gi="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$em=array();foreach($e as$x)$em[$x]="$x = VALUES($x)";$xk="\nON DUPLICATE KEY UPDATE ".implode(", ",$em);$em=array();$y=0;foreach($K as$O){$Y="(".implode(", ",$O).")";if($em&&(strlen($Gi)+$y+strlen($Y)+strlen($xk)>1e6)){if(!queries($Gi.implode(",\n",$em).$xk))return false;$em=array();$y=0;}$em[]=$Y;$y+=strlen($Y)+2;}return queries($Gi.implode(",\n",$em).$xk);}function slowQuery($G,$cl){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$cl FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($cl*1000).") */ $A[2]";}}function convertColumn($u,array$m){if(preg_match("~binary~",$m["type"]))return"HEX($u)";if($m["type"]=="bit")return"BIN($u + 0)";if($m["type"]=="vector")return($this->conn->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."($u)";if(preg_match("~geom|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT($u)";return"";}function convertSearch($u,array$X,array$m){return($this->convertColumn($u,$m)?:(preg_match('~'.text_type().'~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u));}function typeName(\stdClass$m){$Bl=array("decimal","tinyint","smallint","int","float","double",7=>"timestamp","bigint","mediumint","date","time","datetime","year",15=>"varchar","bit",242=>"vector",245=>"json","decimal","enum","set","tinytext","mediumtext","longtext","text","varchar","char","geometry",);$I=idx($Bl,$m->type,"");return parent::typeName($m)?:($m->charsetnr==63?str_replace(array("text","varchar","char"),array("blob","varbinary","binary"),$I):$I);}function quoteBinary($zj){return"X".q(bin2hex($zj));}function warnings(){$H=$this->conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();print_select_result($H);return ob_get_clean();}}function tableHelp($C,$uf=false){$dg=($this->conn->flavor=='maria');if(information_schema(DB))return strtolower(str_replace("_","-",DB)."-".($dg?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="sys")return($dg?"sys-schema/":strtolower("sys-".str_replace("_","-",preg_replace('~^x\$~','',$C)).".html"));if(DB=="mysql")return($dg?"mysql$C-table/":"system-schema.html");}function partitionsInfo($R){$Wd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$H=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Wd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=($H?$H->fetch_row():null);if(!$J)return array();$I=array();list($I["partition_by"],$I["partition"],$I["partitions"])=$J;$li=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Wd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($li);$I["partition_values"]=array_values($li);return$I;}function hasCStyleEscapes(){static$ab;if($ab===null){$mk=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$ab=(strpos($mk,'NO_BACKSLASH_ESCAPES')===false);}return$ab;}function lineComment(){return"#|-- ";}function engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function indexAlgorithms(array$Ck){return(preg_match('~^(MEMORY|NDB)$~',$Ck["Engine"])?array("HASH","BTREE"):array());}}function idf_escape($u){return"`".str_replace("`","``",$u)."`";}function table($u){return idf_escape($u);}function get_databases($Nd){$I=get_session("dbs");if($I===null){$G="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$qk=microtime(true);$I=($Nd?slow_query($G):get_vals($G));if(microtime(true)-$qk>0.1){restart_session();set_session("dbs",$I);stop_session();}}return$I;}function limit($G,$Z,$z,$ph=0,$Lj=" "){return" $G$Z".($z?$Lj."LIMIT $z".($ph?" OFFSET $ph":""):"");}function limit1($R,$G,$Z,$Lj="\n"){return limit($G,$Z,1,0,$Lj);}function db_collation($j,array$vb){$I=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$I=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$I=$vb[$A[1]][-1];return$I;}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){$I=array();foreach($i as$j)$I[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$I;}function table_status($C="",$vd=false){$I=array();foreach(get_rows($vd?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($C!="")$J["Name"]=$C;$I[$J["Name"]]=$J;}return$I;}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 parse_type($Yd){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$Yd,$A);return array($A[1],$A[2],ltrim($A[3].$A[4]));}function fields($R){$dg=(connection()->flavor=='maria');$I=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$J){$m=$J["COLUMN_NAME"];$U=$J["COLUMN_TYPE"];$ce=$J["GENERATION_EXPRESSION"];$sd=$J["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$sd,$be);list($Al,$y,$Jl)=parse_type($U);$k=$J["COLUMN_DEFAULT"];if($k!=""){$tf=preg_match('~text|json~',$Al);if(!$dg&&$tf)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($dg||$tf){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$dg&&preg_match('~binary~',$Al)&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$I[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Al,"length"=>$y,"unsigned"=>$Jl,"default"=>($be?($dg?$ce:stripslashes($ce)):$k),"null"=>($J["IS_NULLABLE"]=="YES"),"auto_increment"=>($sd=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$sd,$A)?$A[1]:""),"collation"=>$J["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$J[PRIVILEGES],where,order")),"comment"=>$J["COLUMN_COMMENT"],"primary"=>($J["COLUMN_KEY"]=="PRI"),"generated"=>($be[1]=="PERSISTENT"?"STORED":$be[1]),);}return$I;}function indexes($R,$g=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$J){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$J["Index_type"])?$J["Index_type"]:"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;$I[$C]["algorithm"]=$J["Index_type"];}return$I;}function foreign_keys($R){static$si='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$Tb=get_val("SHOW CREATE TABLE ".table($R),1);if($Tb){preg_match_all("~CONSTRAINT ($si) FOREIGN KEY ?\\(((?:$si,? ?)+)\\) REFERENCES ($si)(?:\\.($si))? \\(((?:$si,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Tb,$gg,PREG_SET_ORDER);foreach($gg as$A){preg_match_all("~$si~",$A[2],$fk);preg_match_all("~$si~",$A[5],$Sk);$I[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$fk[0]),"target"=>array_map('Adminer\idf_unescape',$Sk[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$I;}function view($C){return array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),1)));}function collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I as$x=>$X)sort($I[$x]);return$I;}function information_schema($j,$L=""){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,$ub){return queries("CREATE DATABASE ".idf_escape($j).($ub?" COLLATE ".q($ub):""));}function drop_databases(array$i){$I=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$I;}function rename_database($C,$ub){$I=false;if(create_database($C,$ub)){$T=array();$jm=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$jm[]=$R;else$T[]=$R;}$I=(!$T&&!$jm)||move_tables($T,$jm,$C);drop_databases($I?array(DB):array());}return$I;}function auto_increment(){$Ha=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Ha="";break;}if($v["type"]=="PRIMARY")$Ha=" UNIQUE";}}return" AUTO_INCREMENT$Ha";}function alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$b=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;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$Pd);$P=($_b!==null?" COMMENT=".q($_b):"").($Vc?" ENGINE=".q($Vc):"").($ub?" COLLATE ".q($ub):"").($Ga!=""?" AUTO_INCREMENT=$Ga":"");if($ki){$li=array();if($ki["partition_by"]=='RANGE'||$ki["partition_by"]=='LIST'){foreach($ki["partition_names"]as$x=>$X){$Y=$ki["partition_values"][$x];$li[]="\n PARTITION ".idf_escape($X)." VALUES ".($ki["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P .="\nPARTITION BY $ki[partition_by]($ki[partition])";if($li)$P .=" (".implode(",",$li)."\n)";elseif($ki["partitions"])$P .=" PARTITIONS ".(+$ki["partitions"]);}elseif($ki===null)$P .="\nREMOVE PARTITIONING";if($R=="")return queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function alter_indexes($R,$b){$db=array();foreach($b as$X)$db[]=($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(",",$db));}function truncate_tables(array$T){return apply_queries("TRUNCATE TABLE",$T);}function drop_views(array$jm){return queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$jm)));}function drop_tables(array$T){return queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function move_tables(array$T,array$jm,$Sk){$kj=array();foreach($T as$R)$kj[]=table($R)." TO ".idf_escape($Sk).".".table($R);if(!$kj||queries("RENAME TABLE ".implode(", ",$kj))){$oc=array();foreach($jm as$R)$oc[table($R)]=view($R);connection()->select_db($Sk);$j=idf_escape(DB);foreach($oc as$C=>$im){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$im["select"]))||!queries("DROP VIEW $j.$C"))return false;}return true;}return false;}function copy_tables(array$T,array$jm,$Sk){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T as$R){$C=($Sk==DB?table("copy_$R"):idf_escape($Sk).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){$tl=$J["Trigger"];list($ed,$lh)=trigger_event($J);if(!queries("CREATE TRIGGER ".($Sk==DB?idf_escape("copy_$tl"):idf_escape($Sk).".".idf_escape($tl))." $J[Timing] $ed".($lh!=""?" $lh":"")." ON $C FOR EACH ROW\n$J[Statement];"))return false;}}foreach($jm as$R){$C=($Sk==DB?table("copy_$R"):idf_escape($Sk).".".table($R));$im=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $im[select]"))return false;}return true;}function trigger_event(array$J){$gd=explode(",",$J["Event"]);$I=array();foreach(array("DELETE","INSERT","UPDATE")as$ed){if(in_array($ed,$gd))$I[]=$ed;}$I=implode(" OR ",$I);if(in_array("UPDATE",$gd)&&min_version('','12.0.1')&&preg_match('~\s(?:BEFORE|AFTER)\s+(.+?)\s+ON\s~is',get_val("SHOW CREATE TRIGGER ".idf_escape($J["Trigger"]),2),$A)&&preg_match('~\bOF\s+(.+)~is',$A[1],$lh))return array("$I OF",$lh[1]);return array($I,"");}function trigger($C,$R){if($C=="")return array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));$I=reset($K);if($I)list($I["Event"],$I["Of"])=trigger_event($I);return$I;}function triggers($R){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){list($ed)=trigger_event($J);$I[$J["Trigger"]]=array($J["Timing"],$ed);}return$I;}function trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>(min_version('','12.0.1')?array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF",):array("INSERT","UPDATE","DELETE")),"Type"=>array("FOR EACH ROW"),);}function routine($C,$U){$K=get_rows("SELECT PARAMETER_NAME, DTD_IDENTIFIER, PARAMETER_MODE, COLLATION_NAME FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($C)." ORDER BY ORDINAL_POSITION");$n=array();foreach($K as$J){$Yd=$J["DTD_IDENTIFIER"];list($Al,$y,$Jl)=parse_type($Yd);$n[]=array("field"=>$J["PARAMETER_NAME"],"type"=>$Al,"length"=>$y,"unsigned"=>$Jl,"null"=>true,"full_type"=>$Yd,"inout"=>($U=="FUNCTION"?"":$J["PARAMETER_MODE"]),"collation"=>$J["COLLATION_NAME"],);}$I=connection()->query("SELECT ROUTINE_COMMENT comment, CONCAT(IF(IS_DETERMINISTIC = 'YES', 'DETERMINISTIC\\n', ''), IF(SQL_DATA_ACCESS != 'CONTAINS SQL', CONCAT(SQL_DATA_ACCESS, '\\n'), ''), ROUTINE_DEFINITION) definition, 'SQL' language FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND ROUTINE_NAME = ".q($C))->fetch_assoc();if($n&&$n[0]['field']=='')$I['returns']=array_shift($n);$I['fields']=$n;return$I;}function routines(){return get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function routine_languages(){return array();}function routine_id($C,array$J){return idf_escape($C);}function last_id($H){return get_val("SELECT LAST_INSERT_ID()");}function explain(Db$f,$G){return$f->query("EXPLAIN ".(min_version(5.7)?"":"PARTITIONS ").$G);}function found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function create_sql($R,$Ga,$vk){$I=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Ga)$I=preg_replace('~(\n\)[^\n]*?) AUTO_INCREMENT=\d+~','\1',$I);return$I;}function truncate_sql($R){return"TRUNCATE ".table($R);}function use_sql($fc,$vk=""){$C=idf_escape($fc);$I="";if(preg_match('~CREATE~',$vk)&&($h=get_val("SHOW CREATE DATABASE $C",1))){set_utf8mb4($h);if($vk=="DROP+CREATE")$I="DROP DATABASE IF EXISTS $C;\n";$I .="$h;\n";}return$I."USE $C";}function trigger_sql($R){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$J){list($J["Event"],$J["Of"])=trigger_event($J);$I .="\n".create_trigger(" ON ".table($J["Table"]),$J+array("Type"=>"FOR EACH ROW")).";\n";}return$I;}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){return driver()->convertColumn(idf_escape($m["field"]),$m);}function unconvert_field(array$m,$I){if(preg_match("~binary~",$m["type"]))$I="UNHEX($I)";if($m["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if($m["type"]=="vector")$I=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($I)";if(preg_match("~geom|point|linestring|polygon~",$m["type"])){$Gi=(min_version(8)?"ST_":"");$I=$Gi."GeomFromText($I, $Gi"."SRID($m[field]))";}return$I;}function support($wd){return preg_match('~^(comment|columns|copy|database|drop_col|dump|event|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').(min_version(8,99)?'|fast_status':'').')$~',$wd);}function kill_process($t){return queries("KILL ".number($t));}function connection_id(){return"SELECT CONNECTION_ID()";}function max_connections(){return get_val("SELECT @@max_connections");}function types($rd=false){return array();}function type_values($t){return"";}function type_definition($t){return array("kind"=>"","definition"=>"");}function schemas(){return array();}function get_schema(){return"";}function set_schema($L,$g=null){return true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').($_GET["ext"]?"ext=".url_escape($_GET["ext"]).'&':'').(isset($_GET[DRIVER])?DRIVER."=".url_escape(SERVER).'&':'').(isset($_GET["username"])?"username=".url_escape($_GET["username"]).'&':'').(isset($_GET["db"])?'db='.url_escape(DB).'&'.(isset($_GET["ns"])?"ns=".url_escape($_GET["ns"])."&":""):''));function page_header($el,$l="",$Wa=array(),$fl=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$gl=$el.($fl!=""?": $fl":"");$hl=strip_tags($gl.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' ',$hl,' ';$Xb=adminer()->css();if(is_int(key($Xb)))$Xb=array_fill_keys($Xb,'light');$re=in_array('light',$Xb)||in_array('',$Xb);$pe=in_array('dark',$Xb)||in_array('',$Xb);$bc=($re?($pe?null:false):($pe?:null));$vg=" media='(prefers-color-scheme: dark)'";if($bc!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=6.0.1");if(adminer()->head($bc))echo"\n","\n";foreach($Xb as$Pl=>$Ig){$c=($Ig=='dark'&&!$bc?$vg:($Ig=='light'&&$pe?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n",script((isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"onload = partial(verifyVersion, '".VERSION."');\n")." const offlineMessage = '".js_escape(lang(95))."'; const thousandsSeparator = '".js_escape(lang(5))."'; const urlSeparators = '".js_escape(ini_get("arg_separator.input"))."';"),"\n","
    \n","\n";if($Wa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $gl

    \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);ob_flush();flush();}function page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Wb){$we=array();foreach($Wb as$x=>$X)$we[]="$x $X";header("Content-Security-Policy: ".implode("; ",$we));}adminer()->headers();}function csp(){return array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function design_checksums(){$Vl=array();foreach(array_keys(adminer()->css())as$Pl)$Vl[preg_replace('~\?.*~','',$Pl)]=true;$I=array();foreach(array("adminer.css","adminer-dark.css")as$o){if($Vl[$o]&&file_exists($o)){preg_match('~^/\* Adminer design ([-\w]+) \*/~',file_get_contents($o),$A);$I[$o]=array((string)$A[1],Plugins::checksum($o));}}return$I;}function official_design_checksums(){return array('adminer-border/adminer-dark.css'=>'b2527e3','adminer-border/adminer.css'=>'430977ad','adminer-dark/adminer-dark.css'=>'a26bcd7b','brade/adminer.css'=>'be4161f0','bueltge/adminer.css'=>'1a8f00b4','dracula/adminer-dark.css'=>'cfaf61dd','esterka/adminer.css'=>'1f805f36','flat/adminer.css'=>'49a61af9','galkaev/adminer-dark.css'=>'16c46f94','haeckel/adminer.css'=>'147a3565','hever/adminer.css'=>'1f626deb','konya/adminer.css'=>'2b409696','lavender-light/adminer.css'=>'bf03f5d7','lucas-sandery/adminer.css'=>'6596353','mancave/adminer-dark.css'=>'e1ac813d','mvt/adminer.css'=>'ebd3afdc','nette/adminer.css'=>'5ab360e7','ng9/adminer.css'=>'488583cf','nicu/adminer.css'=>'ecb9bd1e','pappu687/adminer.css'=>'b58d128c','paranoiq/adminer.css'=>'64d27e5','pepa-linha/adminer.css'=>'baf25f0','pokorny/adminer.css'=>'ee9eea6d','price/adminer.css'=>'81be9a85','rmsoft/adminer.css'=>'6cd4a237','rmsoft_blue-dark/adminer.css'=>'32102a8','rmsoft_blue/adminer.css'=>'7d8d5b18','win98/adminer.css'=>'e82d63c3',);}function version_iframe(){return(isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"");}function get_nonce(){static$eh;if(!$eh)$eh=base64_encode(rand_string());return$eh;}function page_messages($l){$Ol=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ag=idx($_SESSION["messages"],$Ol);if($Ag){echo"
    ".implode("
    \n
    ",$Ag)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Ol]);}if($l)echo"
    $l
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function page_footer($Hg=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function int32($Pg){while($Pg>=2147483648)$Pg-=4294967296;while($Pg<=-2147483649)$Pg+=4294967296;return(int)$Pg;}function long2str(array$W,$lm){$zj='';foreach($W as$X)$zj .=pack('V',$X);if($lm)return substr($zj,0,end($W));return$zj;}function str2long($zj,$lm){$W=array_values(unpack('V*',str_pad($zj,4*ceil(strlen($zj)/4),"\0")));if($lm)$W[]=strlen($zj);return$W;}function xxtea_mx($wm,$vm,$yk,$zf){return int32((($wm>>5&0x7FFFFFF)^$vm<<2)+(($vm>>3&0x1FFFFFFF)^$wm<<4))^int32(($yk^$vm)+($zf^$wm));}function encrypt_string($tk,$x){if($tk=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($tk,true);$Pg=count($W)-1;$wm=$W[$Pg];$vm=$W[0];$Ti=floor(6+52/($Pg+1));$yk=0;while($Ti-->0){$yk=int32($yk+0x9E3779B9);$Nc=$yk>>2&3;for($Yh=0;$Yh<$Pg;$Yh++){$vm=$W[$Yh+1];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$wm=int32($W[$Yh]+$Og);$W[$Yh]=$wm;}$vm=$W[0];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$wm=int32($W[$Pg]+$Og);$W[$Pg]=$wm;}return long2str($W,false);}function decrypt_string($tk,$x){if($tk=="")return"";if(!$x)return false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($tk,false);$Pg=count($W)-1;$wm=$W[$Pg];$vm=$W[0];$Ti=floor(6+52/($Pg+1));$yk=int32($Ti*0x9E3779B9);while($yk){$Nc=$yk>>2&3;for($Yh=$Pg;$Yh>0;$Yh--){$wm=$W[$Yh-1];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$vm=int32($W[$Yh]-$Og);$W[$Yh]=$vm;}$wm=$W[$Pg];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$vm=int32($W[0]-$Og);$W[0]=$vm;$yk=int32($yk-0x9E3779B9);}return long2str($W,true);}$ui=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$ui[$x]=$X;}}function add_invalid_login(){$Oa=get_temp_dir()."/adminer-invalid";foreach(glob("$Oa*")?:array($Oa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Oa-".rand_string());if(!$q)return;$nf=json_decode(stream_get_contents($q),true);$bl=time();if($nf){foreach($nf as$of=>$X){if($X[0]<$bl)unset($nf[$of]);}}$lf=&$nf[adminer()->bruteForceKey()];if(!$lf)$lf=array($bl+30*60,0);$lf[1]++;file_write_unlock($q,json_encode($nf));}function check_invalid_login(array&$ui){$nf=array();foreach(glob(get_temp_dir()."/adminer-invalid*")as$o){$q=file_open_lock($o);if($q){$nf=json_decode(stream_get_contents($q),true);file_unlock($q);break;}}$x=adminer()->bruteForceKey();$lf=idx($nf,$x,array());$dh=($lf[1]>29?$lf[0]-time():0);if($dh>0){$l=lang(98,ceil($dh/60));if($_SERVER["HTTP_X_FORWARDED_FOR"]!=""&&$x==$_SERVER["REMOTE_ADDR"])$l .='
    '.lang(99,'login-reverse-proxy'," href='https://www.adminer.org/plugins/?version=".VERSION."'".target_blank());auth_error($l,$ui,false);}}function password_required(){static$I;if($I===null){$I=(bool)get_session("password_required");if(!$I){$Vb=adminer()->credentials();$I=!is_object(Driver::connect($Vb[0],$Vb[1],""));if($I)set_session("password_required",true);}}return$I;}function require_password_link($E){$Kg="".lang(100)."";if(!function_exists('password_hash'))return" $Kg";$xi=($E!==null?$E:base64_encode(substr(pack("H*",rand_string()),0,12)));$ve=password_hash($xi,PASSWORD_DEFAULT);$o="adminer-plugins.php";$ld=file_exists("adminer-plugins.php");if($ld)$jf=($E!==null?lang(101,"$o"):lang(102,"$o","$xi"));else{$o="";$jf=($E!==null?lang(103,$o):lang(104,$o,"$xi"));}$Uf="\tnew Adminer\\Password('".h($ve)."'),";$I="

    $jf

    ".($ld?$Uf:"<?php\nreturn array(\n$Uf\n);")."

    $Kg ";return" ".lang(105)."

    ";}if(preg_match('~^[-\w$./]+$~',$_POST["password_less"])&&verify_token()){header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=adminer-plugins.php");echo"permanentLogin(true);$ui[$x]="$x:".base64_encode($Ni?encrypt_string($E,$Ni):"");cookie("adminer_permanent",implode(" ",$ui));}if(!array_diff(array_keys($_POST),array("auth","token"))||$gm!=DRIVER||$N!=SERVER||$V!==$_GET["username"]||$j!=DB)redirect(auth_url($gm,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($ui);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(106).' '.lang(107));}elseif($ui&&!$_SESSION["pwds"]){session_regenerate_id();$Ni=adminer()->permanentLogin();foreach($ui as$x=>$X){list(,$ob)=explode(":",$X);list($gm,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($gm,$N,$V,decrypt_string(base64_decode($ob),$Ni));$_SESSION["db"][$gm][$N][$V][$j]=true;}}function unset_permanent(array&$ui){foreach($ui as$x=>$X){list($gm,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($gm==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($ui[$x]);}cookie("adminer_permanent",implode(" ",$ui));}function auth_error($l,array&$ui,$mf=true){$Uj=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Uj]||$_GET[$Uj])&&!$_SESSION["token"])$l=lang(108);elseif($mf&&($E=get_password())!==null){restart_session();add_invalid_login();if($E===false)$l .=($l?'
    ':'').lang(109,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);unset_permanent($ui);}}if(!$_COOKIE[$Uj]&&$_GET[$Uj]&&ini_bool("session.use_only_cookies"))$l=lang(110);$ci=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$ci["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(43),$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(111)."\n";echo input_token(),"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($ui);page_header(lang(112),lang(113,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){check_invalid_login($ui);$Vb=adminer()->credentials();$f=Driver::connect($Vb[0],$Vb[1],$Vb[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)));}}$bg=null;if(!is_object($f)||($bg=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($bg)?$bg:lang(114))).(preg_match('~^ | $~',get_password())?'
    '.lang(115):'');auth_error($l,$ui);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(97),lang(116));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Fa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){header("HTTP/1.1 403 Forbidden");$l=lang(116).' '.lang(117);}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){header("HTTP/1.1 413 Content Too Large");$l=lang(118,"post_max_size");if(isset($_GET["sql"]))$l .=' '.lang(119);}function print_select_result($H,$g=null,array$Mh=array(),&$z=0){$Wf=array();$w=array();$e=array();$Ua=array();$Bl=array();$I=array();for($s=0;(!$z||$s<$z)&&($J=$H->fetch_row());$s++){if(!$s){echo"
    \n","\n","";for($wf=0;$wffetch_field();$C=$m->name;$Lh=(isset($m->orgtable)?$m->orgtable:"");$Kh=(isset($m->orgname)?$m->orgname:$C);if($Mh&&JUSH=="sql")$Wf[$wf]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Lh!=""){if(isset($m->table))$I[$m->table]=$Lh;if(!isset($w[$Lh])){$w[$Lh]=array();foreach(indexes($Lh,$g)as$v){if($v["type"]=="PRIMARY"){$w[$Lh]=array_flip($v["columns"]);break;}}$e[$Lh]=$w[$Lh];}if(isset($e[$Lh][$Kh])){unset($e[$Lh][$Kh]);$w[$Lh][$Kh]=$wf;$Wf[$wf]=$Lh;}}if($m->charsetnr==63)$Ua[$wf]=true;$Bl[$wf]=$m->type;echo"\n";}echo"";foreach($J as$x=>$X){$_="";if(isset($Wf[$x])&&!$e[$Wf[$x]]){if($Mh&&JUSH=="sql"){$R=$J[array_search("table=",$Wf)];$_=ME.$Wf[$x].url_escape($Mh[$R]!=""?$Mh[$R]:$R);}else{$_=ME."edit=".url_escape($Wf[$x]);foreach($w[$Wf[$x]]as$sb=>$wf){if($J[$wf]===null){$_="";break;}$_ .="&where[".url_escape(bracket_escape($sb))."]=".url_escape($J[$wf]);}}}$m=array('type'=>($Ua[$x]?'blob':($Bl[$x]==254?'char':'')),);$X=select_value($X,$_,$m,null);echo"$X";}}$z=$s;echo($s?"
    ".h($C).($Mh?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"
    \n
    ":"

    ".lang(15))."\n";return$I;}function textarea($C,$Y,$K=10,$wb=80){echo"";}function select_input($c,array$Gh,$Y="",$vi=""){if($Gh&&$Y!=""&&!isset($Gh[$Y]))$Gh=array($Y=>$Y)+$Gh;$Rk=($Gh?"select":"input");return"<$Rk$c".($Gh?">

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

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

    \n","\n","".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i as$j=>$T){$tj=h(preg_replace('~&db=[^&]*~','',ME))."db=".url_escape($j);$t=h("Db-".$j);echo"".(support("database")?"
    ":"")."".lang(42).(get_session("dbs")!==null?" - ".lang(140)."":"")."".lang(141)."".lang(142)."".lang(143)." - ".lang(144).""."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"".h($j)."";$ub=h(db_collation($j,$vb));echo"".(support("database")?"$ub":$ub),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}$pa=adminer();$zi=($pa instanceof Plugins?$pa->plugins:array());$Gc=($pa instanceof Plugins?$pa->drivers:array());$uc=design_checksums();if($zi||$Gc||$uc){$nb=($pa instanceof Plugins?$pa->checksums():array());$mh=Plugins::officialChecksums();$Ml=function($Pl){return" (".VERSION.")";};$yi=function($Bd)use($nb,$mh,$Ml){return($nb[$Bd]&&$mh[$Bd]&&$nb[$Bd]!==$mh[$Bd]?$Ml("https://www.adminer.org/plugins/?version=".VERSION):"");};echo"
    \n","

    ".lang(147)."

    \n
      \n";foreach($zi as$wi){$fj=new \ReflectionObject($wi);$rc=(method_exists($wi,'description')?$wi->description():"");if(!$rc){if(preg_match('~^/[\s*]+(.+)~',$fj->getDocComment(),$A))$rc=$A[1];}$Cj=(method_exists($wi,'screenshot')?$wi->screenshot():"");echo"
    • ".get_class($wi)."".h($rc?": $rc":"").($Cj?" (".lang(148).")":"").$yi(basename((string)$fj->getFileName(),'.php'))."\n";}foreach($Gc as$t=>$C)echo"
    • ".h($t).": ".h($C).$yi(basename((string)$pa->driverFiles[$t],'.php'))."\n";if($uc){$oh=official_design_checksums();foreach($uc as$o=>$tc){list($C,$mb)=$tc;$nh=$oh["$C/$o"];echo"
    • ".h($o)."".h($C?": $C":"").($nh&&$nh!==$mb?$Ml("https://www.adminer.org/?version=".VERSION."#extras"):"")."\n";}}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~&db=[^&]+~','\0&ns='.url_escape(get_schema()),relative_uri()));if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(86).h(": $_GET[ns]"),lang(149),true);page_footer("ns");exit;}}}adminer()->afterConnect();class TmpFile{private$handler;var$size=0;function __construct(){$this->handler=tmpfile();}function write($Mb){$this->size+=strlen($Mb);fwrite($this->handler,$Mb);}function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if($_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"]));$M=array(idf_escape($_GET["field"]));$H=driver()->select($a,$M,array(where($_GET,$n)),$M);$J=($H?$H->fetch_row():array());echo driver()->value($J[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=adminer()->error()?:lang(12);$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?lang(150):lang(151):lang(152)).": ".($C!=""?$C:h($a)),$l);$sj=array();foreach($n as$x=>$m)$sj+=$m["privileges"];adminer()->selectLinks($S,(isset($sj["insert"])||!support("table")?"":null));$_b=$S["Comment"];if($_b!="")echo"

    ".lang(57).": ".adminer()->commentValue('TABLE',$_b)."\n";if($n)adminer()->tableStructurePrint($n,$S);function tables_links(array$T){echo"

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

    ".lang(153)."

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

    ".lang(154)."

    \n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);if(driver()->supportsAlterIndex($S))echo'
    \n";}if(!is_view($S)){if(fk_support($S)){echo"
    \n","

    ".lang(120)."

    \n";$Rd=foreign_keys($a);if($Rd){echo"\n","\n";foreach($Rd as$C=>$p){echo"","
    ".lang(156)."".lang(157)."".lang(123)."".lang(122)."
    ".implode(", ",array_map('Adminer\h',$p["source"]))."";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".url_escape($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".url_escape($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(158).'',"\n";}echo"
    \n";}echo'
    \n";}if(support("check")){echo"
    \n","

    ".lang(160)."

    \n";$ib=driver()->checkConstraints($a);if($ib){echo"\n";foreach($ib as$x=>$X)echo"","
    ".shorten_utf8(preg_replace('~\s+~',' ',ltrim($X)),80,""),"".lang(158)."","\n";echo"
    \n";}echo'
    \n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"
    \n","

    ".lang(162)."

    \n";$xl=triggers($a);if($xl){echo"\n";foreach($xl as$x=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($x)."".lang(158)."\n";echo"
    \n";}echo'
    \n";}$bf=driver()->inheritedTables($a);if($bf){echo"

    ".lang(164)."

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

    BY ".h("$gi[partition_by]($gi[partition])")."\n";tables_links($bf);}}elseif(isset($_GET["schema"])){page_header(lang(77),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));function schema_column($R,array$ej,array&$e){if(!isset($e[$R])){$e[$R]=0;foreach((array)idx($ej,$R)as$C=>$gj){if($C!=$R)$e[$R]=max($e[$R],schema_column($C,$ej,$e)+1);}}return$e[$R];}function type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}$Ik=array();$Kk=array();$Jk=array();$zd=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$gg,PREG_SET_ORDER);foreach($gg as$s=>$A){$Ik[$A[1]]=array((float)$A[2],(float)$A[3]);$Kk[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$L=array();$ej=array();$Rd=array();$wa=driver()->allFields();$Ae=array();$Lk=array();foreach(table_status('',true)as$R=>$S){if(!is_view($S)){if(adminer()->tableName($S)!="")$Lk[$R]=$S;else$Ae[$R]=true;}}foreach($Lk as$R=>$S){$F=0;$L[$R]["fields"]=array();foreach($wa[$R]as$m){$F+=1.25;$zd[$R][$m["field"]]=$F;$L[$R]["fields"][$m["field"]]=$m;}foreach(adminer()->foreignKeys($R)as$X){if($X["db"]==""&&$X["ns"]==""&&!$Ae[$X["table"]]){$Rd[$R][]=$X;$ej[$X["table"]][$R]=array();}}}$e=array();$fe=array();$um=array();$le=array();foreach(array_keys($L)as$C)schema_column($C,$ej,$e);arsort($e);foreach($e as$C=>$d){$Fg=null;foreach((array)idx($Rd,$C)as$X){if($X["table"]!=$C&&$L[$X["table"]])$Fg=($Fg===null?$e[$X["table"]]:min($Fg,$e[$X["table"]]));}$e[$C]=max($d,(int)$Fg-1);}foreach($L as$C=>$R){$d=$e[$C];$fe[$d][]=$C;$al=.75*strlen($C);foreach($R["fields"]as$m)$al=max($al,.65*strlen($m["field"]));$um[$d]=max(idx($um,$d,0),ceil($al)+1);}foreach($Rd as$C=>$dm){foreach($dm as$X){$ke=$e[$C]+(idx($e,$X["table"],$e[$C])>$e[$C]?1:0);$le[$ke]=idx($le,$ke,0)+1;}}ksort($fe);$ze=0;$tm=0;$xb=0;$Ji=null;$Ek=array();$Nk=array();foreach($fe as$d=>$T){if($Ji!==null){$xb=round($xb+$um[$Ji]+1.7+idx($le,$d,0)*.1,1);$Ih=array();foreach($T as$C){$yk=0;$Sb=0;$Ug=array_keys((array)idx($ej,$C));foreach((array)idx($Rd,$C)as$X)$Ug[]=$X["table"];foreach($Ug as$Qg){if($L[$Qg]&&$e[$Qg]<$d){$yk+=$L[$Qg]["pos"][0];$Sb++;}}$Ih[$C]=($Sb?$yk/$Sb:$ze);}asort($Ih);$T=array_keys($Ih);}$ll=0;foreach($T as$C){$F=1.25*count($L[$C]["fields"]);$L[$C]["pos"]=($Ik[$C]?:array($ll,$xb));$Ek[$C]=$L[$C]["pos"][1];$Nk[$C]=$um[$d];$ll+=2.5+$F;$ze=max($ze,$L[$C]["pos"][0]+2.5+$F);$tm=max($tm,round($L[$C]["pos"][1]+$um[$d],1));if(!$Ik[$C])$Jk[]="\n\t'".js_escape($C)."': [ ".$L[$C]["pos"][0].", ".$L[$C]["pos"][1]." ]";}$Ji=$d;}$Of=array();$Pa=array();foreach($Rd as$C=>$dm){foreach($dm as$X){$Tk=idx($Ek,$X["table"],$Ek[$C]);$gk=$Ek[$C]+$Nk[$C];$rj=($Tk-1>$gk);$Mf=($rj?$gk+1:min($Ek[$C],$Tk)-1);$Oa=idx($Pa,(string)$Mf,0);$Pa[(string)$Mf]=$Oa+1;$Mf=round($rj?min($Mf+$Oa*.1,$Tk-1):$Mf-$Oa*.1,1);while($Of[(string)$Mf])$Mf-=.0001;$L[$C]["references"][$X["table"]][(string)$Mf]=array($X["source"],$X["target"]);$ej[$X["table"]][$C][(string)$Mf]=$X["target"];$Of[(string)$Mf]=true;}}echo'

    const tablePos = {',implode(",",$Kk)."\n",'}; const tablePosDefault = {',implode(",",$Jk)."\n",'}; const em = qs(\'#schema\').offsetHeight / ',$ze,'; document.onmousemove = schemaMousemove; document.onmouseup = event => schemaMouseup(event, \'',js_escape(DB),'\'); ';foreach($L as$C=>$R){echo"
    ",''.h($C)."";foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$Uk=>$gj){foreach($gj as$Mf=>$bj){$Nf=$Mf-$R["pos"][1];$vk=($Nf>0?"left: 100%; width: calc($Nf"."em - 100%)":"left: $Nf"."em");$tm=($Nf>0?"100%":(-$Nf)."em");$s=0;foreach($bj[0]as$fk)echo"\n
    "."
    ";}}foreach((array)$ej[$C]as$Uk=>$gj){foreach($gj as$Mf=>$Vk){$Nf=$Mf-$R["pos"][1];$s=0;foreach($Vk as$Sk)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($L as$C=>$R){foreach((array)$R["references"]as$Uk=>$gj){if($L[$Uk]){foreach($gj as$Mf=>$bj){$Gg=$ze;$og=-10;foreach($bj[0]as$x=>$fk){$Ai=$R["pos"][0]+$zd[$C][$fk];$Bi=$L[$Uk]["pos"][0]+$zd[$Uk][$bj[1][$x]];$Gg=min($Gg,$Ai,$Bi);$og=max($og,$Ai,$Bi);}echo"
    \n";}}}}echo'
    ';$hc=array('','USE','DROP+CREATE','CREATE');$Mk=array('','DROP+CREATE','CREATE');$dc=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$dc[]='INSERT+UPDATE';$J=get_settings("adminer_export");if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");echo"
    ".lang(166)."".html_radios("output",adminer()->dumpOutput(),$J["output"])."\n","
    ".lang(167)."".html_radios("format",adminer()->dumpFormat(),$J["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(42)."".html_select('db_style',$hc,$J["db_style"]).(support("type")?checkbox("types",1,$J["types"],lang(7)):"").(support("routine")?checkbox("routines",1,$J["routines"],lang(79)):"").(support("event")?checkbox("events",1,$J["events"],lang(81)):"")),"
    ".lang(142)."".html_select('table_style',$Mk,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(58)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(162)):""),"
    ".lang(168)."".html_select('data_style',$dc,$J["data_style"]),'
    ';adminer()->dumpPrint();echo'

    ',input_token(),' ';$Hi=array();if($_GET["ns"]===""){echo"","","\n";foreach(adminer()->schemas()as$L){if(!information_schema(DB,$L))echo"".checkbox("schemas[]",$L,true,$L,"","block")."\n";}}elseif(DB!=""){$kb=($a!=""?"":" checked");echo"","","","\n";$jm="";$Pk=tables_list();foreach($Pk as$C=>$U){$Gi=preg_replace('~_.*~','',$C);$kb=($a==""||$a==(substr($a,-1)=="%"?"$Gi%":$C));$Mi="".checkbox("tables[]",$C,$kb,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$jm .="$Mi\n";else echo"$Mi\n";$Hi[$Gi]++;}echo$jm;if($Pk)echo script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{$i=adminer()->databases();echo"","","\n";if($i){foreach($i as$j){if(!information_schema($j)){$Gi=preg_replace('~_.*~','',$j);echo"".checkbox("databases[]",$j,$a==""||$a=="$Gi%",$j,"","block")."\n";$Hi[$Gi]++;}}}else echo"";}echo' ';$Hd=true;foreach($Hi as$x=>$X){if($x!=""&&$X>1){echo($Hd?"

    ":" ")."".h($x)."";$Hd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(78));echo'

    \n";hidden_fields_get();echo input_hidden("db",DB),($de?"":input_hidden("grant")),"\n","\n";while($J=$H->fetch_assoc())echo'
    ".lang(40)."".lang(38)."
    '.h($J["User"]),"".h($J["Host"]),''.lang(13)."\n";if(!$de||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");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Ce=&get_session("queries");$Be=&$Ce[DB];if(!$l&&$_POST["clear"]){$Be=array();redirect(remove_from_uri("history"));}stop_session();$qa=get_settings("adminer_import");if($_POST&&$qa)save_settings($qa,"adminer_import");page_header((isset($_GET["import"])?lang(82):lang(71)),$l);$Vf=driver()->lineComment();if(!$l&&$_POST&&!(isset($_GET["import"])&&adminer()->importProcess())){$pc=driver()->delimiter;$q=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$kk=adminer()->importServerPath();$q=@fopen((file_exists($kk)?$kk:"compress.zlib://$kk.gz"),"rb");$G=($q?fread($q,1e6):false);}else$G=get_file("sql_file",true,$pc);if(is_string($G)){if(($wg=ini_bytes("memory_limit"))!="-1")ini_set("memory_limit",max($wg,strval(2*strlen($G)+memory_get_usage()+8e6)));if($G!=""&&strlen($G)<1e6){$Ti=$G.(preg_match("~$pc\\s*\$~",$G)?"":$pc);if(!$Be||first(end($Be))!=$Ti){restart_session();$Be[]=array($Ti,time());set_session("queries",$Ce);stop_session();}}$hk="(?:\\s|/\\*[\s\S]*?\\*/|(?:$Vf)[^\n]*\n?|--\r?\n)";$ph=0;$Uc=true;$Rb=false;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$zb=0;$bd=array();$di='[\'"'.(JUSH=="sql"?'`':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Vf.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ml=microtime(true);while($G!=""){if(!$ph&&preg_match("~^$hk*+DELIMITER\\s+(\\S+)~i",$G,$A)){$pc=preg_quote($A[1]);$G=substr($G,strlen($A[0]));}elseif(!$ph&&JUSH=='pgsql'&&preg_match("~^($hk*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$G,$A)){$pc="\n\\\\\\.\r?\n";$Rb=true;$ph=strlen($A[0]);}else{preg_match("($pc\\s*|$di)",$G,$A,PREG_OFFSET_CAPTURE,$ph);list($Td,$F)=$A[0];if(!$Td&&$q&&!feof($q))$G .=fread($q,1e5);else{if(!$Td&&rtrim($G)=="")break;$ph=$F+strlen($Td);if($Td&&!preg_match("(^$pc)",$Td)){$bb=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($F>0&&strtolower($G[$F-1])=="e"));$si=($Td=='/*'?'\*/':($Td=='['?']':(preg_match("~^(?:$Vf)~",$Td)?"\n":preg_quote($Td).($bb?'|\\\\.':''))));while(preg_match("($si|\$)s",$G,$A,PREG_OFFSET_CAPTURE,$ph)){$zj=$A[0][0];if(!$zj&&$q&&!feof($q))$G .=fread($q,1e5);else{$ph=$A[0][1]+strlen($zj);if(!$zj||$zj[0]!="\\")break;}}}else{$Uc=false;$Ti=substr($G,0,$F+($Rb?3:0));$zb++;$Mi="
    ".adminer()->sqlCommandQuery($Ti)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$hk*+(ATTACH|VACUUM\\b.*\\bINTO)\\b~is",$Ti,$A)!==0){echo$Mi,"

    ".lang(171,preg_match('~ATTACH~i',$A[1])?'ATTACH':'VACUUM INTO')."\n";$bd[]=" $zb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Mi;ob_flush();flush();}$qk=microtime(true);if(connection()->multi_query($Ti)&&$g&&preg_match("~^$hk*+USE\\b~i",$Ti))$g->query($Ti);do{$H=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Mi:""),"

    ".lang(172).(connection()->errno?" (".connection()->errno.")":"").": ".adminer()->error()."\n";$bd[]=" $zb";if($_POST["error_stops"])break 2;}else{$_=ME."sql=".url_escape(trim($Ti));$bl=" (".format_time($qk).")".(strlen($_)<1900?" ".lang(13)."":"");$sa=connection()->affected_rows;$nm=($_POST["only_errors"]?"":driver()->warnings());$om="warnings-$zb";if($nm)$bl .=", ".lang(53)."";$md=null;$Mh=null;$nd="explain-$zb";if(is_object($H)){$z=$_POST["limit"];$hh=$z;$Mh=print_select_result($H,$g,array(),$hh);if(!$_POST["only_errors"]){echo"

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

    ".lang(175,$sa)."$bl\n";}echo($nm?"

    \n":"");if($md){echo"\n";}}$qk=microtime(true);}while(connection()->next_result());}$G=substr($G,$ph);$ph=0;if($Rb){$pc=driver()->delimiter;$Rb=false;}}}}}if($Uc)echo"

    ".lang(176)."\n";else{$Qe=connection()->inTransaction();driver()->rollback();if($Qe)echo"

    ROLLBACK -- Adminer
    \n";if($_POST["only_errors"])echo"

    ".lang(177,$zb-count($bd))," (".format_time($ml).")\n";elseif($bd&&$zb>1)echo"

    ".lang(172).": ".implode("",$bd)."\n";}}else echo"

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

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

    ";textarea("query",$Ti,20);echo($_POST?"":script("qs('textarea').focus();")),"

    ";adminer()->sqlPrintAfter();echo"$jd\n",lang(179).": \n";}else{$me=(extension_loaded("zlib")?"[.gz]":"");echo"

    ".lang(180)."
    ",($Nl?input_hidden(ini_get("session.upload_progress.name"),$Nl):""),"SQL$me: ".file_input(" name='sql_file[]' multiple","\n$jd"),($Nl?" ":""),"
    \n";$Ne=adminer()->importServerPath();if($Ne)echo"
    ".lang(181)."
    ",lang(182,"".h($Ne)."$me")," ","
    \n";adminer()->importPrint();echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(184))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(185))."\n",input_token();if(!isset($_GET["import"])&&$Be){print_fieldset("history",lang(186),$_GET["history"]!="");for($X=end($Be);$X;$X=prev($Be)){$x=key($Be);list($Ti,$bl,$Qc)=$X;echo'

    '.lang(13).""." ".@date("H:i:s",$bl).""." ".shorten_utf8(preg_replace('~\s+~',' ',ltrim(preg_replace("~^(?:$Vf).*~m",'',$Ti))),80,"").($Qc?" ($Qc)":"")."
    \n";}echo"\n","".lang(188)."\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));$Ll=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n as$C=>$m){if((!$Ll&&!isset($m["privileges"]["insert"]))||adminer()->fieldName($m)=="")unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$ag=relative_uri((string)$_POST["referer"]);if($_POST["insert"])$ag=($Ll?null:relative_uri());elseif(!preg_match('~^.+&select=.+$~',$ag))$ag=ME."select=".url_escape($a);$w=indexes($a);$Fl=unique_array($_GET["where"],$w);$Wi="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($ag,lang(189),driver()->delete($a,$Wi,$Fl?0:1));else{$O=array();foreach($n as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Ll){if(!$O)redirect($ag);queries_redirect($ag,lang(190),driver()->update($a,$O,$Wi,$Fl?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$H=driver()->insert($a,$O);$Lf=($H?last_id($H):0);queries_redirect($ag,lang(191,($Lf?" $Lf":"")),$H);}}}$J=null;$G="";$bl="";if($Z){$M=array();$Hj=array("*");foreach($n as$C=>$m){if(isset($m["privileges"]["select"])){$Ca=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$d=($Ca?"$Ca AS ":"").idf_escape($C);$M[]=$d;if($Ca)$Hj[]=$d;}}$J=array();if(!support("table")){$M=array("*");$Hj=$M;}if($M){$qk=microtime(true);$H=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));$G=str_replace("SELECT ".implode(", ",$M),"SELECT ".implode(", ",$Hj),driver()->query);$bl=format_time($qk);if(!$H)$l=adminer()->error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!$n&&driver()->primary!=""){if(!$Z){$H=driver()->select($a,array("*"),array(),array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array(driver()->primary=>"");}if($J){foreach($J as$x=>$X){if(!$Z)$J[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}if($_POST["save"]){$Ci=array();foreach((array)$_POST["fields"]as$x=>$X)$Ci[bracket_escape($x,true)]=$X;$J=$Ci+($J?$J:array());}edit_form($a,$n,$J,$Ll,$l,$G,$bl);}elseif(isset($_GET["create"])){function referencable_primary($Jj){$I=array();foreach(table_status('',true)as$Gk=>$R){if($Gk!=$Jj&&fk_support($R)){foreach(fields($Gk)as$m){if($m["primary"]){if($I[$Gk]){unset($I[$Gk]);break;}$I[$Gk]=$m;}}}}return$I;}$a=$_GET["create"];$ii=driver()->partitionBy;$mi=($ii&&$a!=""?driver()->partitionsInfo($a):array());$dj=referencable_primary($a);$Rd=array();foreach($dj as$Gk=>$m)$Rd[str_replace("`","``",$Gk)."`".str_replace("`","``",$m["field"])]=$Gk;$Ph=array();$S=array();if($a!=""){$Ph=fields($a);$S=table_status1($a);if(count($S)<2)$l=lang(12);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!$l)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(192),drop_tables(array($a)));else{$n=array();$wa=array();$Rl=false;$Pd=array();$Oh=reset($Ph);$ua=" FIRST";foreach($J["fields"]as$x=>$m){$p=$Rd[$m["type"]];$_l=($p!==null?$dj[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Ri=process_field($m,$_l);$wa[]=array($m["orig"],$Ri,$ua);if(!$Oh||$Ri!==process_field($Oh,$Oh)){$n[]=array($m["orig"],$Ri,$ua);if($m["orig"]!=""||$ua)$Rl=true;}if($p!==null)$Pd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Rd[$m["type"]],'source'=>array($m["field"]),'target'=>array($_l["field"]),'on_delete'=>$m["on_delete"],));$ua=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Rl=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Oh=next($Ph);if(!$Oh)$ua="";}}$ki=array();if(in_array($J["partition_by"],$ii)){foreach($J as$x=>$X){if(preg_match('~^partition~',$x))$ki[$x]=$X;}foreach($ki["partition_names"]as$x=>$C){if($C==""){unset($ki["partition_names"][$x]);unset($ki["partition_values"][$x]);}}$ki["partition_names"]=array_values($ki["partition_names"]);$ki["partition_values"]=array_values($ki["partition_values"]);if($ki==$mi)$ki=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$ki=null;$B=lang(193);if($a==""){cookie("adminer_engine",$J["Engine"]);$B=lang(194);}$C=trim($J["name"]);$ag=ME.(support("table")?"table=":"select=").url_escape($C);$H=alter_table($a,$C,(JUSH=="sqlite"&&($Rl||$Pd)?$wa:$n),$Pd,($J["Comment"]!=$S["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$ki);if($H&&!Queries::$queries&&$a!=""&&!$n&&!$Pd)redirect($ag);queries_redirect($ag,$B,$H);}}page_header(($a!=""?lang(51):lang(84)),$l,array("table"=>$a),h($a));if(!$_POST){$Bl=driver()->types();$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Bl["int"])?"int":(isset($Bl["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Ph as$m){if($m["generated"])$m["default"]=ltrim($m["default"]);$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$J["fields"][]=$m;}if($ii){$J+=$mi;$J["partition_names"][]="";$J["partition_values"][]="";}}}$vb=flat_collations();$Wc=driver()->engines();foreach($Wc as$Vc){if(!strcasecmp($Vc,$J["Engine"])){$J["Engine"]=$Vc;break;}}$jg=max_input_vars(12,20);if($jg){$Ae=(count($J["fields"])>$jg?"":" hidden");echo"".max_input_vars_error()."\n";}echo'

    ';if(support("columns")||$a==""){echo lang(195).": \n",($Wc?html_select("Engine",array(""=>"(".lang(196).")")+$Wc,$J["Engine"],on('change','helpClose').on_help_value())."\n":"");if($vb)echo"".optionlist($vb)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($J["fields"],$vb,"TABLE",$Rd);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(58).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(197),on('click','columnShowClick',5),"jsonly");$Bb=($_POST?$_POST["comments"]:get_setting("comments"));if(support("comment")){echo checkbox("comments",1,$Bb,lang(57),on('click','editingCommentsClick',true),"jsonly").' ';$c=" name='Comment' data-maxlength='".(min_version(5.5)?2048:60)."'".($Bb?"":" class='hidden'");echo adminer()->commentInput('TABLE',$c,$J["Comment"]);}echo'

    ';}echo' ';if($a!="")echo' ';if($ii&&(JUSH=='sql'||$a=="")){$ji=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(199),$J["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$ii),$J["partition_by"],on('change','partitionByChange').on_help_value('.','PARTITION BY $&'))."\n","()\n",lang(200).": \n","\n","\n";foreach($J["partition_names"]as$x=>$X)echo'','\n\n";}echo input_token(),'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$We=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Te=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$We[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$We[]="SPATIAL";if(min_version('',11.7)&&preg_match('~MyISAM|InnoDB~i',$S["Engine"]))$We[]="VECTOR";$w=indexes($a);$n=fields($a);$Ki=array();if(JUSH=="mongo"){$Ki=$w["_id_"];unset($We[0]);unset($w["_id_"]);}$J=$_POST;if($J)save_settings(array("index_options"=>$J["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($J["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$We)){$e=array();$Sf=array();$sc=array();$Bh=array();$Ue=(support("partial_indexes")?$v["partial"]:"");$Se=(in_array($v["algorithm"],$Te)?$v["algorithm"]:"");$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$qc=idx($v["descs"],$x);$Ah=idx($v["opclasses"],$x);$O[]=($n[$d]?idf_escape($d):$d).($y?"(".(+$y).")":"").($Ah!=""?" ".idf_escape($Ah):"").($qc?" DESC":"");$e[]=$d;$Sf[]=($y?:null);$sc[]=$qc;$Bh[]="$Ah";}}$kd=$w[$C];if($kd){ksort($kd["columns"]);ksort($kd["lengths"]);ksort($kd["descs"]);if($v["type"]==$kd["type"]&&array_values($kd["columns"])===$e&&(!$kd["lengths"]||array_values($kd["lengths"])===$Sf)&&array_values($kd["descs"])===$sc&&(!$kd["opclasses"]||array_values($kd["opclasses"])===$Bh)&&$kd["partial"]==$Ue&&(!$Te||$kd["algorithm"]==$Se)){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O,$Se,$Ue);}}foreach($w as$C=>$kd)$b[]=array($kd["type"],$C,"DROP");if(!$b)redirect(ME."table=".url_escape($a));queries_redirect(ME."table=".url_escape($a),lang(203),alter_indexes($a,$b));}page_header(lang(154),$l,array("table"=>$a),h($a));$Ad=array_keys($n);if($_POST["add"]){foreach($J["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$x]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}$Sf=(JUSH=="sql"||JUSH=="mssql");$Bh=driver()->indexOpclasses();$Xj=($_POST?$_POST["options"]:get_setting("index_options"));echo'
    ';if($Ki){echo"
    ',lang(204);$Le=" class='idxopts".($Xj?"":" hidden")."'";if($Te)echo"".lang(205).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'',lang(206).($Sf?" (".lang(207).")":"");if($Sf||support("descidx"))echo checkbox("options",1,$Xj,lang(127),on('click','indexOptionsShow'),"jsonly")."\n";echo'',lang(208);if(support("partial_indexes"))echo"".lang(209);echo'
    PRIMARY";foreach($Ki["columns"]as$x=>$d)echo select_input(" disabled",array_combine($Ad,$Ad),$d)," ";echo"\n";}$wf=1;foreach($J["indexes"]as$v){if(!$_POST["drop_col"]||$wf!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$wf][type]",array(-1=>"")+$We,$v["type"],($wf==count($J["indexes"])?on('change','indexesAddRow'):""),"label-type");if($Te)echo"".html_select("indexes[$wf][algorithm]",array_merge(array(""),$Te),$v['algorithm'],"","label-algorithm");echo"";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"".select_input(" name='indexes[$wf][columns][$s]' title='".lang(55)."'".on('change','indexesChangeColumn',(JUSH=="sql"?"":$_GET["indexes"]."_")),($n&&($d==""||$n[$d])?array_combine($Ad,$Ad):array()),$d)," ",($Sf?"":"");if($Bh){$Ah=idx($v["opclasses"],$x);echo html_select("indexes[$wf][opclasses][$s]",array(""=>"(".lang(210).")")+array_combine($Bh,$Bh)+($Ah!=""?array($Ah=>$Ah):array()),$Ah),doc_link(array('pgsql'=>'indexes-opclass.html'));}echo(support("descidx")?checkbox("indexes[$wf][descs][$s]",1,idx($v["descs"],$x),lang(66)):""),"
    ","
    ";$s++;}echo"
    \n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$wf]","x",lang(130),on('click','editingRemoveRow','indexes$1[type]'));}$wf++;}echo'

    ',input_token(),'

    ';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(211),drop_databases(array(DB)));}elseif($C!==DB){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".url_escape($C),lang(212),rename_database($C,(string)$J["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$wk=true;$Jf="";foreach($i as$j){if(count($i)==1||$j!=""){if(!create_database($j,(string)$J["collation"]))$wk=false;$Jf=$j;}}restart_session();set_session("dbs",null);queries_redirect(preg_replace('~&db=[^&]*~','',ME)."db=".url_escape($Jf),lang(213),$wk);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(214));}}page_header(DB!=""?lang(74):lang(134),$l,array(),h(DB));$vb=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$vb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$de){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$de,$A)&&$A[1]){$C=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'

    ',($_POST["add"]||strpos($C,"\n")?'
    ':'')."\n",($vb?html_select("collation",array(""=>"(".lang(121).")")+$vb,$J["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):"")."\n",' ';if(DB!="")echo"\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo icon("plus","add[0]","+",lang(128))."\n";echo input_token(),'

    ';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(215));else{$C=trim($J["name"]);$_ .=url_escape($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,lang(216));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,lang(217));else redirect($_);}}page_header($_GET["ns"]!=""?lang(75):lang(76),$l);if(!$J)$J["name"]=$_GET["ns"];echo'

    ';if($_GET["ns"]!="")echo"\n";echo input_token(),'

    ';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(218).": ".h($ca),$l);$wj=(isset($_GET["callf"])?"FUNCTION":"PROCEDURE");$uj=routine($_GET["call"],$wj);$Oe=array();$Vh=array();foreach($uj["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$Vh[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Oe[]=$s;}if(!$l&&$_POST){$cb=array();foreach($uj["fields"]as$x=>$m){$X="";if(in_array($x,$Oe)){$X=process_input($m);if($X===false)$X="''";if(isset($Vh[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($Vh[$x]))$cb[]="@".idf_escape($m["field"]);elseif(in_array($x,$Oe))$cb[]=$X;}$G=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($uj["returns"],"type")=="record"?"* FROM ":"").table($ca)."(".implode(", ",$cb).")";$qk=microtime(true);$H=connection()->multi_query($G);$sa=connection()->affected_rows;echo adminer()->selectQuery($G,$qk,!$H);if(!$H)echo"

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

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

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

    ',input_token(),'

    ',adminer()->commentValue($wj,$uj['comment']);}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Sk=array();foreach($J["source"]as$x=>$X)$Sk[$x]=$J["target"][$x];$J["target"]=$Sk;}if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(" $C"=>($J["drop"]?"":" ".format_foreign_key($J))));else{$b="ALTER TABLE ".table($a);$H=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$J["drop"])$H=queries("$b ADD".format_foreign_key($J));}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(220):($C!=""?lang(221):lang(222))),$H);if(!$J["drop"])$l=lang(223);}page_header(($C!=""?lang(224):lang(159)),$l,array("table"=>$a),h($C!=""?$C:$a));if($_POST){ksort($J["source"]);if($_POST["change"]||$_POST["change-js"])$J["target"]=array();else$J["source"][]="";}elseif($C!=""){$Rd=foreign_keys($a);$J=$Rd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
    ';$fk=array_keys(fields($a));if($J["db"]!="")connection()->select_db($J["db"]);if($J["ns"]!=""){$Qh=get_schema();set_schema($J["ns"]);}$cj=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Sk=array_keys(fields(in_array($J["table"],$cj)?$J["table"]:reset($cj)));$c=on('change','foreignChange');echo"

    \n";if(support("scheme")){$Aj=array_filter(adminer()->schemas(),function($L){return!information_schema(DB,$L);});echo"";if($J["ns"]!="")set_schema($Qh);}elseif(JUSH!="sqlite"){$ic=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$ic[]=$j;}echo"";}echo input_hidden("change-js"),'

    ';$wf=0;foreach($J["source"]as$x=>$X){echo"","
    ',lang(156),'',lang(157),'
    ".html_select("source[".(+$x)."]",array(-1=>"")+$fk,$X,($wf==count($J["source"])-1?on('change','foreignAddRow'):""),"label-source"),"".html_select("target[".(+$x)."]",$Sk,idx($J["target"],$x),"","label-target");$wf++;}echo'

    ',(support("deferrable")?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$J["deferrable"]).' ':''),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'

    ';if($C!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Rh="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Rh=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($J["name"]);$Ca=" AS\n$J[select]";$ag=ME."table=".url_escape($C);$B=lang(228);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Rh=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ca,$ag,$B);else{$Wk="adminer_".uniqid();drop_create("DROP $Rh ".table($a),"CREATE $U ".table($C).$Ca,"DROP $U ".table($C),"CREATE $U ".table($Wk).$Ca,"DROP $U ".table($Wk),($_POST["drop"]?substr(ME,0,-1):$ag),lang(229),$B,lang(230),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Rh!="VIEW");if(!$l)$l=adminer()->error();}page_header(($a!=""?lang(50):lang(231)),$l,array("table"=>$a),h($a));echo'

    ',lang(208),': ',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(150)):""),'

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

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

    ';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$kf=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$sk=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(232));elseif(in_array($J["INTERVAL_FIELD"],$kf)&&isset($sk[$J["STATUS"]])){$_j="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(233):lang(234)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$_j.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$_j)."\n".$sk[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(235).": ".h($aa):lang(236)),$l);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo'
    ',lang(208),'
    ',lang(237),'
    ',lang(238),'
    ',lang(239),' ',html_select("INTERVAL_FIELD",$kf,$J["INTERVAL_FIELD"]),'
    ',lang(137),'',html_select("STATUS",$sk,$J["STATUS"]),'
    ',lang(57),'
    ',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(240)),'

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

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

    ';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$uj=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$l){foreach($J["fields"]as$x=>$m){if($m["field"]=="")unset($J["fields"][$x]);}$th=routine_id($ca,routine($_GET["procedure"],$uj));$Xg=routine_id($J["name"],$J);$h=create_routine($uj,$J);$ag=substr(ME,0,-1);$B=lang(241);if(!$_POST["drop"]&&$th==$Xg&&connection()->flavor!="mysql")query_redirect(substr_replace($h,' OR REPLACE',6,0),$ag,$B);else{$Wk="adminer_".uniqid();drop_create("DROP $uj $th",$h,"DROP $uj $Xg",create_routine($uj,array("name"=>$Wk)+$J),"DROP $uj ".routine_id($Wk,$J),$ag,lang(242),$B,lang(243),$ca,$J["name"]);}}page_header(($ca!=""?(isset($_GET["function"])?lang(244):lang(245)).": ".h($ca):(isset($_GET["function"])?lang(246):lang(247))),$l);if(!$_POST){if($ca=="")$J["language"]="sql";else{$J=routine($_GET["procedure"],$uj);$J["name"]=$ca;}}$vb=(JUSH=="sql"?flat_collations():array());$vj=routine_languages();echo($vb?"".optionlist($vb)."":""),'

    ',lang(208),': ',($vj?"\n":""),'

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

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

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

    ';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$J=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(249));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(250));elseif($ea!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($C),$_,lang(251));else redirect($_);}page_header($ea!=""?lang(252).": ".h($ea):lang(253),$l);if(!$J)$J["name"]=$ea;echo'

    ';if($ea!="")echo"\n";echo input_token(),'

    ';}elseif(isset($_GET["type"])){function enum_values($nc){$Y="'(?:[^']|'')*'";if(!preg_match('~^AS\s+ENUM\s*\(\s*('.$Y.'(?:\s*,\s*'.$Y.')*)\s*\)$~i',$nc,$A))return null;preg_match_all('~'.$Y.'~',$A[1],$gg);return$gg[0];}function add_enum_values($U,$rh,$Vg){$wh=enum_values($rh);$bh=enum_values($Vg);if($wh===null||$bh===null)return null;$I=array();$s=0;foreach($bh as$Y){if($Y===idx($wh,$s))$s++;else$I[]="ALTER TYPE ".idf_escape($U)." ADD VALUE $Y".($s

    ',lang(208).": \n",doc_link(array('pgsql'=>"sql-createtype.html",),"?");textarea("as",$J["as"]);echo"

    \n";if($fa!="")echo"\n";echo input_token(),' ';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$J=$_POST;if($J&&!$l){if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(),"",array(),"$C",($J["drop"]?"":$J["clause"]));else{$H=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));if(!$J["drop"])$H=queries("ALTER TABLE ".table($a)." ADD".($J["name"]!=""?" CONSTRAINT ".idf_escape($J["name"]):"")." CHECK ($J[clause])");}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(259):($C!=""?lang(260):lang(261))),$H);}page_header(($C!=""?lang(262):lang(161)),$l,array("table"=>$a),h($C!=""?$C:$a));if(!$J){$lb=driver()->checkConstraints($a);$J=array("name"=>$C,"clause"=>$lb[$C]);}echo'

    ';if(JUSH!="sqlite")echo lang(208).': ';echo doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'

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

    ';if($C!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$wl=trigger_options();$J=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$wl["Timing"])&&in_array($_POST["Event"],$wl["Event"])&&in_array($_POST["Type"],$wl["Type"])){$xh=" ON ".table($a);$Hc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$xh:"");$ag=ME."table=".url_escape($a);if($_POST["drop"])query_redirect($Hc,$ag,lang(263));else{if($C!="")queries($Hc);queries_redirect($ag,($C!=""?lang(264):lang(265)),queries(create_trigger($xh,$_POST)));if($C!="")queries(create_trigger($xh,$J+array("Type"=>reset($wl["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(266):lang(163)),$l,array("table"=>$a),h($C!=""?$C:$a));$ul=on('change','triggerChange',"^".preg_quote($a,"/")."_[ba][iud]$",$a);echo'
    ',lang(267),'',html_select("Timing",$wl["Timing"],$J["Timing"],$ul),'
    ',lang(268),'',html_select("Event",$wl["Event"],$J["Event"],$ul),(in_array("UPDATE OF",$wl["Event"])?" ":""),'
    ',lang(56),'',html_select("Type",$wl["Type"],$J["Type"]),'
    ',lang(208),'
    ',script("fire(qs('#form')['Timing'], 'change');"),'

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

    ';if($C!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["user"])){function grant($de,array$Pi,$e,$xh){if(!$Pi)return true;if($Pi==array("ALL PRIVILEGES","GRANT OPTION"))return($de=="GRANT"?queries("$de ALL PRIVILEGES$xh WITH GRANT OPTION"):queries("$de ALL PRIVILEGES$xh")&&queries("$de GRANT OPTION$xh"));return queries("$de ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Pi).$e).$xh);}$ga=$_GET["user"];$Pi=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Nb)$Pi[$Nb=="File access on server"?"Server Admin":$Nb][$J["Privilege"]]=$J["Comment"];}unset($Pi["Server Admin"]["Usage"]);foreach($Pi["Tables"]as$x=>$X)unset($Pi["Databases"][$x]);$Wg=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$Wg[$X]=(array)$Wg[$X]+idx($_POST["grants"],$x,array());}$ee=array();if(isset($_GET["host"])&&($H=connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$gg,PREG_SET_ORDER)){foreach($gg as$X){if($X[1]!="USAGE")$ee["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$ee["$A[2]$X[2]"]["GRANT OPTION"]=true;}}}}if($_POST&&!$l){$vh=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $vh",ME."privileges=",lang(269));else{$ah=q($_POST["user"])."@".q($_POST["host"]);$ni=$_POST["pass"];$Ub=false;$H=true;if($vh!=$ah){$Ub=queries("CREATE USER $ah IDENTIFIED BY ".($_POST["hashed"]?"PASSWORD ":"").q($ni));$H=$Ub;}elseif($ni!="")$H=queries("SET PASSWORD FOR $ah = ".(min_version(8,99)||$_POST["hashed"]?q($ni):"PASSWORD(".q($ni).")"));if($H){$qj=array();foreach($Wg as$jh=>$de){if(isset($_GET["grant"]))$de=array_filter($de);$de=array_keys($de);if(isset($_GET["grant"]))$qj=array_diff(array_keys(array_filter($Wg[$jh],'strlen')),$de);elseif($vh==$ah){$sh=array_keys((array)$ee[$jh]);$qj=array_diff($sh,$de);$de=array_diff($de,$sh);unset($ee[$jh]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$jh,$A)&&(!grant("REVOKE",$qj,$A[2]," ON $A[1] FROM $ah")||!grant("GRANT",$de,$A[2]," ON $A[1] TO $ah"))){$H=false;break;}}}if($H&&isset($_GET["host"])){if($vh!=$ah)queries("DROP USER $vh");elseif(!isset($_GET["grant"])){foreach($ee as$jh=>$qj){if(preg_match('~^(.+)(\(.*\))?$~U',$jh,$A))grant("REVOKE",array_keys($qj),$A[2]," ON $A[1] FROM $ah");}}}if($H&&!Queries::$queries)redirect(ME."privileges=");queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(270):lang(271)),$H);if($Ub)connection()->query("DROP USER $ah");}}page_header((isset($_GET["host"])?lang(40).": ".h("$ga@$_GET[host]"):lang(170)),$l,array("privileges"=>array('',lang(78))));$J=$_POST;if($J)$ee=$Wg;else{$J=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$ee[(DB==""||$ee?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    ',lang(38),'
    ',lang(40),'
    ',lang(41),' ',($J["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8,99)?"":checkbox("hashed",1,$J["hashed"],lang(272),on('click','hashedClick'))),'
    ',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(38),"Databases"=>lang(42),"Tables"=>lang(152),"Procedures"=>lang(273),)as$Nb=>$qc){foreach((array)$Pi[$Nb]as$Oi=>$_b){echo"$qc'.h($Oi);$s=0;foreach($ee as$jh=>$de){$C="'grants[$s][".h(strtoupper($Oi))."]'";$Y=$de[strtoupper($Oi)];if($Nb=="Server Admin"&&$jh!=(isset($ee["*.*"])?"*.*":".*"))echo"
    ".lang(78).doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($ee as$jh=>$de){echo''.($jh!="*.*"?"":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else echo"";$s++;}}}echo"
    \n",'

    ';if(isset($_GET["host"]))echo' ';echo input_token(),'

    ';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$Cf=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Cf++;}queries_redirect(ME."processlist=",lang(276,$Cf),$Cf||!$_POST["kill"]);}}page_header(lang(135),$l);echo'
    ';$s=-1;foreach(adminer()->processList()as$s=>$J){if(!$s){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($J as$x=>$X)echo"$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"
    ".checkbox("kill[]",$J[JUSH=="sql"?"Id":"pid"],0):"");foreach($J as$x=>$X)echo"".($X!=""&&((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$J["Command"]))||(JUSH=="pgsql"&&$x=="query")||(JUSH=="oracle"&&$x=="sql_text"))?"".shorten_utf8($X,100,"").' '.lang(277).''.' '.copy_icon():h($X));echo"\n";}echo'

    ',script("copyCode(qsl('table'));");if(support("kill"))echo($s+1)."/".lang(278,max_connections()),"

    \n";echo input_token(),'

    ',script("tableCheck();");}elseif($_GET["select"]!=""){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$Rd=column_foreign_keys($a);$qh=$S["Oid"];$ra=get_settings("adminer_import");$sj=array();$e=array();$Ej=array();$Jh=array();$Zk=null;foreach($n as$x=>$m){$C=adminer()->fieldName($m);$Rg=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$Rg;if(is_shortable($m))$Zk=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$Ej[$x]=$Rg;if(isset($m["privileges"]["order"])&&$C!="")$Jh[$x]=$Rg;$sj+=$m["privileges"];}list($M,$ge)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$ge=array_unique($ge);$qf=count($ge)selectSearchProcess($n,$w);$Ih=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Gl=>$J){$Ca=convert_field($n[key($J)]);$M=array($Ca?:idf_escape(key($J)));$Z[]=where_check(bracket_escape($Gl,true),$n);$I=driver()->select($a,$M,$Z,$M);if($I)echo first($I->fetch_row());}exit;}$Ki=$Il=array();foreach($w as$v){if($v["type"]=="PRIMARY"){$Ki=array_flip($v["columns"]);$Il=($M?$Ki:array());foreach($Il as$x=>$X){if(in_array(idf_escape($x),$M))unset($Il[$x]);}break;}}if($qh&&!$Ki){$Ki=$Il=array($qh=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($qh));}if($_POST&&!$l){$qm=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$lb=array();foreach($_POST["check"]as$hb)$lb[]=where_check($hb,$n);$qm[]="((".implode(") OR (",$lb)."))";}$sm=$qm;$qm=($qm?"\nWHERE ".implode(" AND ",$qm):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$Gj=($M?:array("*"));$Pb=convert_fields($e,$n,$M);if($Pb)$Gj[]=substr($Pb,2);$G="";if(is_array($_POST["check"])&&!$Ki){$Wd=implode(", ",$Gj)."\nFROM ".table($a);$ie=($ge&&$qf?"\nGROUP BY ".implode(", ",$ge):"").($Ih?"\nORDER BY ".implode(", ",$Ih):"");$El=array();foreach($_POST["check"]as$X)$El[]="(SELECT".limit($Wd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$ie,1).")";$G=implode(" UNION ALL ",$El);}adminer()->dumpData($a,"table",$G,$Gj,$sm,($qf?$ge:array()),$Ih);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Rd)){if($_POST["save"]||$_POST["delete"]){$H=true;$sa=0;$Ra=false;$O=array();if(!$_POST["delete"]){foreach($n as$C=>$X){$u=bracket_escape($C);if(isset($_POST["fields"][$u])||$_FILES["fields-$u"]){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}}if($_POST["delete"]||$O){$G=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($Ki&&is_array($_POST["check"]))||$qf){$H=($_POST["delete"]?driver()->delete($a,$qm):($_POST["clone"]?queries("INSERT $G$qm".driver()->insertReturning($a)):driver()->update($a,$O,$qm)));$sa=connection()->affected_rows;if(is_object($H))$sa+=$H->num_rows;}else{$Ra=count((array)$_POST["check"])>1&&driver()->begin();foreach((array)$_POST["check"]as$X){$pm="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$H=($_POST["delete"]?driver()->delete($a,$pm,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$pm)):driver()->update($a,$O,$pm,1)));if(!$H)break;$sa+=connection()->affected_rows;}if($Ra&&$H&&!driver()->commit())$H=false;}}$B=lang(280,$sa);if($_POST["clone"]&&$H&&$sa==1){$Lf=last_id($H);if($Lf)$B=lang(191," $Lf");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page|next":""),$B,$H);if($Ra)driver()->rollback();if(!$_POST["delete"]){$Ci=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$Ci),$Ci,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){$H=true;$sa=0;$Ra=count((array)$_POST["val"])>1&&driver()->begin();foreach((array)$_POST["val"]as$Gl=>$J){$O=array();foreach($J as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$H=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check(bracket_escape($Gl,true),$n),($qf||$Ki?0:1)," ");if(!$H)break;$sa+=connection()->affected_rows;}if($Ra)$H=$H&&driver()->commit();queries_redirect(remove_from_uri(),lang(280,$sa),$H);if($Ra)driver()->rollback();}elseif(!is_string($Bd=get_file("csv_file",true)))$l=upload_error($Bd);elseif(!preg_match('~~u',$Bd))$l=lang(281);else{save_settings(array("output"=>$ra["output"],"format"=>$_POST["separator"]),"adminer_import");$wb=array_keys($n);$Lj=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$Yb=parse_csv($Bd,$Lj);$sa=count($Yb);driver()->begin();$K=array();foreach($Yb as$x=>$em){if(!$x&&!array_diff($em,$wb)){$wb=$em;$sa--;}else{$O=array();foreach($em as$s=>$sb)$O[idf_escape($wb[$s])]=($sb==""&&$n[$wb[$s]]["null"]?"NULL":q(csv_value($sb)));$K[]=$O;}}$H=(!$K||driver()->insertUpdate($a,$K,$Ki));if($H)driver()->commit();queries_redirect(remove_from_uri("page|next"),lang(282,$sa),$H);driver()->rollback();}}}$Gk=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header(lang(60).": $Gk",$l);$O=null;if(isset($sj["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){$Y=$X["val"];if(is_array($Y))$Y=(count($Y)==1&&preg_match('~^val-(.*)~s',reset($Y),$A)?$A[1]:"");if($X["col"]!=""&&$Y!=""&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$Y)))))$O .="&set[".url_escape(bracket_escape($X["col"]))."]=".url_escape($Y);}}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"

    ".lang(283).($n?".":": ".adminer()->error())."\n";else{echo"

    \n","\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Ej,$w);adminer()->selectOrderPrint($Ih,$Jh,$w);adminer()->selectLimitPrint($z);if($Zk!==null)adminer()->selectLengthPrint($Zk);adminer()->selectActionPrint($w);echo"
    \n";foreach((array)$_GET["where"]as$X){if($X["op"]=="SQL"&&!in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"))){echo"

    ".lang(116).' '.lang(117)."\n";page_footer();exit;}}$D=$_GET["page"];$Ud=null;if($D=="last"){$Ud=get_val(count_rows($a,$Z,$qf,$ge));$D=floor(max(0,intval($Ud)-1)/$z);}$Fj=$M;$he=$ge;if(!$Fj){$Fj[]="*";$Pb=convert_fields($e,$n,$M);if($Pb)$Fj[]=substr($Pb,2);}foreach($M as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($Ca=convert_field($m)))$Fj[$x]="$Ca AS $X";}if(JUSH=="pgsql"||JUSH=="mssql"){foreach((array)$_GET["columns"]as$x=>$X){if(isset($Fj[$x])&&$X["fun"])$Fj[$x].=" AS ".idf_escape(apply_sql_function($X["fun"],($X["col"]!=""?$X["col"]:"*")));}}if(!$qf&&$Il){foreach($Il as$x=>$X){$Fj[]=idf_escape($x);if($he)$he[]=idf_escape($x);}}$H=driver()->select($a,$Fj,$Z,$he,$Ih,$z,$D,true);if(!is_object($H))echo"

    ".(adminer()->error()?:lang(25))."\n";else{if(JUSH=="mssql"&&$D)$H->seek($z*$D);$Tc=array();$K=array();while($J=$H->fetch_assoc()){if($D&&JUSH=="oracle")unset($J["RNUM"]);$K[]=$J;}$se=($z&&(support("cursor")?$_GET["next"]!="":count($K)>=$z));if(is_ajax()&&$se)header("X-Next-Page: ".pagination_href($D+1));if($_GET["modify"]&&$K){$pg=max_input_vars(count($K[0])+1,20);echo($pg&&count($K)>$pg?"

    ".max_input_vars_error()."\n":"");}echo"

    \n";if($_GET["page"]!="last"&&$z&&$ge&&$qf&&JUSH=="sql")$Ud=get_val(" SELECT FOUND_ROWS()");if(!$K)echo"

    ".lang(15)."\n";else{$Na=adminer()->backwardKeys($a,$Gk);echo"

    ","\n","".(!$ge&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($K,$Rd)as$Pg=>$J){$Fl=unique_array($K[$Pg],$w);if(!$Fl){$Fl=array();reset($M);foreach($K[$Pg]as$x=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$Fl[$x]=$X;next($M);}}$Gl="";foreach($Fl as$x=>$X){$m=(array)$n[$x];$pf=is_blob($m);if((JUSH=="sql"||JUSH=="pgsql")&&($pf||preg_match('~'.text_type().'~',$m["type"]))&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($pf||JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($pf?(string)driver()->value($X,$m):$X);}$Gl .="&".($X!==null?"where[".url_escape(bracket_escape($x))."]=".url_escape($X===false?"f":$X):"null[]=".url_escape($x));}echo"".(!$ge&&$M?"":"\n";}if(is_ajax())exit;echo"
    ");$Sg=array();$ae=array();reset($M);$Zi=1;foreach($K[0]as$x=>$X){if(!isset($Il[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$Zi):($X["fun"]?"*":h($x)));if($C!=""){$Zi++;$Sg[$x]=$C;$d=idf_escape($x);$Fe=remove_from_uri('(order|desc)[^=]*|page|next').'&order[0]='.url_escape($x);$qc="&desc[0]=1";$ck=preg_replace('~ DESC( NULLS LAST)?$~','',$Ih[0]);$ek=($ck==$d||$ck==$x);echo"";$Zd=apply_sql_function($X["fun"],$C);$dk=isset($m["privileges"]["order"])||$Zd!=$C;echo($dk?"$Zd":$Zd);$xg=($dk?"":'');if(!$X["fun"]&&isset($m["privileges"]["where"]))$xg .=" =";echo($xg?"$xg":"");}$ae[$x]=$X["fun"];next($M);}}$Sf=array();if($_GET["modify"]){foreach($K as$J){foreach($J as$x=>$X)$Sf[$x]=max($Sf[$x],min(40,strlen(utf8_decode($X))));}}echo($Na?"".lang(285):"")."
    ".($qf||information_schema(DB)?"":"".lang(286)." ").checkbox("check[]",substr($Gl,1),in_array(substr($Gl,1),(array)$_POST["check"])));reset($M);foreach($J as$x=>$X){if(isset($Sg[$x])){$d=current($M);$m=(array)$n[$x];if($X!=""&&(!isset($Tc[$x])||$Tc[$x]!=""))$Tc[$x]=(is_mail($X)?$Sg[$x]:"");$_="";if(is_blob($m)&&$X!="")$_=ME.'download='.url_escape($a).'&field='.url_escape($x).$Gl;if(!$_&&$X!==null){foreach((array)$Rd[$x]as$p){if(count($Rd[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$fk)$_ .=where_link($s,$p["target"][$s],$K[$Pg][$fk]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.url_escape($p["db"]),ME):ME).'select='.url_escape($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.url_escape($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".url_escape($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Fl))$_ .=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Fl as$zf=>$W)$_ .=where_link($s++,$zf,$W);}$Ge=select_value($X,$_,$m,$Zk);$u=bracket_escape($Gl);$t=h("val[$u][".bracket_escape($x)."]");$Ei=idx(idx($_POST["val"],$u),bracket_escape($x));$Ll=idx($m["privileges"],"update");$Pc=!is_array($J[$x])&&!is_blob($m)&&is_utf8($X)&&$K[$Pg][$x]==$X&&!$ae[$x]&&!$m["generated"]&&$Ll;$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$n[idf_unescape($A[2])]["type"]:$m["type"]);$Yk=preg_match('~text|json|lob~',$U);$rf=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"".($Yk?"":"");}else{$cg=strpos($Ge,"");echo($Ll?" data-text='".($cg?2:($Yk?1:0))."'".($Pc?"":" data-warning='".lang(287)."'"):"").">$Ge";}}next($M);}if($Na)echo"";adminer()->backwardKeysPrint($Na,$K[$Pg]);echo"
    \n","
    \n";}if(!is_ajax()){if($K||$D||$se){$id=true;if($_GET["page"]!="last"){if(!$z||(count($K)<$z&&($K||!$D)))$Ud=($D?$D*$z:0)+count($K);elseif(JUSH!="sql"||!$qf){$Ud=($qf?false:found_rows($S,$Z));if(intval($Ud)$z);$ai=($z&&($se||$D));if($ai)echo($se?'

    '.lang(289).'':''),"\n";echo"

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

    ","".lang(82)."","";echo input_token(),"

    \n",(!$ge&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(137):lang(136));$fm=($P?adminer()->showStatus():adminer()->showVariables());if(!$fm)echo"

    ".lang(15)."\n";else{echo"\n";foreach($fm as$J){echo"";$x=array_shift($J);echo"
    ".h($x)."";foreach($J as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: application/json; charset=utf-8");if($_GET["script"]=="db"){$zk=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($S[$x]));foreach(array_keys($zk+array("Auto_increment"=>0,"Rows"=>0))as$x){if(array_key_exists($x,$S))json_row("$x-$C",format_status($S,$x));if($S[$x]!=""&&isset($zk[$x]))$zk[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}}}if(function_exists('Adminer\db_status'))$zk=db_status();foreach($zk as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill"){if(!$l)connection()->query("KILL ".number($_POST["kill"]));}else{foreach(count_tables(adminer()->databases(false))as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{if(!isset($_GET["select"])&&support("single_table")){$T=tables_list();if($T)redirect(ME.(support("table")?"table=":"select=").url_escape(key($T)));}$ug=ME.(isset($_GET["select"])?"select=&":"");$Qk=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Qk&&!$l&&!$_POST["search"]){$H=true;$B="";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"])$H=truncate_tables($_POST["tables"]);$B=lang(295);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B=lang(296);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B=lang(297);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$B=lang(298);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$J)$B .="".h($R).": ".h($J["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$H=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?" ANALYZE":""),(array)$_POST["tables"]));$B=lang(299);}elseif(!$_POST["tables"])$B=lang(12);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$B .="".h($J["Table"]).": ".h($J["Msg_text"])."
    ";}queries_redirect(relative_uri(),$B,$H);}page_header(($_GET["ns"]==""?lang(42).": ".h(DB):lang(86).": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){$Ih=$_GET["order"];$Xd=($Ih||support("fast_status"));echo"

    \n","

    ".lang(300)."

    \n";$Pk=($Xd?table_status():tables_list());if(!$Pk)echo"

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

    \n";if(support("table")){echo"
    ".lang(301)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," "," \n","
    \n";if(!$l&&$_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"
    \n","\n",'','\n";if($Ih){uasort($Pk,function($ja,$Ka)use($Ih,$Da){$I=($ja[$Ih]<$Ka[$Ih]?-1:($ja[$Ih]>$Ka[$Ih]?1:0));return(in_array($Ih,$Da)?$I:-$I);});}$T=0;$zk=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach($Pk as$C=>$P){$im=($Xd?is_view($P):$P!==null&&!preg_match('~table|sequence~i',$P));$P=($Xd?$P:array('Engine'=>$P));$t=h("Table-".$C);echo'
    ',''.lang(152).'';$e=array("Engine"=>array(lang(302).doc_link(array('sql'=>'storage-engines.html'))));if(collations())$e["Collation"]=array(lang(141).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$e["Data_length"]=array(lang(303).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),"create",lang(51),);if(support("indexes"))$e["Index_length"]=array(lang(304).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),"indexes",lang(155),);$e["Data_free"]=array(lang(305).doc_link(array('sql'=>'show-table-status.html')),"edit",lang(52));if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=array(lang(58).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",lang(51),);$e["Rows"]=array(lang(306).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),"select",lang(48),);if(support("comment"))$e["Comment"]=array(lang(57).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')));$Da=array('Engine','Collation','Comment');foreach($e as$x=>$d)echo"$d[0]";echo"
    '.checkbox(($im?"views[]":"tables[]"),$C,in_array("$C",$Qk,true),"","","",$t),''.(support("table")||support("indexes")?"".h($C).'':h($C));if($im&&!preg_match('~materialized~i',$P['Engine'])){$el=lang(151);echo''.(support("view")?"$el":$el),"?";if(support("comment"))echo''.h($P['Comment']);}else{if($Xd){foreach(array_keys($zk)as$x)$zk[$x]+=($P["Engine"]!="InnoDB"||$x!="Data_free"?idx($P,$x):0);}foreach($e as$x=>$d){$t=" id='$x-".h($C)."'";echo($d[1]?"".format_status($P,$x)."":"".h(idx($P,$x,'?')));}$T++;}echo"\n";}echo"
    ".lang(278,count($Pk)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),(collations()?"".h(db_collation(DB,collations())):'');if($Xd&&function_exists('Adminer\db_status'))$zk=db_status();foreach($zk as$x=>$yk)echo($e[$x]?"".($Xd?format_number($yk):""):"");echo"\n","
    \n",($Xd?'':script("ajaxSetHtml('".js_escape(ME)."script=db');")),"
    \n";if(!information_schema(DB)){$am=" ";$Eh=" ";$Mi=(JUSH=="sqlite"?$am." ":(JUSH=="pgsql"?$am.$Eh:(JUSH=="sql"?" ".$Eh." "." ":""))).(function_exists('Adminer\truncate_tables')?" ":"").(function_exists('Adminer\drop_tables')?"":"");echo($Mi?"\n";}echo"
    \n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"
    \n";if(support("routine")){echo"
    \n","

    ".lang(79)."

    \n";$xj=routines();if($xj){echo"\n",'\n";foreach($xj as$J){$C=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".url_escape($J["ROUTINE_NAME"]));echo'','
    '.lang(208).''.lang(56).''.lang(248)."
    '.h($J["ROUTINE_NAME"]).'',''.h($J["ROUTINE_TYPE"]),''.h($J["DTD_IDENTIFIER"]),''.lang(158)."";}echo"
    \n";}echo'
    \n";}if(support("sequence")){echo"
    \n","

    ".lang(80)."

    \n";$Pj=get_vals("SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace = ".driver()->nsOid." ORDER BY relname");if($Pj){echo"\n","\n";foreach($Pj as$X)echo"
    ".lang(208)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("type")){echo"
    \n","

    ".lang(7)."

    \n";$Xl=types();if($Xl){echo"\n","\n";foreach($Xl as$X)echo"
    ".lang(208)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("event")){echo"
    \n","

    ".lang(81)."

    \n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","\n";foreach($K as$J)echo"","
    ".lang(208)."".lang(315)."".lang(237)."".lang(238)."
    ".h($J["Name"]),"".($J["Execute at"]?lang(316)."".h($J["Execute at"]):lang(239)." ".h($J["Interval value"])." ".h($J["Interval field"])."".h($J["Starts"])),"".h($J["Ends"]),''.lang(158).'';echo"
    \n";$fd=get_val("SELECT @@event_scheduler");if($fd&&$fd!="ON")echo"

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

    \n";}}}}page_footer();