';$_e=array("select"=>lang(40));if(support("table")||support("indexes"))$_e["table"]=lang(41);if(support("table")){if(is_view($Oh))$_e["view"]=lang(42);else$_e["create"]=lang(43);}if($N!==null)$_e["edit"]=lang(44);$C=$Oh["Name"];foreach($_e
+as$y=>$X)echo" $X ";echo
+doc_link(array($x=>$l->tableHelp($C)),"?"),"\n";}function
+foreignKeys($Q){return
+foreign_keys($Q);}function
+backwardKeys($Q,$Nh){return
+array();}function
+backwardKeysPrint($Oa,$J){}function
+selectQuery($G,$Eh,$Xc=false){global$x,$l;$I="
\n";if(!$Xc&&($dj=$l->warnings())){$Kd="warnings";$I=", ".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(56).")"),html_select("where[$t][op]",$this->operators,$X["op"],$bb)," ",script("mixin(qsl('input'), {oninput: function () { $bb }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}}echo"\n";}function
+selectOrderPrint($Bf,$e,$w){print_fieldset("sort",lang(57),$Bf);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),lang(58))."
\n";$t++;}}echo"".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(58))."
\n","\n";}function
+selectLimitPrint($z){echo"($oc[$Xi]) ".h($V.($M!=""?"@".$this->serverName($M):"").($k!=""?" - $k":""))." \n";}}}}if($Mf)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$Ve&&DB!=""){$g->select_db(DB);$S=table_status('',true);}echo
+script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.17.1");if(support("sql")){echo'
+';}$this->databasesPrint($Ve);$wa=array();if(DB==""||!$Ve){if(support("sql")){$wa[]="".lang(63)." ";$wa[]="".lang(71)." ";}if(support("dump"))$wa[]="".lang(72)." ";}$Pd=$_GET["ns"]!==""&&!$Ve&&DB!="";if($Pd)$wa[]='".lang(73)." ";echo($wa?"\n".implode("\n",$wa)."\n":"");if($Pd){if($S)$this->tablesPrint($S);else
+echo"
".lang(10)."
\n";}}}function
+databasesPrint($Ve){global$b,$g;$j=$this->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo'\n";}function
+tablesPrint($S){echo"".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S
+as$Q=>$O){$C=$this->tableName($O);if($C!=""){echo'".lang(76)." ",(support("table")||support("indexes")?'$C ":"$C ")."\n";}}echo" \n";}}$b=(function_exists('adminer_object')?adminer_object():new
+Adminer);$oc=array("server"=>"MySQL")+$oc;if(!defined("DRIVER")){define("DRIVER","server");if(extension_loaded("mysqli")){class
+Min_DB
+extends
+MySQLi{var$extension="MySQLi";function
+__construct(){parent::init();}function
+connect($M="",$V="",$F="",$Vb=null,$eg=null,$uh=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Id,$eg)=explode(":",$M,2);$Dh=$b->connectSsl();if($Dh)$this->ssl_set($Dh['key'],$Dh['cert'],$Dh['ca'],'','');$I=@$this->real_connect(($M!=""?$Id:ini_get("mysqli.default_host")),($M.$V!=""?$V:ini_get("mysqli.default_user")),($M.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$Vb,(is_numeric($eg)?$eg:ini_get("mysqli.default_port")),(!is_numeric($eg)?$eg:$uh),($Dh?(empty($Dh['cert'])?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function
+set_charset($cb){if(parent::set_charset($cb))return
+true;parent::set_charset('utf8');return$this->query("SET NAMES $cb");}function
+result($G,$n=0){$H=$this->query($G);if(!$H)return
+false;$J=$H->fetch_array();return$J[$n];}function
+quote($P){return"'".$this->escape_string($P)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
+Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
+connect($M,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(77,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
+false;}$this->_link=@mysql_connect(($M!=""?$M:ini_get("mysql.default_host")),("$M$V"!=""?$V:ini_get("mysql.default_user")),("$M$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
+set_charset($cb){if(function_exists('mysql_set_charset')){if(mysql_set_charset($cb,$this->_link))return
+true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $cb");}function
+quote($P){return"'".mysql_real_escape_string($P,$this->_link)."'";}function
+select_db($Vb){return
+mysql_select_db($Vb,$this->_link);}function
+query($G,$Ci=false){$H=@($Ci?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
+Min_Result($H);}function
+multi_query($G){return$this->_result=$this->query($G);}function
+store_result(){return$this->_result;}function
+next_result(){return
+false;}function
+result($G,$n=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
+false;return
+mysql_result($H->_result,0,$n);}}class
+Min_Result{var$num_rows,$_result,$_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->orgname=$I->name;$I->charsetnr=($I->blob?63:0);return$I;}function
+__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
+Min_DB
+extends
+Min_PDO{var$extension="PDO_MySQL";function
+connect($M,$V,$F){global$b;$D=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Dh=$b->connectSsl();if($Dh){if(!empty($Dh['key']))$D[PDO::MYSQL_ATTR_SSL_KEY]=$Dh['key'];if(!empty($Dh['cert']))$D[PDO::MYSQL_ATTR_SSL_CERT]=$Dh['cert'];if(!empty($Dh['ca']))$D[PDO::MYSQL_ATTR_SSL_CA]=$Dh['ca'];if(!empty($Dh['verify']))$D[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Dh['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$M)),$V,$F,$D);return
+true;}function
+set_charset($cb){$this->query("SET NAMES $cb");}function
+select_db($Vb){return$this->query("USE ".idf_escape($Vb));}function
+query($G,$Ci=false){$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ci);return
+parent::query($G,$Ci);}}}class
+Min_Driver
+extends
+Min_SQL{function
+insert($Q,$N){return($N?parent::insert($Q,$N):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
+insertUpdate($Q,$K,$lg){$e=array_keys(reset($K));$jg="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$Vi=array();foreach($e
+as$y)$Vi[$y]="$y = VALUES($y)";$Kh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Vi);$Vi=array();$xe=0;foreach($K
+as$N){$Y="(".implode(", ",$N).")";if($Vi&&(strlen($jg)+$xe+strlen($Y)+strlen($Kh)>1e6)){if(!queries($jg.implode(",\n",$Vi).$Kh))return
+false;$Vi=array();$xe=0;}$Vi[]=$Y;$xe+=strlen($Y)+2;}return
+queries($jg.implode(",\n",$Vi).$Kh);}function
+slowQuery($G,$fi){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$fi FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($fi*1000).") */ $B[2]";}}function
+convertSearch($u,$X,$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->_conn).")":$u);}function
+warnings(){$H=$this->_conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return
+ob_get_clean();}}function
+tableHelp($C){$Ce=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
+strtolower("information-schema-".($Ce?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($Ce?"mysql$C-table/":"system-schema.html");}function
+hasCStyleEscapes(){static$Ya;if($Ya===null){$Bh=$this->_conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Ya=(strpos($Bh,'NO_BACKSLASH_ESCAPES')===false);}return$Ya;}}function
+idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
+table($u){return
+idf_escape($u);}function
+connect(){global$b,$U,$Hh,$wc;$g=new
+Min_DB;$Ob=$b->credentials();if($g->connect($Ob[0],$Ob[1],$Ob[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version('5.7.8',10.2,$g)){$Hh[lang(26)][]="json";$U["json"]=4294967295;}if(min_version('',10.7,$g)){$Hh[lang(26)][]="uuid";$U["uuid"]=128;$wc[0]['uuid']='uuid';}if(min_version(9,'',$g)){$Hh[lang(27)][]="vector";$U["vector"]=16383;$wc[0]['vector']='string_to_vector';}return$g;}$I=$g->error;if(function_exists('iconv')&&!is_utf8($I)&&strlen($Wg=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$Wg;return$I;}function
+get_databases($jd){$I=get_session("dbs");if($I===null){$G=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$I=($jd?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function
+limit($G,$Z,$z,$lf=0,$gh=" "){return" $G$Z".($z!==null?$gh."LIMIT $z".($lf?" OFFSET $lf":""):"");}function
+limit1($Q,$G,$Z,$gh="\n"){return
+limit($G,$Z,1,0,$gh);}function
+db_collation($k,$qb){global$g;$I=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$B))$I=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$B))$I=$qb[$B[1]][-1];return$I;}function
+engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function
+logged_user(){global$g;return$g->result("SELECT USER()");}function
+tables_list(){return
+get_key_vals(min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
+count_tables($j){$I=array();foreach($j
+as$k)$I[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$I;}function
+table_status($C="",$Yc=false){$I=array();foreach(get_rows($Yc&&min_version(5)?"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;return$J;}$I[$J["Name"]]=$J;}return$I;}function
+is_view($R){return$R["Engine"]===null;}function
+fk_support($R){return
+preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&min_version(5.6));}function
+fields($Q){$I=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$J){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$J["Type"],$B);$I[$J["Field"]]=array("field"=>$J["Field"],"full_type"=>$J["Type"],"type"=>$B[1],"length"=>$B[2],"unsigned"=>ltrim($B[3].$B[4]),"default"=>($J["Default"]!=""||preg_match("~char|set~",$B[1])?(preg_match('~text~',$B[1])?stripslashes(preg_replace("~^'(.*)'\$~",'\1',$J["Default"])):$J["Default"]):null),"null"=>($J["Null"]=="YES"),"auto_increment"=>($J["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$J["Extra"],$B)?$B[1]:""),"collation"=>$J["Collation"],"privileges"=>array_flip(preg_split('~, *~',$J["Privileges"])),"comment"=>$J["Comment"],"primary"=>($J["Key"]=="PRI"),"generated"=>preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$J["Extra"]),);}return$I;}function
+indexes($Q,$h=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$h)as$J){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;}return$I;}function
+foreign_keys($Q){global$g,$tf;static$ag='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$Mb=$g->result("SHOW CREATE TABLE ".table($Q),1);if($Mb){preg_match_all("~CONSTRAINT ($ag) FOREIGN KEY ?\\(((?:$ag,? ?)+)\\) REFERENCES ($ag)(?:\\.($ag))? \\(((?:$ag,? ?)+)\\)(?: ON DELETE ($tf))?(?: ON UPDATE ($tf))?~",$Mb,$Fe,PREG_SET_ORDER);foreach($Fe
+as$B){preg_match_all("~$ag~",$B[2],$wh);preg_match_all("~$ag~",$B[5],$Xh);$I[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('idf_unescape',$wh[0]),"target"=>array_map('idf_unescape',$Xh[0]),"on_delete"=>($B[6]?$B[6]:"RESTRICT"),"on_update"=>($B[7]?$B[7]:"RESTRICT"),);}}return$I;}function
+view($C){global$g;return
+array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("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$y=>$X)asort($I[$y]);return$I;}function
+information_schema($k){return(min_version(5)&&$k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function
+error(){global$g;return
+h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function
+create_database($k,$pb){return
+queries("CREATE DATABASE ".idf_escape($k).($pb?" COLLATE ".q($pb):""));}function
+drop_databases($j){$I=apply_queries("DROP DATABASE",$j,'idf_escape');restart_session();set_session("dbs",null);return$I;}function
+rename_database($C,$pb){$I=false;if(create_database($C,$pb)){$S=array();$aj=array();foreach(tables_list()as$Q=>$T){if($T=='VIEW')$aj[]=$Q;else$S[]=$Q;}$I=(!$S&&!$aj)||move_tables($S,$aj,$C);drop_databases($I?array(DB):array());}return$I;}function
+auto_increment(){$Ma=" 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)){$Ma="";break;}if($v["type"]=="PRIMARY")$Ma=" UNIQUE";}}return" AUTO_INCREMENT$Ma";}function
+alter_table($Q,$C,$o,$ld,$wb,$Dc,$pb,$La,$Wf){$c=array();foreach($o
+as$n)$c[]=($n[1]?($Q!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($Q!=""?$n[2]:""):"DROP ".idf_escape($n[0]));$c=array_merge($c,$ld);$O=($wb!==null?" COMMENT=".q($wb):"").($Dc?" ENGINE=".q($Dc):"").($pb?" COLLATE ".q($pb):"").($La!=""?" AUTO_INCREMENT=$La":"");if($Q=="")return
+queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$O$Wf");if($Q!=$C)$c[]="RENAME TO ".table($C);if($O)$c[]=ltrim($O);return($c||$Wf?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$c).$Wf):true);}function
+alter_indexes($Q,$c){foreach($c
+as$y=>$X)$c[$y]=($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($Q).implode(",",$c));}function
+truncate_tables($S){return
+apply_queries("TRUNCATE TABLE",$S);}function
+drop_views($aj){return
+queries("DROP VIEW ".implode(", ",array_map('table',$aj)));}function
+drop_tables($S){return
+queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
+move_tables($S,$aj,$Xh){global$g;$Ig=array();foreach($S
+as$Q)$Ig[]=table($Q)." TO ".idf_escape($Xh).".".table($Q);if(!$Ig||queries("RENAME TABLE ".implode(", ",$Ig))){$ec=array();foreach($aj
+as$Q)$ec[table($Q)]=view($Q);$g->select_db($Xh);$k=idf_escape(DB);foreach($ec
+as$C=>$Zi){if(!queries("CREATE VIEW $C AS ".str_replace(" $k."," ",$Zi["select"]))||!queries("DROP VIEW $k.$C"))return
+false;}return
+true;}return
+false;}function
+copy_tables($S,$aj,$Xh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
+as$Q){$C=($Xh==DB?table("copy_$Q"):idf_escape($Xh).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($Q))||!queries("INSERT INTO $C SELECT * FROM ".table($Q)))return
+false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J){$xi=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Xh==DB?idf_escape("copy_$xi"):idf_escape($Xh).".".idf_escape($xi))." $J[Timing] $J[Event] ON $C FOR EACH ROW\n$J[Statement];"))return
+false;}}foreach($aj
+as$Q){$C=($Xh==DB?table("copy_$Q"):idf_escape($Xh).".".table($Q));$Zi=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $Zi[select]"))return
+false;}return
+true;}function
+trigger($C){if($C=="")return
+array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return
+reset($K);}function
+triggers($Q){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function
+trigger_options(){return
+array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
+routine($C,$T){global$g,$Fc,$Wd,$U;$Ca=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$xh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Bi="((".implode("|",array_merge(array_keys($U),$Ca)).")\\b(?:\\s*\\(((?:[^'\")]|$Fc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ag="$xh*(".($T=="FUNCTION"?"":$Wd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Bi";$i=$g->result("SHOW CREATE $T ".idf_escape($C),2);preg_match("~\\(((?:$ag\\s*,?)*)\\)\\s*".($T=="FUNCTION"?"RETURNS\\s+$Bi\\s+":"")."(.*)~is",$i,$B);$o=array();preg_match_all("~$ag\\s*,?~is",$B[1],$Fe,PREG_SET_ORDER);foreach($Fe
+as$Qf)$o[]=array("field"=>str_replace("``","`",$Qf[2]).$Qf[3],"type"=>strtolower($Qf[5]),"length"=>preg_replace_callback("~$Fc~s",'normalize_enum',$Qf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Qf[8] $Qf[7]"))),"null"=>1,"full_type"=>$Qf[4],"inout"=>strtoupper($Qf[1]),"collation"=>strtolower($Qf[9]),);return
+array("fields"=>$o,"comment"=>$g->result("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB)." AND ROUTINE_NAME = ".q($C)),)+($T!="FUNCTION"?array("definition"=>$B[11]):array("returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",));}function
+routines(){return
+get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
+routine_languages(){return
+array();}function
+routine_id($C,$J){return
+idf_escape($C);}function
+last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
+explain($g,$G){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$G);}function
+found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
+types(){return
+array();}function
+schemas(){return
+array();}function
+get_schema(){return"";}function
+set_schema($Yg,$h=null){return
+true;}function
+create_sql($Q,$La,$Ih){global$g;$I=$g->result("SHOW CREATE TABLE ".table($Q),1);if(!$La)$I=preg_replace('~ AUTO_INCREMENT=\d+~','',$I);return$I;}function
+truncate_sql($Q){return"TRUNCATE ".table($Q);}function
+use_sql($Vb){return"USE ".idf_escape($Vb);}function
+trigger_sql($Q){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function
+show_variables(){return
+get_key_vals("SHOW VARIABLES");}function
+process_list(){return
+get_rows("SHOW FULL PROCESSLIST");}function
+show_status(){return
+get_key_vals("SHOW STATUS");}function
+convert_field($n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function
+unconvert_field($n,$I){if(preg_match("~binary~",$n["type"]))$I="UNHEX($I)";if($n["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$jg=(min_version(8)?"ST_":"");$I=$jg."GeomFromText($I, $jg"."SRID($n[field]))";}return$I;}function
+support($Zc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view"))).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Zc);}function
+kill_process($X){return
+queries("KILL ".number($X));}function
+connection_id(){return"SELECT CONNECTION_ID()";}function
+max_connections(){global$g;return$g->result("SELECT @@max_connections");}function
+driver_config(){$U=array();$Hh=array();foreach(array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(28)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(26)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(78)=>array("enum"=>65535,"set"=>64),lang(29)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(31)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$y=>$X){$U+=$X;$Hh[$y]=array_keys($X);}return
+array('possible_drivers'=>array("MySQLi","MySQL","PDO_MySQL"),'jush'=>"sql",'types'=>$U,'structured_types'=>$Hh,'unsigned'=>array("unsigned","zerofill","unsigned zerofill"),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),'functions'=>array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"),'grouping'=>array("avg","count","count distinct","group_concat","max","min","sum"),'edit_functions'=>array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",)),);}}$_b=driver_config();$ig=$_b['possible_drivers'];$x=$_b['jush'];$U=$_b['types'];$Hh=$_b['structured_types'];$Ji=$_b['unsigned'];$yf=$_b['operators'];$sd=$_b['functions'];$zd=$_b['grouping'];$wc=$_b['edit_functions'];if($b->operators===null)$b->operators=$yf;define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
+page_header($hi,$m="",$Va=array(),$ii=""){global$ca,$ia,$b,$oc,$x;page_headers();if(is_ajax()&&$m){page_messages($m);exit;}$ji=$hi.($ii!=""?": $ii":"");$ki=strip_tags($ji.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'
+
+
+
+
+',$ki,'
+
+',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.17.1");if($b->head()){echo'
+
+';foreach($b->css()as$Qb){echo'
+';}}echo'
+
+';$p=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($p)&&filemtime($p)+86400>time()){$Yi=unserialize(file_get_contents($p));$tg="-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
+RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
+DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
+h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
+jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
+nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
+fQIDAQAB
+-----END PUBLIC KEY-----
+";if(openssl_verify($Yi["version"],base64_decode($Yi["signature"]),$tg)==1)$_COOKIE["adminer_version"]=$Yi["version"];}echo'
+
+
+',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
+
+';if($Va!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'
'.$oc[DRIVER].' » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$M=$b->serverName(SERVER);$M=($M!=""?$M:lang(33));if($Va===false)echo"$M\n";else{echo"$M » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Va)))echo''.h(DB).' » ';if(is_array($Va)){if($_GET["ns"]!="")echo''.h($_GET["ns"]).' » ';foreach($Va
+as$y=>$X){$gc=(is_array($X)?$X[1]:h($X));if($gc!="")echo"$gc » ";}}echo"$hi\n";}}echo"
$ji \n","
\n";restart_session();page_messages($m);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define("PAGE_HEADER",1);}function
+page_headers(){global$b;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($b->csp()as$Pb){$Ed=array();foreach($Pb
+as$y=>$X)$Ed[]="$y $X";header("Content-Security-Policy: ".implode("; ",$Ed));}$b->headers();}function
+csp(){return
+array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
+get_nonce(){static$ff;if(!$ff)$ff=base64_encode(rand_string());return$ff;}function
+page_messages($m){$Li=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Se=$_SESSION["messages"][$Li];if($Se){echo"
".implode("
\n
",$Se)."
".script("messagesPrint();");unset($_SESSION["messages"][$Li]);}if($m)echo"
$m
\n";}function
+page_footer($Ve=""){global$b,$oi;echo'
+
+
+
+';if($Ve!="auth"){echo'
+';}echo
+script("setupSubmitHighlight(document);");}function
+int32($Ye){while($Ye>=2147483648)$Ye-=4294967296;while($Ye<=-2147483649)$Ye+=4294967296;return(int)$Ye;}function
+long2str($W,$cj){$Wg='';foreach($W
+as$X)$Wg.=pack('V',$X);if($cj)return
+substr($Wg,0,end($W));return$Wg;}function
+str2long($Wg,$cj){$W=array_values(unpack('V*',str_pad($Wg,4*ceil(strlen($Wg)/4),"\0")));if($cj)$W[]=strlen($Wg);return$W;}function
+xxtea_mx($oj,$nj,$Lh,$ie){return
+int32((($oj>>5&0x7FFFFFF)^$nj<<2)+(($nj>>3&0x1FFFFFFF)^$oj<<4))^int32(($Lh^$nj)+($ie^$oj));}function
+encrypt_string($Gh,$y){if($Gh=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Gh,true);$Ye=count($W)-1;$oj=$W[$Ye];$nj=$W[0];$ug=floor(6+52/($Ye+1));$Lh=0;while($ug-->0){$Lh=int32($Lh+0x9E3779B9);$vc=$Lh>>2&3;for($Of=0;$Of<$Ye;$Of++){$nj=$W[$Of+1];$Xe=xxtea_mx($oj,$nj,$Lh,$y[$Of&3^$vc]);$oj=int32($W[$Of]+$Xe);$W[$Of]=$oj;}$nj=$W[0];$Xe=xxtea_mx($oj,$nj,$Lh,$y[$Of&3^$vc]);$oj=int32($W[$Ye]+$Xe);$W[$Ye]=$oj;}return
+long2str($W,false);}function
+decrypt_string($Gh,$y){if($Gh=="")return"";if(!$y)return
+false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Gh,false);$Ye=count($W)-1;$oj=$W[$Ye];$nj=$W[0];$ug=floor(6+52/($Ye+1));$Lh=int32($ug*0x9E3779B9);while($Lh){$vc=$Lh>>2&3;for($Of=$Ye;$Of>0;$Of--){$oj=$W[$Of-1];$Xe=xxtea_mx($oj,$nj,$Lh,$y[$Of&3^$vc]);$nj=int32($W[$Of]-$Xe);$W[$Of]=$nj;}$oj=$W[$Ye];$Xe=xxtea_mx($oj,$nj,$Lh,$y[$Of&3^$vc]);$nj=int32($W[0]-$Xe);$W[0]=$nj;$Lh=int32($Lh-0x9E3779B9);}return
+long2str($W,true);}$g='';$Dd=$_SESSION["token"];if(!$Dd)$_SESSION["token"]=rand(1,1e6);$oi=get_token();$cg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$cg[$y]=$X;}}function
+add_invalid_login(){global$b;$r=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$r)return;$be=unserialize(stream_get_contents($r));$ei=time();if($be){foreach($be
+as$ce=>$X){if($X[0]<$ei)unset($be[$ce]);}}$ae=&$be[$b->bruteForceKey()];if(!$ae)$ae=array($ei+30*60,0);$ae[1]++;file_write_unlock($r,serialize($be));}function
+check_invalid_login(){global$b;$be=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$ae=($be?$be[$b->bruteForceKey()]:array());$ef=($ae[1]>29?$ae[0]-time():0);if($ef>0)auth_error(lang(82,ceil($ef/60)));}$Ja=$_POST["auth"];if($Ja){session_regenerate_id();$Xi=$Ja["driver"];$M=$Ja["server"];$V=$Ja["username"];$F=(string)$Ja["password"];$k=$Ja["db"];set_password($Xi,$M,$V,$F);$_SESSION["db"][$Xi][$M][$V][$k]=true;if($Ja["permanent"]){$y=base64_encode($Xi)."-".base64_encode($M)."-".base64_encode($V)."-".base64_encode($k);$og=$b->permanentLogin(true);$cg[$y]="$y:".base64_encode($og?encrypt_string($F,$og):"");cookie("adminer_permanent",implode(" ",$cg));}if(count($_POST)==1||DRIVER!=$Xi||SERVER!=$M||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Xi,$M,$V,$k));}elseif($_POST["logout"]&&(!$Dd||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(83).' '.lang(84));}elseif($cg&&!$_SESSION["pwds"]){session_regenerate_id();$og=$b->permanentLogin();foreach($cg
+as$y=>$X){list(,$jb)=explode(":",$X);list($Xi,$M,$V,$k)=array_map('base64_decode',explode("-",$y));set_password($Xi,$M,$V,decrypt_string(base64_decode($jb),$og));$_SESSION["db"][$Xi][$M][$V][$k]=true;}}function
+unset_permanent(){global$cg;foreach($cg
+as$y=>$X){list($Xi,$M,$V,$k)=array_map('base64_decode',explode("-",$y));if($Xi==DRIVER&&$M==SERVER&&$V==$_GET["username"]&&$k==DB)unset($cg[$y]);}cookie("adminer_permanent",implode(" ",$cg));}function
+auth_error($m){global$b,$Dd;$mh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$mh]||$_GET[$mh])&&!$Dd)$m=lang(85);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$m.=($m?' ':'').lang(86,target_blank(),'permanentLogin()
');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$mh]&&$_GET[$mh]&&ini_bool("session.use_only_cookies"))$m=lang(87);$Rf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$Rf["lifetime"]);page_header(lang(37),$m,null);echo"\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(89),lang(90,implode(", ",$ig)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Id,$eg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$eg,$B)&&($B[1]<1024||$B[1]>65535))auth_error(lang(91));check_invalid_login();$g=connect();$l=new
+Min_Driver($g);}$Ae=null;if(!is_object($g)||($Ae=$b->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Ae)?$Ae:lang(92)));auth_error($m.(preg_match('~^ | $~',get_password())?' '.lang(93):''));}if($_POST["logout"]&&$Dd&&!verify_token()){page_header(lang(81),lang(94));page_footer("db");exit;}if($Ja&&$_POST["token"])$_POST["token"]=$oi;$m='';if($_POST){if(!verify_token()){$Vd="max_input_vars";$Le=ini_get($Vd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$Le||$X<$Le)){$Vd=$y;$Le=$X;}}}$m=(!$_POST["token"]&&$Le?lang(95,"'$Vd'"):lang(94).' '.lang(96));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(97,"'post_max_size'");if(isset($_GET["sql"]))$m.=' '.lang(98);}function
+select($H,$h=null,$Ef=array(),$z=0){global$x;$_e=array();$w=array();$e=array();$Ta=array();$U=array();$I=array();for($t=0;(!$z||$t<$z)&&($J=$H->fetch_row());$t++){if(!$t){echo"":"".lang(13))."\n";return$I;}function
+referencable_primary($eh){$I=array();foreach(table_status('',true)as$Ph=>$Q){if($Ph!=$eh&&fk_support($Q)){foreach(fields($Ph)as$n){if($n["primary"]){if($I[$Ph]){unset($I[$Ph]);break;}$I[$Ph]=$n;}}}}return$I;}function
+adminer_settings(){parse_str($_COOKIE["adminer_settings"],$oh);return$oh;}function
+adminer_setting($y){$oh=adminer_settings();return$oh[$y];}function
+set_adminer_settings($oh){return
+cookie("adminer_settings",http_build_query($oh+adminer_settings()));}function
+textarea($C,$Y,$K=10,$sb=80){global$x;echo"";}function
+select_input($Ia,$D,$Y="",$uf="",$dg=""){$Wh=($D?"select":"input");return"<$Wh$Ia".($D?">$dg".optionlist($D,$Y,true)."":" size='10' value='".h($Y)."' placeholder='$dg'>").($uf?script("qsl('$Wh').onchange = $uf;",""):"");}function
+json_row($y,$X=null){static$ed=true;if($ed)echo"{";if($y!=""){echo($ed?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$ed=false;}else{echo"\n}\n";$ed=true;}}function
+edit_type($y,$n,$qb,$nd=array(),$Wc=array()){global$Hh,$U,$Ji,$tf;$T=$n["type"];echo'';if($T&&!isset($U[$T])&&!isset($nd[$T])&&!in_array($T,$Wc))$Wc[]=$T;if($nd)$Hh[lang(99)]=$nd;echo
+optionlist(array_merge($Wc,$Hh),$T),' ',($qb?"('.lang(100).')'.optionlist($qb,$n["collation"]).' ':''),($Ji?"'.optionlist($Ji,$n["unsigned"]).' ':''),(isset($n['on_update'])?"'.optionlist(array(""=>"(".lang(101).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).' ':''),($nd?"(".lang(102).")".optionlist(explode("|",$tf),$n["on_delete"])." ":" ");}function
+get_partitions_info($Q){global$g;$rd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($Q);$H=$g->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $rd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$I=array();list($I["partition_by"],$I["partition"],$I["partitions"])=$H->fetch_row();$Xf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $rd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($Xf);$I["partition_values"]=array_values($Xf);return$I;}function
+process_length($xe){global$Fc;return(preg_match("~^\\s*\\(?\\s*$Fc(?:\\s*,\\s*$Fc)*+\\s*\\)?\\s*\$~",$xe)&&preg_match_all("~$Fc~",$xe,$Fe)?"(".implode(",",$Fe[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$xe)));}function
+process_type($n,$ob="COLLATE"){global$Ji;return" $n[type]".process_length($n["length"]).(preg_match(number_type(),$n["type"])&&in_array($n["unsigned"],$Ji)?" $n[unsigned]":"").(preg_match('~char|text|enum|set~',$n["type"])&&$n["collation"]?" $ob ".q($n["collation"]):"");}function
+process_field($n,$Ai){if($n["on_update"])$n["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$n["on_update"]);return
+array(idf_escape(trim($n["field"])),process_type($Ai),($n["null"]?" NULL":" NOT NULL"),default_value($n),(preg_match('~timestamp|datetime~',$n["type"])&&$n["on_update"]?" ON UPDATE $n[on_update]":""),(support("comment")&&$n["comment"]!=""?" COMMENT ".q($n["comment"]):""),($n["auto_increment"]?auto_increment():null),);}function
+default_value($n){global$x;$bc=$n["default"];return($bc===null?"":" DEFAULT ".(!preg_match('~^GENERATED ~i',$bc)&&(preg_match('~char|binary|text|enum|set~',$n["type"])||preg_match('~^(?![a-z])~i',$bc))?q($bc):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",($x=="sqlite"?"($bc)":$bc))));}function
+type_class($T){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$T))return" class='$y'";}}function
+edit_fields($o,$qb,$T="TABLE",$nd=array()){global$Wd;$o=array_values($o);$cc=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class='hidden'");$xb=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class='hidden'");echo'
+';if($T=="PROCEDURE"){echo'';}echo' ',($T=="TABLE"?lang(103):lang(104)),' ',lang(48),'',script("qs('#enum-edit').onblur = editingLengthBlur;"),' ',lang(105),' ',lang(106);if($T=="TABLE"){echo' NULL
+ AI ',doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",'mssql'=>"t-sql/statements/create-table-transact-sql-identity-property",)),'',lang(51),(support("comment")?" '," ".script("row_count = ".count($o).";"),'
+
+',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($o
+as$t=>$n){$t++;$Ff=$n[($_POST?"orig":"field")];$lc=(isset($_POST["add"][$t-1])||(isset($n["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$Ff=="");echo'
+',($T=="PROCEDURE"?"".html_select("fields[$t][inout]",explode("|",$Wd),$n["inout"]):""),' ';if($lc){echo' ';}echo' ';edit_type("fields[$t]",$n,$qb,$nd);if($T=="TABLE"){echo' ',checkbox("fields[$t][null]",1,$n["null"],"","","block","label-null"),' ',checkbox("fields[$t][has_default]",1,$n["has_default"],"","","","label-default"),' ',(support("comment")?" ":"");}echo"",(support("move_col")?" "." "." ":""),($Ff==""||support("drop_col")?" ":"");}}function
+process_fields(&$o){$lf=0;if($_POST["up"]){$re=0;foreach($o
+as$y=>$n){if(key($_POST["up"])==$y){unset($o[$y]);array_splice($o,$re,0,array($n));break;}if(isset($n["field"]))$re=$lf;$lf++;}}elseif($_POST["down"]){$pd=false;foreach($o
+as$y=>$n){if(isset($n["field"])&&$pd){unset($o[key($_POST["down"])]);array_splice($o,$lf,0,array($pd));break;}if(key($_POST["down"])==$y)$pd=$n;$lf++;}}elseif($_POST["add"]){$o=array_values($o);array_splice($o,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
+false;return
+true;}function
+normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
+grant($ud,$qg,$e,$sf){if(!$qg)return
+true;if($qg==array("ALL PRIVILEGES","GRANT OPTION"))return($ud=="GRANT"?queries("$ud ALL PRIVILEGES$sf WITH GRANT OPTION"):queries("$ud ALL PRIVILEGES$sf")&&queries("$ud GRANT OPTION$sf"));return
+queries("$ud ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$qg).$e).$sf);}function
+drop_create($pc,$i,$qc,$ai,$sc,$A,$Re,$Pe,$Qe,$pf,$cf){if($_POST["drop"])query_redirect($pc,$A,$Re);elseif($pf=="")query_redirect($i,$A,$Qe);elseif($pf!=$cf){$Nb=queries($i);queries_redirect($A,$Pe,$Nb&&queries($pc));if($Nb)queries($qc);}else
+queries_redirect($A,$Pe,queries($ai)&&queries($sc)&&queries($pc)&&queries($i));}function
+create_trigger($sf,$J){global$x;$gi=" $J[Timing] $J[Event]".(preg_match('~ OF~',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($x=="mssql"?$sf.$gi:$gi.$sf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
+create_routine($Sg,$J){global$Wd,$x;$N=array();$o=(array)$J["fields"];ksort($o);foreach($o
+as$n){if($n["field"]!="")$N[]=(preg_match("~^($Wd)\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$dc=rtrim($J["definition"],";");return"CREATE $Sg ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".($Sg=="FUNCTION"?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($x=="pgsql"?" AS ".q($dc):"\n$dc;");}function
+check_constraints($Q){return
+get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
+FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
+JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
+WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
+AND t.TABLE_NAME = ".q($Q)."
+AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'");}function
+remove_definer($G){return
+preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
+format_foreign_key($q){global$tf;$k=$q["db"];$gf=$q["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$q["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($gf!=""&&$gf!=$_GET["ns"]?idf_escape($gf).".":"").table($q["table"])." (".implode(", ",array_map('idf_escape',$q["target"])).")".(preg_match("~^($tf)\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^($tf)\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"");}function
+tar_file($p,$li){$I=pack("a100a8a8a8a12a12",$p,644,0,0,decoct($li->size),decoct(time()));$ib=8*32;for($t=0;$tsend();echo
+str_repeat("\0",511-($li->size+511)%512);}function
+ini_bytes($Vd){$X=ini_get($Vd);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
+doc_link($Zf,$bi="? "){global$x,$g;$kh=$g->server_info;$Yi=preg_replace('~^(\d\.?\d).*~s','\1',$kh);$Ni=array('sql'=>"https://dev.mysql.com/doc/refman/$Yi/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Yi/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$kh)."&id=",);if(preg_match('~MariaDB~',$kh)){$Ni['sql']="https://mariadb.com/kb/en/";$Zf['sql']=(isset($Zf['mariadb'])?$Zf['mariadb']:str_replace(".html","/",$Zf['sql']));}return($Zf[$x]?"$bi ":"");}function
+ob_gzencode($P){return
+gzencode($P);}function
+db_size($k){global$g;if(!$g->select_db($k))return"?";$I=0;foreach(table_status()as$R)$I+=$R["Data_length"]+$R["Index_length"];return
+format_number($I);}function
+set_utf8mb4($i){global$g;static$N=false;if(!$N&&preg_match('~\butf8mb4~i',$i)){$N=true;echo"SET NAMES ".charset($g).";\n\n";}}function
+connect_error(){global$b,$g,$oi,$m,$oc;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(36).": ".h(DB),lang(111),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(112),drop_databases($_POST["db"]));page_header(lang(113),$m,false);echo"\n";foreach(array('database'=>lang(114),'privileges'=>lang(70),'processlist'=>lang(115),'variables'=>lang(116),'status'=>lang(117),)as$y=>$X){if(support($y))echo"$X \n";}echo"
".lang(118,$oc[DRIVER],"".h($g->server_info)." ","$g->extension ")."\n","
".lang(119,"".h(logged_user())." ")."\n";$j=$b->databases();if($j){$Zg=support("scheme");$qb=collations();echo"
\n",script("tableCheck();");}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$g->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(75).": ".h($_GET["ns"]),lang(127),true);page_footer("ns");exit;}}}$tf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
+TmpFile{var$handler;var$size;function
+__construct(){$this->handler=tmpfile();}function
+write($Gb){$this->size+=strlen($Gb);fwrite($this->handler,$Gb);}function
+send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Fc="'(?:''|[^'\\\\]|\\\\.)*'";$Wd="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$l->select($a,$L,array(where($_GET,$o)),$L);$J=($H?$H->fetch_row():array());echo$l->value($J[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error();$R=table_status1($a,true);$C=$b->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?lang(128):lang(129):lang(130)).": ".($C!=""?$C:h($a)),$m);$Qg=array();foreach($o
+as$y=>$n)$Qg+=$n["privileges"];$b->selectLinks($R,(isset($Qg["insert"])||!support("table")?"":null));$wb=$R["Comment"];if($wb!="")echo"".lang(49).": ".h($wb)."\n";if($o)$b->tableStructurePrint($o);if(!is_view($R)){if(support("indexes")){echo"
".lang(131)." \n";$w=indexes($a);if($w)$b->tableIndexesPrint($w);echo''.lang(132)." \n";}if(fk_support($R)){echo"
".lang(99)." \n";$nd=foreign_keys($a);if($nd){echo"\n","".lang(133)." ".lang(134)." ".lang(102)." ".lang(101)." \n";foreach($nd
+as$C=>$q){echo"","".implode(" , ",array_map('h',$q["source"]))." ","".($q["db"]!=""?"".h($q["db"])." .":"").($q["ns"]!=""?"".h($q["ns"])." .":"").h($q["table"])." ","(".implode(" , ",array_map('h',$q["target"]))." )","".h($q["on_delete"])," ".h($q["on_update"]),' '.lang(135).' ',"\n";}echo"
\n";}echo''.lang(136)." \n";}if(support("check")){echo"
".lang(137)." \n";$eb=check_constraints($a);if($eb){echo"\n";foreach($eb
+as$y=>$X){echo"","".h($X),"".lang(135)." ","\n";}echo"
\n";}echo''.lang(138)." \n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"
".lang(139)." \n";$_i=triggers($a);if($_i){echo"\n";foreach($_i
+as$y=>$X)echo"".h($X[0])." ".h($X[1])." ".h($y)." ".lang(135)." \n";echo"
\n";}echo''.lang(140)." \n";}}elseif(isset($_GET["schema"])){page_header(lang(69),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Rh=array();$Sh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$Fe,PREG_SET_ORDER);foreach($Fe
+as$t=>$B){$Rh[$B[1]]=array($B[2],$B[3]);$Sh[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$pi=0;$Qa=-1;$Yg=array();$Dg=array();$ve=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$fg=0;$Yg[$Q]["fields"]=array();foreach(fields($Q)as$C=>$n){$fg+=1.25;$n["pos"]=$fg;$Yg[$Q]["fields"][$C]=$n;}$Yg[$Q]["pos"]=($Rh[$Q]?$Rh[$Q]:array($pi,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$te=$Qa;if($Rh[$Q][1]||$Rh[$X["table"]][1])$te=min(floatval($Rh[$Q][1]),floatval($Rh[$X["table"]][1]))-1;else$Qa-=.1;while($ve[(string)$te])$te-=.0001;$Yg[$Q]["references"][$X["table"]][(string)$te]=array($X["source"],$X["target"]);$Dg[$X["table"]][$Q][(string)$te]=$X["target"];$ve[(string)$te]=true;}}$pi=max($pi,$Yg[$Q]["pos"][0]+2.5+$fg);}echo'
+
+';foreach($Yg
+as$C=>$Q){echo"
",'
'.h($C)." ",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$n){$X='
'.h($n["field"]).' ';echo"
".($n["primary"]?"
$X ":$X);}foreach((array)$Q["references"]as$Yh=>$Eg){foreach($Eg
+as$te=>$Ag){$ue=$te-$Rh[$C][1];$t=0;foreach($Ag[0]as$wh)echo"\n
";}}foreach((array)$Dg[$C]as$Yh=>$Eg){foreach($Eg
+as$te=>$e){$ue=$te-$Rh[$C][1];$t=0;foreach($e
+as$Xh)echo"\n
";}}echo"\n
\n";}foreach($Yg
+as$C=>$Q){foreach((array)$Q["references"]as$Yh=>$Eg){foreach($Eg
+as$te=>$Ag){$Ue=$pi;$Je=-10;foreach($Ag[0]as$y=>$wh){$gg=$Q["pos"][0]+$Q["fields"][$wh]["pos"];$hg=$Yg[$Yh]["pos"][0]+$Yg[$Yh]["fields"][$Ag[1][$y]]["pos"];$Ue=min($Ue,$gg,$hg);$Je=max($Je,$gg,$hg);}echo"
\n";}}}echo'
+',lang(141),'
+';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){$Jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$y)$Jb.="&$y=".urlencode($_POST[$y]);cookie("adminer_export",substr($Jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Tc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$ee=preg_match('~sql~',$_POST["format"]);if($ee){echo"-- Adminer $ia ".$oc[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($x=="sql"){echo"SET NAMES utf8;
+SET time_zone = '+00:00';
+SET foreign_key_checks = 0;
+".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
+":"")."
+";$g->query("SET time_zone = '+00:00'");$g->query("SET sql_mode = ''");}}$Ih=$_POST["db_style"];$j=array(DB);if(DB==""){$j=$_POST["databases"];if(is_string($j))$j=explode("\n",rtrim(str_replace("\r","",$j),"\n"));}foreach((array)$j
+as$k){$b->dumpDatabase($k);if($g->select_db($k)){if($ee&&preg_match('~CREATE~',$Ih)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1))){set_utf8mb4($i);if($Ih=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($k).";\n";echo"$i;\n";}if($ee){if($Ih)echo
+use_sql($k).";\n\n";$Lf="";if($_POST["routines"]){foreach(routines()as$J){$C=$J["ROUTINE_NAME"];$Sg=$J["ROUTINE_TYPE"];$i=create_routine($Sg,array("name"=>$C)+routine($J["SPECIFIC_NAME"],$Sg));set_utf8mb4($i);$Lf.=($Ih!='DROP+CREATE'?"DROP $Sg IF EXISTS ".idf_escape($C).";;\n":"")."$i;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($i);$Lf.=($Ih!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}echo($Lf&&$x=='sql'?"DELIMITER ;;\n\n$Lf"."DELIMITER ;\n\n":$Lf);}if($_POST["table_style"]||$_POST["data_style"]){$aj=array();foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));$Tb=(DB==""||in_array($C,(array)$_POST["data"]));if($Q||$Tb){if($Tc=="tar"){$li=new
+TmpFile;ob_start(array($li,'write'),1e5);}$b->dumpTable($C,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$aj[]=$C;elseif($Tb){$o=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($C));}if($ee&&$_POST["triggers"]&&$Q&&($_i=trigger_sql($C)))echo"\nDELIMITER ;;\n$_i\nDELIMITER ;\n";if($Tc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$C.csv",$li);}elseif($ee)echo"\n";}}if(function_exists('foreign_keys_sql')){foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
+foreign_keys_sql($C);}}foreach($aj
+as$Zi)$b->dumpTable($Zi,$_POST["table_style"],1);if($Tc=="tar")echo
+pack("x512");}}}if($ee)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(lang(72),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
+
+';$ed=true;foreach($kg
+as$y=>$X){if($y!=""&&$X>1){echo($ed?"":" ")."".h($y)." ";$ed=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(70));echo'
'.lang(147)." ";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$ud=$H;if(!$H)$H=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"
\n";hidden_fields_get();echo" \n",($ud?"":" \n"),"
\n"," \n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Hd=&get_session("queries");$Gd=&$Hd[DB];if(!$m&&$_POST["clear"]){$Gd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(71):lang(63)),$m);if(!$m&&$_POST){$r=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$_h=$b->importServerPath();$r=@fopen((file_exists($_h)?$_h:"compress.zlib://$_h.gz"),"rb");$G=($r?fread($r,1e6):false);}else$G=get_file("sql_file",true);if(is_string($G)){if(function_exists('memory_get_usage')&&($Ne=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Ne,2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$ug=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Gd||reset(end($Gd))!=$ug){restart_session();$Gd[]=array($ug,time());set_session("queries",$Hd);stop_session();}}$xh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$fc=";";$lf=0;$Cc=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$vb=0;$Ic=array();$Sf='[\'"'.($x=="sql"?'`#':($x=="sqlite"?'`[':($x=="mssql"?'[':''))).']|/\*|-- |$'.($x=="pgsql"?'|\$[^$]*\$':'');$qi=microtime(true);parse_str($_COOKIE["adminer_export"],$ya);$uc=$b->dumpFormat();unset($uc["sql"]);while($G!=""){if(!$lf&&preg_match("~^$xh*+DELIMITER\\s+(\\S+)~i",$G,$B)){$fc=$B[1];$G=substr($G,strlen($B[0]));}else{preg_match('('.preg_quote($fc)."\\s*|$Sf)",$G,$B,PREG_OFFSET_CAPTURE,$lf);list($pd,$fg)=$B[0];if(!$pd&&$r&&!feof($r))$G.=fread($r,1e5);else{if(!$pd&&rtrim($G)=="")break;$lf=$fg+strlen($pd);if($pd&&rtrim($pd)!=$fc){$Za=$l->hasCStyleEscapes()||($x=="pgsql"&&($fg>0&&strtolower($G[$fg-1])=="e"));$ag=($pd=='/*'?'\*/':($pd=='['?']':(preg_match('~^-- |^#~',$pd)?"\n":preg_quote($pd).($Za?"|\\\\.":""))));while(preg_match("($ag|\$)s",$G,$B,PREG_OFFSET_CAPTURE,$lf)){$Wg=$B[0][0];if(!$Wg&&$r&&!feof($r))$G.=fread($r,1e5);else{$lf=$B[0][1]+strlen($Wg);if(!$Wg||$Wg[0]!="\\")break;}}}else{$Cc=false;$ug=substr($G,0,$fg);$vb++;$ng="".$b->sqlCommandQuery($ug)."
\n";if($x=="sqlite"&&preg_match("~^$xh*+ATTACH\\b~i",$ug,$B)){echo$ng,"".lang(148)."\n";$Ic[]=" $vb ";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$ng;ob_flush();flush();}$Eh=microtime(true);if($g->multi_query($ug)&&is_object($h)&&preg_match("~^$xh*+USE\\b~i",$ug))$h->query($ug);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$ng:""),"
".lang(149).($g->errno?" ($g->errno)":"").": ".error()."\n";$Ic[]=" $vb ";if($_POST["error_stops"])break
+2;}else{$ei=" (".format_time($Eh).") ".(strlen($ug)<1000?" ".lang(11)." ":"");$_a=$g->affected_rows;$dj=($_POST["only_errors"]?"":$l->warnings());$ej="warnings-$vb";if($dj)$ei.=", ".lang(45)." ".script("qsl('a').onclick = partial(toggle, '$ej');","");$Qc=null;$Rc="explain-$vb";if(is_object($H)){$z=$_POST["limit"];$Ef=select($H,$h,array(),$z);if(!$_POST["only_errors"]){echo"
\n";$hf=$H->num_rows;echo"".($hf?($z&&$hf>$z?lang(150,$z):"").lang(151,$hf):""),$ei;if($h&&preg_match("~^($xh|\\()*+SELECT\\b~i",$ug)&&($Qc=explain($h,$ug)))echo", Explain ".script("qsl('a').onclick = partial(toggle, '$Rc');","");$Kd="export-$vb";echo", ".lang(72)." ".script("qsl('a').onclick = partial(toggle, '$Kd');","").": ".html_select("output",$b->dumpOutput(),$ya["output"])." ".html_select("format",$uc,$ya["format"])." "." \n"."
\n";}}else{if(preg_match("~^$xh*+(CREATE|DROP|ALTER)$xh++(DATABASE|SCHEMA)\\b~i",$ug)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"".lang(152,$_a)."$ei\n";}echo($dj?"
\n$dj
\n":"");if($Qc){echo"\n";select($Qc,$h,$Ef);echo"
\n";}}$Eh=microtime(true);}while($g->next_result());}$G=substr($G,$lf);$lf=0;}}}}if($Cc)echo"".lang(153)."\n";elseif($_POST["only_errors"]){echo"
".lang(154,$vb-count($Ic))," (".format_time($qi).") \n";}elseif($Ic&&$vb>1)echo"
".lang(149).": ".implode("",$Ic)."\n";}else
+echo"
".upload_error($G)."\n";}echo'
+
+';$Oc=" ";if(!isset($_GET["import"])){$ug=$_GET["sql"];if($_POST)$ug=$_POST["query"];elseif($_GET["history"]=="all")$ug=$Gd;elseif($_GET["history"]!="")$ug=$Gd[$_GET["history"]][0];echo"";textarea("query",$ug,20);echo
+script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"
$Oc\n",lang(156).": \n";}else{echo"
".lang(157)." ";$_d=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$_d (< ".ini_get("upload_max_filesize")."B): \n$Oc":lang(158)),"
\n";$Nd=$b->importServerPath();if($Nd){echo"".lang(159)." ",lang(160,"".h($Nd)."$_d
"),' ',"
\n";}echo"";}echo
+checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(162))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(163))."\n"," \n";if(!isset($_GET["import"])&&$Gd){print_fieldset("history",lang(164),$_GET["history"]!="");for($X=end($Gd);$X;$X=prev($Gd)){$y=key($Gd);list($ug,$ei,$yc)=$X;echo''.lang(11)." "." ".@date("H:i:s",$ei)." "." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$ug)))),80,"
").($yc?" ($yc) ":"")." \n";}echo" \n","".lang(166)." \n","\n";}echo'
+';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$Ki=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
+as$C=>$n){if(!isset($n["privileges"][$Ki?"update":"insert"])||$b->fieldName($n)==""||$n["generated"])unset($o[$C]);}if($_POST&&!$m&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($Ki?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$Fi=unique_array($_GET["where"],$w);$xg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,lang(167),$l->delete($a,$xg,!$Fi));else{$N=array();foreach($o
+as$C=>$n){$X=process_input($n);if($X!==false&&$X!==null)$N[idf_escape($C)]=$X;}if($Ki){if(!$N)redirect($A);queries_redirect($A,lang(168),$l->update($a,$N,$xg,!$Fi));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$H=$l->insert($a,$N);$se=($H?last_id():0);queries_redirect($A,lang(169,($se?" $se":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($o
+as$C=>$n){if(isset($n["privileges"]["select"])){$Ga=convert_field($n);if($_POST["clone"]&&$n["auto_increment"])$Ga="''";if($x=="sql"&&preg_match("~enum|set~",$n["type"]))$Ga="1*".idf_escape($C);$L[]=($Ga?"$Ga AS ":"").idf_escape($C);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$l->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$m=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$o){if(!$Z){$H=$l->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($l->primary=>"");}if($J){foreach($J
+as$y=>$X){if(!$Z)$J[$y]=null;$o[$y]=array("field"=>$y,"null"=>($y!=$l->primary),"auto_increment"=>($y==$l->primary));}}}edit_form($a,$o,$J,$Ki);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Uf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$Uf[$y]=$y;$Cg=referencable_primary($a);$nd=array();foreach($Cg
+as$Ph=>$n)$nd[str_replace("`","``",$Ph)."`".str_replace("`","``",$n["field"])]=$Ph;$Hf=array();$R=array();if($a!=""){$Hf=fields($a);$R=table_status($a);if(!$R)$m=lang(10);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(170),drop_tables(array($a)));else{$o=array();$Da=array();$Oi=false;$ld=array();$Gf=reset($Hf);$Ba=" FIRST";foreach($J["fields"]as$y=>$n){$q=$nd[$n["type"]];$Ai=($q!==null?$Cg[$q]:$n);if($n["field"]!=""){if(!$n["has_default"])$n["default"]=null;$sg=process_field($n,$Ai);$Da[]=array($n["orig"],$sg,$Ba);if(!$Gf||$sg!==process_field($Gf,$Gf)){$o[]=array($n["orig"],$sg,$Ba);if($n["orig"]!=""||$Ba)$Oi=true;}if($q!==null)$ld[idf_escape($n["field"])]=($a!=""&&$x!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$nd[$n["type"]],'source'=>array($n["field"]),'target'=>array($Ai["field"]),'on_delete'=>$n["on_delete"],));$Ba=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Oi=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Gf=next($Hf);if(!$Gf)$Ba="";}}$Wf="";if(support("partitioning")){if(isset($Uf[$J["partition_by"]])){$Rf=array_filter($J,function($y){return
+preg_match('~^partition~',$y);},ARRAY_FILTER_USE_KEY);foreach($Rf["partition_names"]as$y=>$C){if($C==""){unset($Rf["partition_names"][$y]);unset($Rf["partition_values"][$y]);}}if($Rf!=get_partitions_info($a)){$Xf=array();if($Rf["partition_by"]=='RANGE'||$Rf["partition_by"]=='LIST'){foreach($Rf["partition_names"]as$y=>$C){$Y=$Rf["partition_values"][$y];$Xf[]="\n PARTITION ".idf_escape($C)." VALUES ".($Rf["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Wf.="\nPARTITION BY $Rf[partition_by]($Rf[partition])";if($Xf)$Wf.=" (".implode(",",$Xf)."\n)";elseif($Rf["partitions"])$Wf.=" PARTITIONS ".(+$Rf["partitions"]);}}elseif(preg_match("~partitioned~",$R["Create_options"]))$Wf.="\nREMOVE PARTITIONING";}$Oe=lang(171);if($a==""){cookie("adminer_engine",$J["Engine"]);$Oe=lang(172);}$C=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Oe,alter_table($a,$C,($x=="sqlite"&&($Oi||$ld)?$Da:$o),$ld,($J["Comment"]!=$R["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$R["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$R["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Wf));}}page_header(($a!=""?lang(43):lang(73)),$m,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($U["int"])?"int":(isset($U["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$R;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Hf
+as$n){$n["has_default"]=isset($n["default"]);$J["fields"][]=$n;}if(support("partitioning")){$J+=get_partitions_info($a);$J["partition_names"][]="";$J["partition_values"][]="";}}}$qb=collations();$Ec=engines();foreach($Ec
+as$Dc){if(!strcasecmp($Dc,$J["Engine"])){$J["Engine"]=$Dc;break;}}echo'
+
+
+';if(support("columns")||$a==""){echo
+lang(173),':
+',($Ec?"".optionlist(array(""=>"(".lang(174).")")+$Ec,$J["Engine"])." ".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($qb&&!preg_match("~sqlite|mssql~",$x)?html_select("Collation",array(""=>"(".lang(100).")")+$qb,$J["Collation"]):""),'
+';}echo'
+';if(support("columns")){echo'
+
+',lang(50),':
+',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),lang(175),"columnShow(this.checked, 5)","jsonly");$yb=($_POST?$_POST["comments"]:adminer_setting("comments"));echo(support("comment")?checkbox("comments",1,$yb,lang(49),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$J["Comment"])?"".h($J["Comment"])." ":' '):''),'
+
+';}echo'
+';if($a!=""){echo' ',confirm(lang(176,$a));}if(support("partitioning")){$Vf=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(177),$J["partition_by"]);echo'
+',"".optionlist(array(""=>"")+$Uf,$J["partition_by"])." ".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'( )
+',lang(178),':
+
+
+';}echo'
+
+';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Rd=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$R["Engine"]))$Rd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$Rd[]="SPATIAL";$w=indexes($a);$lg=array();if($x=="mongo"){$lg=$w["_id_"];unset($Rd[0]);unset($w["_id_"]);}$J=$_POST;if($J)set_adminer_settings(array("index_options"=>$J["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$Rd)){$e=array();$ye=array();$hc=array();$N=array();ksort($v["columns"]);foreach($v["columns"]as$y=>$d){if($d!=""){$xe=$v["lengths"][$y];$gc=$v["descs"][$y];$N[]=idf_escape($d).($xe?"(".(+$xe).")":"").($gc?" DESC":"");$e[]=$d;$ye[]=($xe?$xe:null);$hc[]=$gc;}}if($e){$Pc=$w[$C];if($Pc){ksort($Pc["columns"]);ksort($Pc["lengths"]);ksort($Pc["descs"]);if($v["type"]==$Pc["type"]&&array_values($Pc["columns"])===$e&&(!$Pc["lengths"]||array_values($Pc["lengths"])===$ye)&&array_values($Pc["descs"])===$hc){unset($w[$C]);continue;}}$c[]=array($v["type"],$C,$N);}}}foreach($w
+as$C=>$Pc)$c[]=array($Pc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(181),alter_indexes($a,$c));}page_header(lang(131),$m,array("table"=>$a),h($a));$o=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$y=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$y]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w
+as$y=>$v){$w[$y]["name"]=$y;$w[$y]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}$ye=($x=="sql"||$x=="mssql");$ph=($_POST?$_POST["options"]:adminer_setting("index_options"));echo'
+
+
+
+
+
+
+';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(185),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(186),rename_database($C,$J["collation"]));}else{$j=explode("\n",str_replace("\r","",$C));$Jh=true;$re="";foreach($j
+as$k){if(count($j)==1||$k!=""){if(!create_database($k,$J["collation"]))$Jh=false;$re=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($re),lang(187),$Jh);}}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(188));}}page_header(DB!=""?lang(66):lang(114),$m,array(),h(DB));$qb=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$qb);elseif($x=="sql"){foreach(get_vals("SHOW GRANTS")as$ud){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ud,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
+
+
+',($_POST["add_x"]||strpos($C,"\n")?''.h($C).' ':' ')."\n".($qb?html_select("collation",array(""=>"(".lang(100).")")+$qb,$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",)):""),'
+';if(DB!="")echo" ".confirm(lang(176,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo" \n";echo'
+
+';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$m){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(189));else{$C=trim($J["name"]);$_.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,lang(190));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,lang(191));else
+redirect($_);}}page_header($_GET["ns"]!=""?lang(67):lang(68),$m);if(!$J)$J["name"]=$_GET["ns"];echo'
+
+
+
+';if($_GET["ns"]!="")echo" ".confirm(lang(176,$_GET["ns"]))."\n";echo'
+
+';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(192).": ".h($da),$m);$Sg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Od=array();$Lf=array();foreach($Sg["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT")$Lf[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Od[]=$t;}if(!$m&&$_POST){$ab=array();foreach($Sg["fields"]as$y=>$n){if(in_array($y,$Od)){$X=process_input($n);if($X===false)$X="''";if(isset($Lf[$y]))$g->query("SET @".idf_escape($n["field"])." = $X");}$ab[]=(isset($Lf[$y])?"@".idf_escape($n["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$ab).")";$Eh=microtime(true);$H=$g->multi_query($G);$_a=$g->affected_rows;echo$b->selectQuery($G,$Eh,!$H);if(!$H)echo"".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$H=$g->store_result();if(is_object($H))select($H,$h);else
+echo"
".lang(193,$_a)." ".@date("H:i:s")." \n";}while($g->next_result());if($Lf)select($g->query("SELECT ".implode(", ",$Lf)));}}echo'
+
+';if($Od){echo"\n";foreach($Od
+as$y){$n=$Sg["fields"][$y];$C=$n["field"];echo"".$b->fieldName($n);$Y=$_POST["fields"][$C];if($Y!=""){if($n["type"]=="enum")$Y=+$Y;if($n["type"]=="set")$Y=array_sum($Y);}input($n,$Y,(string)$_POST["function"][$C]);echo"\n";}echo"
\n";}echo'
+
+
+
+
+
+';function
+pre_tr($Wg){return
+preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Wg))));}$Q='(\+--[-+]+\+\n)';$J='(\| .* \|\n)';echo
+preg_replace_callback("~^$Q?$J$Q?($J*)$Q?~m",function($B){$fd=pre_tr($B[2]);return"\n".($B[1]?"$fd \n":$fd).pre_tr($B[4])."\n
";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3
",preg_replace('~(.+)\n---+\n~',"\\1 \n",h($Sg['comment']))));echo'
+';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Oe=($_POST["drop"]?lang(194):($C!=""?lang(195):lang(196)));$A=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Xh=array();foreach($J["source"]as$y=>$X)$Xh[$y]=$J["target"][$y];$J["target"]=$Xh;}if($x=="sqlite")queries_redirect($A,$Oe,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$pc="\nDROP ".($x=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$pc,$A,$Oe);else{query_redirect($c.($C!=""?"$pc,":"")."\nADD".format_foreign_key($J),$A,$Oe);$m=lang(197)." $m";}}}page_header(lang(198),$m,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($C!=""){$nd=foreign_keys($a);$J=$nd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo'
+
+';$wh=array_keys(fields($a));if($J["db"]!="")$g->select_db($J["db"]);if($J["ns"]!="")set_schema($J["ns"]);$Bg=array_keys(array_filter(table_status('',true),'fk_support'));$Xh=array_keys(fields(in_array($J["table"],$Bg)?$J["table"]:reset($Bg)));$uf="this.form['change-js'].value = '1'; this.form.submit();";echo"".lang(199).": ".html_select("table",$Bg,$J["table"],$uf)."\n";if($x=="pgsql")echo
+lang(75).": ".html_select("ns",$b->schemas(),$J["ns"]!=""?$J["ns"]:$_GET["ns"],$uf);elseif($x!="sqlite"){$Zb=array();foreach($b->databases()as$k){if(!information_schema($k))$Zb[]=$k;}echo
+lang(74).": ".html_select("db",$Zb,$J["db"]!=""?$J["db"]:$_GET["db"],$uf);}echo'
+
+
+',lang(133),' ',lang(134),'
+';$he=0;foreach($J["source"]as$y=>$X){echo"","".html_select("source[".(+$y)."]",array(-1=>"")+$wh,$X,($he==count($J["source"])-1?"foreignAddRow.call(this);":1),"label-source")," ".html_select("target[".(+$y)."]",$Xh,$J["target"][$y],1,"label-target");$he++;}echo'
+
+',lang(102),': ',html_select("on_delete",array(-1=>"")+explode("|",$tf),$J["on_delete"]),' ',lang(101),': ',html_select("on_update",array(-1=>"")+explode("|",$tf),$J["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'
+
+
+';if($C!=""){echo' ',confirm(lang(176,$C));}echo'
+
+';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$If="VIEW";if($x=="pgsql"&&$a!=""){$O=table_status($a);$If=strtoupper($O["Engine"]);}if($_POST&&!$m){$C=trim($J["name"]);$Ga=" AS\n$J[select]";$A=ME."table=".urlencode($C);$Oe=lang(202);$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&$x!="sqlite"&&$T=="VIEW"&&$If=="VIEW")query_redirect(($x=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ga,$A,$Oe);else{$Zh=$C."_adminer_".uniqid();drop_create("DROP $If ".table($a),"CREATE $T ".table($C).$Ga,"DROP $T ".table($C),"CREATE $T ".table($Zh).$Ga,"DROP $T ".table($Zh),($_POST["drop"]?substr(ME,0,-1):$A),lang(203),$Oe,lang(204),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($If!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(42):lang(205)),$m,array("table"=>$a),h($a));echo'
+
+',lang(184),':
+',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(128)):""),'
';textarea("select",$J["select"]);echo'
+
+';if($a!=""){echo' ',confirm(lang(176,$a));}echo'
+
+';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Zd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Fh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(206));elseif(in_array($J["INTERVAL_FIELD"],$Zd)&&isset($Fh[$J["STATUS"]])){$Xg="\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(207):lang(208)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Xg.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$Xg)."\n".$Fh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(209).": ".h($aa):lang(210)),$m);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(184),'
+',lang(211),'
+',lang(212),'
+',lang(213),' ',html_select("INTERVAL_FIELD",$Zd,$J["INTERVAL_FIELD"]),'',lang(117),' ',html_select("STATUS",$Fh,$J["STATUS"]),' ',lang(49),'
+',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(214)),'
+';textarea("EVENT_DEFINITION",$J["EVENT_DEFINITION"]);echo'
+
+';if($aa!=""){echo' ',confirm(lang(176,$aa));}echo'
+
+';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Sg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$m){$Ff=routine($_GET["procedure"],$Sg);$Zh="$J[name]_adminer_".uniqid();drop_create("DROP $Sg ".routine_id($da,$Ff),create_routine($Sg,$J),"DROP $Sg ".routine_id($J["name"],$J),create_routine($Sg,array("name"=>$Zh)+$J),"DROP $Sg ".routine_id($Zh,$J),substr(ME,0,-1),lang(215),lang(216),lang(217),$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(218):lang(219)).": ".h($da):(isset($_GET["function"])?lang(220):lang(221))),$m);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Sg);$J["name"]=$da;}$qb=get_vals("SHOW CHARACTER SET");sort($qb);$Tg=routine_languages();echo'
+
+',lang(184),':
+',($Tg?lang(20).": ".html_select("language",$Tg,$J["language"])."\n":""),'
+
+';textarea("definition",$J["definition"]);echo'
+
+';if($da!=""){echo' ',confirm(lang(176,$da));}echo'
+
+';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,lang(223));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(224));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$_,lang(225));else
+redirect($_);}page_header($fa!=""?lang(226).": ".h($fa):lang(227),$m);if(!$J)$J["name"]=$fa;echo'
+
+
+
+';if($fa!="")echo" ".confirm(lang(176,$fa))."\n";echo'
+
+';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,lang(228));else
+query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$_,lang(229));}page_header($ga!=""?lang(230).": ".h($ga):lang(231),$m);if(!$J)$J["as"]="AS ";echo'
+
+
+';if($ga!="")echo" ".confirm(lang(176,$ga))."\n";else{echo" \n";textarea("as",$J["as"]);echo"
\n";}echo'
+
+';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$J=$_POST;if($J&&!$m){$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=".urlencode($a),($J["drop"]?lang(232):($C!=""?lang(233):lang(234))),$H);}page_header(($C!=""?lang(235).": ".h($C):lang(138)),$m,array("table"=>$a));if(!$J){$hb=check_constraints($a);$J=array("name"=>$C,"clause"=>$hb[$C]);}echo'
+
+',lang(184),': ',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",)),'
';textarea("clause",$J["clause"]);echo'
+';if($C!=""){echo' ',confirm(lang(176,$C));}echo'
+
+';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$zi=trigger_options();$J=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$zi["Timing"])&&in_array($_POST["Event"],$zi["Event"])&&in_array($_POST["Type"],$zi["Type"])){$sf=" ON ".table($a);$pc="DROP TRIGGER ".idf_escape($C).($x=="pgsql"?$sf:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($pc,$A,lang(236));else{if($C!="")queries($pc);queries_redirect($A,($C!=""?lang(237):lang(238)),queries(create_trigger($sf,$_POST)));if($C!="")queries(create_trigger($sf,$J+array("Type"=>reset($zi["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(239).": ".h($C):lang(240)),$m,array("table"=>$a));echo'
+
+
+',lang(241),' ',html_select("Timing",$zi["Timing"],$J["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),' ',lang(242),' ',html_select("Event",$zi["Event"],$J["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$zi["Event"])?" ":""),' ',lang(48),' ',html_select("Type",$zi["Type"],$J["Type"]),'
+',lang(184),':
+',script("qs('#form')['Timing'].onchange();"),'
';textarea("Statement",$J["Statement"]);echo'
+
+';if($C!=""){echo' ',confirm(lang(176,$C));}echo'
+
+';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$qg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Hb)$qg[$Hb][$J["Privilege"]]=$J["Comment"];}$qg["Server Admin"]+=$qg["File access on server"];$qg["Databases"]["Create routine"]=$qg["Procedures"]["Create routine"];unset($qg["Procedures"]["Create routine"]);$qg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$qg["Columns"][$X]=$qg["Tables"][$X];unset($qg["Server Admin"]["Usage"]);foreach($qg["Tables"]as$y=>$X)unset($qg["Databases"][$y]);$bf=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$bf[$X]=(array)$bf[$X]+(array)$_POST["grants"][$y];}$vd=array();$qf="";if(isset($_GET["host"])&&($H=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$Fe,PREG_SET_ORDER)){foreach($Fe
+as$X){if($X[1]!="USAGE")$vd["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$vd["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$B))$qf=$B[1];}}if($_POST&&!$m){$rf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $rf",ME."privileges=",lang(243));else{$df=q($_POST["user"])."@".q($_POST["host"]);$Yf=$_POST["pass"];if($Yf!=''&&!$_POST["hashed"]&&!min_version(8)){$Yf=$g->result("SELECT PASSWORD(".q($Yf).")");$m=!$Yf;}$Nb=false;if(!$m){if($rf!=$df){$Nb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $df IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Yf));$m=!$Nb;}elseif($Yf!=$qf)queries("SET PASSWORD FOR $df = ".q($Yf));}if(!$m){$Pg=array();foreach($bf
+as$jf=>$ud){if(isset($_GET["grant"]))$ud=array_filter($ud);$ud=array_keys($ud);if(isset($_GET["grant"]))$Pg=array_diff(array_keys(array_filter($bf[$jf],'strlen')),$ud);elseif($rf==$df){$of=array_keys((array)$vd[$jf]);$Pg=array_diff($of,$ud);$ud=array_diff($ud,$of);unset($vd[$jf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$jf,$B)&&(!grant("REVOKE",$Pg,$B[2]," ON $B[1] FROM $df")||!grant("GRANT",$ud,$B[2]," ON $B[1] TO $df"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($rf!=$df)queries("DROP USER $rf");elseif(!isset($_GET["grant"])){foreach($vd
+as$jf=>$Pg){if(preg_match('~^(.+)(\(.*\))?$~U',$jf,$B))grant("REVOKE",array_keys($Pg),$B[2]," ON $B[1] FROM $df");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(244):lang(245)),!$m);if($Nb)$g->query("DROP USER $df");}}page_header((isset($_GET["host"])?lang(34).": ".h("$ha@$_GET[host]"):lang(147)),$m,array("privileges"=>array('',lang(70))));if($_POST){$J=$_POST;$vd=$bf;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$qf;if($qf!="")$J["hashed"]=true;$vd[(DB==""||$vd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
+
+',lang(33),'
+',lang(34),'
+',lang(35),'
+';if(!$J["hashed"])echo
+script("typePassword(qs('#pass'));");echo(min_version(8)?"":checkbox("hashed",1,$J["hashed"],lang(246),"typePassword(this.form['pass'], this.checked);")),'
+
+';echo"\n",'
+
+';if(isset($_GET["host"])){echo' ',confirm(lang(176,"$ha@$_GET[host]"));}echo'
+
+';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$me=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$me++;}queries_redirect(ME."processlist=",lang(250,$me),$me||!$_POST["kill"]);}}page_header(lang(115),$m);echo'
+
+
+
+';if(support("kill")){echo($t+1)."/".lang(252,max_connections()),"
\n";}echo'
+
+',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$o=fields($a);$nd=column_foreign_keys($a);$mf=$R["Oid"];parse_str($_COOKIE["adminer_import"],$za);$Qg=array();$e=array();$di=null;foreach($o
+as$y=>$n){$C=$b->fieldName($n);if(isset($n["privileges"]["select"])&&$C!=""){$e[$y]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($n))$di=$b->selectLengthProcess();}$Qg+=$n["privileges"];}list($L,$wd)=$b->selectColumnsProcess($e,$w);$de=count($wd)selectSearchProcess($o,$w);$Bf=$b->selectOrderProcess($o,$w);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Gi=>$J){$Ga=convert_field($o[key($J)]);$L=array($Ga?$Ga:idf_escape(key($J)));$Z[]=where_check($Gi,$o);$I=$l->select($a,$L,$Z,$L);if($I)echo
+reset($I->fetch_row());}exit;}$lg=$Ii=null;foreach($w
+as$v){if($v["type"]=="PRIMARY"){$lg=array_flip($v["columns"]);$Ii=($L?$lg:array());foreach($Ii
+as$y=>$X){if(in_array(idf_escape($y),$L))unset($Ii[$y]);}break;}}if($mf&&!$lg){$lg=$Ii=array($mf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($mf));}if($_POST&&!$m){$jj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$hb=array();foreach($_POST["check"]as$db)$hb[]=where_check($db,$o);$jj[]="((".implode(") OR (",$hb)."))";}$jj=($jj?"\nWHERE ".implode(" AND ",$jj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$rd=($L?implode(", ",$L):"*").convert_fields($e,$o,$L)."\nFROM ".table($a);$yd=($wd&&$de?"\nGROUP BY ".implode(", ",$wd):"").($Bf?"\nORDER BY ".implode(", ",$Bf):"");if(!is_array($_POST["check"])||$lg)$G="SELECT $rd$jj$yd";else{$Ei=array();foreach($_POST["check"]as$X)$Ei[]="(SELECT".limit($rd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$yd,1).")";$G=implode(" UNION ALL ",$Ei);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$nd)){if($_POST["save"]||$_POST["delete"]){$H=true;$_a=0;$N=array();if(!$_POST["delete"]){foreach($e
+as$C=>$X){$X=process_input($o[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($lg&&is_array($_POST["check"]))||$de){$H=($_POST["delete"]?$l->delete($a,$jj):($_POST["clone"]?queries("INSERT $G$jj"):$l->update($a,$N,$jj)));$_a=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$fj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$H=($_POST["delete"]?$l->delete($a,$fj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$fj)):$l->update($a,$N,$fj,1)));if(!$H)break;$_a+=$g->affected_rows;}}}$Oe=lang(254,$_a);if($_POST["clone"]&&$H&&$_a==1){$se=last_id();if($se)$Oe=lang(169," $se");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Oe,$H);if(!$_POST["delete"]){edit_form($a,$o,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(255);else{$H=true;$_a=0;foreach($_POST["val"]as$Gi=>$J){$N=array();foreach($J
+as$y=>$X){$y=bracket_escape($y,1);$N[idf_escape($y)]=(preg_match('~char|text~',$o[$y]["type"])||$X!=""?$b->processInput($o[$y],$X):"NULL");}$H=$l->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Gi,$o),!$de&&!$lg," ");if(!$H)break;$_a+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(254,$_a),$H);}}elseif(!is_string($cd=get_file("csv_file",true)))$m=upload_error($cd);elseif(!preg_match('~~u',$cd))$m=lang(256);else{cookie("adminer_import","output=".urlencode($za["output"])."&format=".urlencode($_POST["separator"]));$H=true;$sb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$cd,$Fe);$_a=count($Fe[0]);$l->begin();$gh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($Fe[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$gh]*)$gh~",$X.$gh,$Ge);if(!$y&&!array_diff($Ge[1],$sb)){$sb=$Ge[1];$_a--;}else{$N=array();foreach($Ge[1]as$t=>$nb)$N[idf_escape($sb[$t])]=($nb==""&&$o[$sb[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$nb))));$K[]=$N;}}$H=(!$K||$l->insertUpdate($a,$K,$lg));if($H)$H=$l->commit();queries_redirect(remove_from_uri("page"),lang(257,$_a),$H);$l->rollback();}}}$Ph=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
+page_header(lang(52).": $Ph",$m);$N=null;if(isset($Qg["insert"])||!support("table")){$Rf=array();foreach((array)$_GET["where"]as$X){if(isset($nd[$X["col"]])&&count($nd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Rf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$N=$Rf?"&".http_build_query($Rf):"";}$b->selectLinks($R,$N);if(!$e&&support("table"))echo"".lang(258).($o?".":": ".error())."\n";else{echo"
\n","";hidden_fields_get();echo(DB!=""?' '.(isset($_GET["ns"])?' ':""):"");echo' ',"
\n";$b->selectColumnsPrint($L,$e);$b->selectSearchPrint($Z,$e,$w);$b->selectOrderPrint($Bf,$e,$w);$b->selectLimitPrint($z);$b->selectLengthPrint($di);$b->selectActionPrint($w);echo" \n";$E=$_GET["page"];if($E=="last"){$qd=$g->result(count_rows($a,$Z,$de,$wd));$E=floor(max(0,$qd-1)/$z);}$bh=$L;$xd=$wd;if(!$bh){$bh[]="*";$Ib=convert_fields($e,$o,$L);if($Ib)$bh[]=substr($Ib,2);}foreach($L
+as$y=>$X){$n=$o[idf_unescape($X)];if($n&&($Ga=convert_field($n)))$bh[$y]="$Ga AS $X";}if(!$de&&$Ii){foreach($Ii
+as$y=>$X){$bh[]=idf_escape($y);if($xd)$xd[]=idf_escape($y);}}$H=$l->select($a,$bh,$Z,$xd,$Bf,$z,$E,true);if(!$H)echo"".error()."\n";else{if($x=="mssql"&&$E)$H->seek($z*$E);$Bc=array();echo"
\n";$K=array();while($J=$H->fetch_assoc()){if($E&&$x=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["page"]!="last"&&$z!=""&&$wd&&$de&&$x=="sql")$qd=$g->result(" SELECT FOUND_ROWS()");if(!$K)echo"".lang(13)."\n";else{$Pa=$b->backwardKeys($a,$Ph);echo"
\n";}if(!is_ajax()){if($K||$E){$Nc=true;if($_GET["page"]!="last"){if($z==""||(count($K)<$z&&($K||!$E)))$qd=($E?$E*$z:0)+count($K);elseif($x!="sql"||!$de){$qd=($de?false:found_rows($R,$Z));if($qd$z||$E));if($Pf){echo(($qd===false?count($K)+1:$qd-$E*$z)>$z?''.lang(263).' '.script("qsl('a').onclick = partial(selectLoadMore, ".(+$z).", '".lang(264)."…');",""):''),"\n";}}echo"
\n";if($b->selectImportPrint()){echo"","
".lang(71)." ",script("qsl('a').onclick = partial(toggle, 'import');",""),"
: "," ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$za["format"],1);echo" "," ","
";}echo" \n"," \n",(!$wd&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?lang(117):lang(116));$Wi=($O?show_status():show_variables());if(!$Wi)echo"".lang(13)."\n";else{echo"
\n";foreach($Wi
+as$y=>$X){echo"","".h($y)."
","".h($X);}echo"
\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$R){json_row("Comment-$C",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$y)json_row("$y-$C",h($R[$y]));foreach($Mh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($R[$y]!=""){$X=format_number($R[$y]);json_row("$y-$C",($y=="Rows"&&$X&&$R["Engine"]==($x=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mh[$y]))$Mh[$y]+=($R["Engine"]!="InnoDB"||$y!="Data_free"?$R[$y]:0);}elseif(array_key_exists($y,$R))json_row("$y-$C");}}}foreach($Mh
+as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Vh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Vh&&!$m&&!$_POST["search"]){$H=true;$Oe="";if($x=="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"]);$Oe=lang(268);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Oe=lang(269);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Oe=lang(270);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Oe=lang(271);}elseif($x!="sql"){$H=($x=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Oe=lang(272);}elseif(!$_POST["tables"])$Oe=lang(10);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$Oe.="".h($J["Table"])." : ".h($J["Msg_text"])." ";}queries_redirect(substr(ME,0,-1),$Oe,$H);}page_header(($_GET["ns"]==""?lang(36).": ".h(DB):lang(75).": ".h($_GET["ns"])),$m,true);if($b->homepage()){if($_GET["ns"]!==""){echo"".lang(273)." \n";$Uh=tables_list();if(!$Uh)echo"".lang(10)."\n";else{echo"
\n";if(support("table")){echo"".lang(274)." "," ",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$l->convertOperator("LIKE %%");search_tables();}}echo"\n";if(!information_schema(DB)){echo"\n";}echo" \n",script("tableCheck();");}echo''.lang(73)." \n",(support("view")?''.lang(205)." \n":"");if(support("routine")){echo"
".lang(144)." \n";$Ug=routines();if($Ug){echo"\n",''.lang(184).' '.lang(48).' '.lang(222)." \n";foreach($Ug
+as$J){$C=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'',''.h($J["ROUTINE_NAME"]).' ',''.h($J["ROUTINE_TYPE"]),' '.h($J["DTD_IDENTIFIER"]),' '.lang(135)." ";}echo"
\n";}echo''.(support("procedure")?''.lang(221).' ':'').''.lang(220)." \n";}if(support("sequence")){echo"
".lang(290)." \n";$jh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($jh){echo"\n","".lang(184)." \n";foreach($jh
+as$X)echo"".h($X)." \n";echo"
\n";}echo"".lang(227)." \n";}if(support("type")){echo"
".lang(9)." \n";$Ri=types();if($Ri){echo"\n","".lang(184)." \n";foreach($Ri
+as$X)echo"".h($X)." \n";echo"
\n";}echo"".lang(231)." \n";}if(support("event")){echo"
".lang(145)." \n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","".lang(184)." ".lang(291)." ".lang(211)." ".lang(212)." \n";foreach($K
+as$J){echo"","".h($J["Name"])," ".($J["Execute at"]?lang(292)." ".$J["Execute at"]:lang(213)." ".$J["Interval value"]." ".$J["Interval field"]." $J[Starts]")," $J[Ends]",' '.lang(135).' ';}echo"
\n";$Lc=$g->result("SELECT @@event_scheduler");if($Lc&&$Lc!="ON")echo"event_scheduler
: ".h($Lc)."\n";}echo'
'.lang(210)." \n";}if($Uh)echo
+script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();
\ No newline at end of file
diff --git a/docs/db-empty.png b/docs/db-empty.png
new file mode 100644
index 0000000..50d6784
Binary files /dev/null and b/docs/db-empty.png differ
diff --git a/docs/db-error.png b/docs/db-error.png
new file mode 100644
index 0000000..e2eb2e5
Binary files /dev/null and b/docs/db-error.png differ
diff --git a/docs/login.png b/docs/login.png
new file mode 100644
index 0000000..0220e61
Binary files /dev/null and b/docs/login.png differ
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..58f33ad
--- /dev/null
+++ b/index.php
@@ -0,0 +1,12 @@
+password_hash = $password_hash;
+ }
+
+ function credentials() {
+ $password = get_password();
+ return array(SERVER, $_GET["username"], (password_verify($password, $this->password_hash) ? "" : $password));
+ }
+
+ function login($login, $password) {
+ if ($password != "") {
+ return true;
+ }
+ }
+
+}
diff --git a/plugins/plugin.php b/plugins/plugin.php
new file mode 100644
index 0000000..adcc440
--- /dev/null
+++ b/plugins/plugin.php
@@ -0,0 +1,408 @@
+_findRootClass($class), 'Adminer')) { //! can use interface
+ $plugins[$class] = new $class;
+ }
+ }
+ }
+ $this->plugins = $plugins;
+ //! it is possible to use ReflectionObject to find out which plugins defines which methods at once
+ }
+
+ function _callParent($function, $args) {
+ return call_user_func_array(array('parent', $function), $args);
+ }
+
+ function _applyPlugin($function, $args) {
+ foreach ($this->plugins as $plugin) {
+ if (method_exists($plugin, $function)) {
+ switch (count($args)) { // call_user_func_array() doesn't work well with references
+ case 0: $return = $plugin->$function(); break;
+ case 1: $return = $plugin->$function($args[0]); break;
+ case 2: $return = $plugin->$function($args[0], $args[1]); break;
+ case 3: $return = $plugin->$function($args[0], $args[1], $args[2]); break;
+ case 4: $return = $plugin->$function($args[0], $args[1], $args[2], $args[3]); break;
+ case 5: $return = $plugin->$function($args[0], $args[1], $args[2], $args[3], $args[4]); break;
+ case 6: $return = $plugin->$function($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]); break;
+ default: trigger_error('Too many parameters.', E_USER_WARNING);
+ }
+ if ($return !== null) {
+ return $return;
+ }
+ }
+ }
+ return $this->_callParent($function, $args);
+ }
+
+ function _appendPlugin($function, $args) {
+ $return = $this->_callParent($function, $args);
+ foreach ($this->plugins as $plugin) {
+ if (method_exists($plugin, $function)) {
+ $value = call_user_func_array(array($plugin, $function), $args);
+ if ($value) {
+ $return += $value;
+ }
+ }
+ }
+ return $return;
+ }
+
+ // appendPlugin
+
+ function dumpFormat() {
+ $args = func_get_args();
+ return $this->_appendPlugin(__FUNCTION__, $args);
+ }
+
+ function dumpOutput() {
+ $args = func_get_args();
+ return $this->_appendPlugin(__FUNCTION__, $args);
+ }
+
+ function editRowPrint($table, $fields, $row, $update) {
+ $args = func_get_args();
+ return $this->_appendPlugin(__FUNCTION__, $args);
+ }
+
+ function editFunctions($field) {
+ $args = func_get_args();
+ return $this->_appendPlugin(__FUNCTION__, $args);
+ }
+
+ // applyPlugin
+
+ function name() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function credentials() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function connectSsl() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function permanentLogin($create = false) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function bruteForceKey() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function serverName($server) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function database() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function schemas() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function databases($flush = true) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function queryTimeout() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function headers() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function csp() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function head() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function css() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function loginForm() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function loginFormField($name, $heading, $value) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function login($login, $password) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function tableName($tableStatus) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function fieldName($field, $order = 0) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectLinks($tableStatus, $set = "") {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function foreignKeys($table) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function backwardKeys($table, $tableName) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function backwardKeysPrint($backwardKeys, $row) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectQuery($query, $start, $failed = false) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function sqlCommandQuery($query) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function rowDescription($table) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function rowDescriptions($rows, $foreignKeys) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectLink($val, $field) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectVal($val, $link, $field, $original) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function editVal($val, $field) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function tableStructurePrint($fields) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function tableIndexesPrint($indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectColumnsPrint($select, $columns) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectSearchPrint($where, $columns, $indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectOrderPrint($order, $columns, $indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectLimitPrint($limit) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectLengthPrint($text_length) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectActionPrint($indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectCommandPrint() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectImportPrint() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectEmailPrint($emailFields, $columns) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectColumnsProcess($columns, $indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectSearchProcess($fields, $indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectOrderProcess($fields, $indexes) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectLimitProcess() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectLengthProcess() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectEmailProcess($where, $foreignKeys) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function selectQueryBuild($select, $where, $group, $order, $limit, $page) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function messageQuery($query, $time, $failed = false) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function editInput($table, $field, $attrs, $value) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function editHint($table, $field, $value) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function processInput($field, $value, $function = "") {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function dumpDatabase($db) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function dumpTable($table, $style, $is_view = 0) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function dumpData($table, $style, $query) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function dumpFilename($identifier) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function dumpHeaders($identifier, $multi_table = false) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function importServerPath() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function homepage() {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function navigation($missing) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function databasesPrint($missing) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+ function tablesPrint($tables) {
+ $args = func_get_args();
+ return $this->_applyPlugin(__FUNCTION__, $args);
+ }
+
+}