Guest User

Untitled

a guest
Mar 16th, 2018
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 196.00 KB | None | 0 0
  1. <?php
  2.  
  3. */error_reporting(6135);$lc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($lc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$xg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($xg)$$X=$xg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
  4. connection(){global$h;return$h;}function
  5. adminer(){global$b;return$b;}function
  6. version(){global$ca;return$ca;}function
  7. idf_unescape($v){$rd=substr($v,-1);return
  8. str_replace($rd.$rd,$rd,substr($v,1,-1));}function
  9. escape_string($X){return
  10. substr(q($X),1,-1);}function
  11. number($X){return
  12. preg_replace('~[^0-9]+~','',$X);}function
  13. number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
  14. remove_slashes($Ge,$lc=false){if(get_magic_quotes_gpc()){while(list($z,$X)=each($Ge)){foreach($X
  15. as$id=>$W){unset($Ge[$z][$id]);if(is_array($W)){$Ge[$z][stripslashes($id)]=$W;$Ge[]=&$Ge[$z][stripslashes($id)];}else$Ge[$z][stripslashes($id)]=($lc?$W:stripslashes($W));}}}}function
  16. bracket_escape($v,$Ga=false){static$ig=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
  17. strtr($v,($Ga?array_flip($ig):$ig));}function
  18. min_version($Ig,$Cd="",$i=null){global$h;if(!$i)$i=$h;$rf=$i->server_info;if($Cd&&preg_match('~([\d.]+)-MariaDB~',$rf,$B)){$rf=$B[1];$Ig=$Cd;}return(version_compare($rf,$Ig)>=0);}function
  19. charset($h){return(min_version("5.5.3",0,$h)?"utf8mb4":"utf8");}function
  20. script($zf,$hg="\n"){return"<script".nonce().">$zf</script>$hg";}function
  21. script_src($Bg){return"<script src='".h($Bg)."'".nonce()."></script>\n";}function
  22. nonce(){return' nonce="'.get_nonce().'"';}function
  23. target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
  24. h($Q){return
  25. str_replace("\0","&#0;",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
  26. nbsp($Q){return(trim($Q)!=""?h($Q):"&nbsp;");}function
  27. nl_br($Q){return
  28. str_replace("\n","<br>",$Q);}function
  29. checkbox($C,$Y,$Va,$od="",$de="",$d="",$pd=""){$J="<input type='checkbox' name='$C' value='".h($Y)."'".($Va?" checked":"").($pd?" aria-labelledby='$pd'":"").">".($de?script("qsl('input').onclick = function () { $de };",""):"");return($od!=""||$d?"<label".($d?" class='$d'":"").">$J".h($od)."</label>":$J);}function
  30. optionlist($D,$lf=null,$Eg=false){$J="";foreach($D
  31. as$id=>$W){$ie=array($id=>$W);if(is_array($W)){$J.='<optgroup label="'.h($id).'">';$ie=$W;}foreach($ie
  32. as$z=>$X)$J.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$lf?' selected':'').'>'.h($X);if(is_array($W))$J.='</optgroup>';}return$J;}function
  33. html_select($C,$D,$Y="",$ce=true,$pd=""){if($ce)return"<select name='".h($C)."'".($pd?" aria-labelledby='$pd'":"").">".optionlist($D,$Y)."</select>".(is_string($ce)?script("qsl('select').onchange = function () { $ce };",""):"");$J="";foreach($D
  34. as$z=>$X)$J.="<label><input type='radio' name='".h($C)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$J;}function
  35. select_input($Ca,$D,$Y="",$ce="",$ye=""){$Rf=($D?"select":"input");return"<$Rf$Ca".($D?"><option value=''>$ye".optionlist($D,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$ye'>").($ce?script("qsl('$Rf').onchange = $ce;",""):"");}function
  36. confirm($Kd="",$mf="qsl('input')"){return
  37. script("$mf.onclick = function () { return confirm('".($Kd?js_escape($Kd):'Are you sure?')."'); };","");}function
  38. print_fieldset($u,$td,$Lg=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$td</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($Lg?"":" class='hidden'").">\n";}function
  39. bold($Oa,$d=""){return($Oa?" class='active $d'":($d?" class='$d'":""));}function
  40. odd($J=' class="odd"'){static$t=0;if(!$J)$t=-1;return($t++%2?$J:'');}function
  41. js_escape($Q){return
  42. addcslashes($Q,"\r\n'\\/");}function
  43. json_row($z,$X=null){static$mc=true;if($mc)echo"{";if($z!=""){echo($mc?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$mc=false;}else{echo"\n}\n";$mc=true;}}function
  44. ini_bool($Zc){$X=ini_get($Zc);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
  45. sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
  46. set_password($Hg,$O,$V,$G){$_SESSION["pwds"][$Hg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function
  47. get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
  48. q($Q){global$h;return$h->quote($Q);}function
  49. get_vals($H,$f=0){global$h;$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$f];}return$J;}function
  50. get_key_vals($H,$i=null,$Yf=0,$uf=true){global$h;if(!is_object($i))$i=$h;$J=array();$i->timeout=$Yf;$I=$i->query($H);$i->timeout=0;if(is_object($I)){while($K=$I->fetch_row()){if($uf)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
  51. get_rows($H,$i=null,$o="<p class='error'>"){global$h;$ib=(is_object($i)?$i:$h);$J=array();$I=$ib->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!is_object($i)&&$o&&defined("PAGE_HEADER"))echo$o.error()."\n";return$J;}function
  52. unique_array($K,$x){foreach($x
  53. as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$J=array();foreach($w["columns"]as$z){if(!isset($K[$z]))continue
  54. 2;$J[$z]=$K[$z];}return$J;}}}function
  55. escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
  56. idf_escape($z);}function
  57. where($Z,$q=array()){global$h,$y;$J=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$f=escape_key($z);$J[]=$f.($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X)?" LIKE ".q(addcslashes($X,"%_\\")):($y=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($q[$z],q($X))));if($y=="sql"&&preg_match('~char|text~',$q[$z]["type"])&&preg_match("~[^ -@]~",$X))$J[]="$f = ".q($X)." COLLATE ".charset($h)."_bin";}foreach((array)$Z["null"]as$z)$J[]=escape_key($z)." IS NULL";return
  58. implode(" AND ",$J);}function
  59. where_check($X,$q=array()){parse_str($X,$Ta);remove_slashes(array(&$Ta));return
  60. where($Ta,$q);}function
  61. where_link($t,$f,$Y,$fe="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($f)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$fe:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
  62. convert_fields($g,$q,$M=array()){$J="";foreach($g
  63. as$z=>$X){if($M&&!in_array(idf_escape($z),$M))continue;$za=convert_field($q[$z]);if($za)$J.=", $za AS ".idf_escape($z);}return$J;}function
  64. cookie($C,$Y,$wd=2592000){global$aa;return
  65. header("Set-Cookie: $C=".urlencode($Y).($wd?"; expires=".gmdate("D, d M Y H:i:s",time()+$wd)." GMT":"")."; path=".preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]).($aa?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
  66. restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
  67. stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
  68. set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
  69. auth_url($Hg,$O,$V,$m=null){global$Eb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($Eb))."|username|".($m!==null?"db|":"").session_name()),$B);return"$B[1]?".(sid()?SID."&":"").($Hg!="server"||$O!=""?urlencode($Hg)."=".urlencode($O)."&":"")."username=".urlencode($V).($m!=""?"&db=".urlencode($m):"").($B[2]?"&$B[2]":"");}function
  70. is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
  71. redirect($yd,$Kd=null){if($Kd!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($yd!==null?$yd:$_SERVER["REQUEST_URI"]))][]=$Kd;}if($yd!==null){if($yd=="")$yd=".";header("Location: $yd");exit;}}function
  72. query_redirect($H,$yd,$Kd,$Re=true,$Xb=true,$ec=false,$Xf=""){global$h,$o,$b;if($Xb){$Ef=microtime(true);$ec=!$h->query($H);$Xf=format_time($Ef);}$Bf="";if($H)$Bf=$b->messageQuery($H,$Xf,$ec);if($ec){$o=error().$Bf.script("messagesPrint();");return
  73. false;}if($Re)redirect($yd,$Kd.$Bf);return
  74. true;}function
  75. queries($H){global$h;static$Ke=array();static$Ef;if(!$Ef)$Ef=microtime(true);if($H===null)return
  76. array(implode("\n",$Ke),format_time($Ef));$Ke[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return$h->query($H);}function
  77. apply_queries($H,$T,$Ub='table'){foreach($T
  78. as$R){if(!queries("$H ".$Ub($R)))return
  79. false;}return
  80. true;}function
  81. queries_redirect($yd,$Kd,$Re){list($Ke,$Xf)=queries(null);return
  82. query_redirect($Ke,$yd,$Kd,$Re,false,!$Re,$Xf);}function
  83. format_time($Ef){return
  84. sprintf('%.3f s',max(0,microtime(true)-$Ef));}function
  85. remove_from_uri($qe=""){return
  86. substr(preg_replace("~(?<=[?&])($qe".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
  87. pagination($E,$rb){return" ".($E==$rb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
  88. get_file($z,$vb=false){$jc=$_FILES[$z];if(!$jc)return
  89. null;foreach($jc
  90. as$z=>$X)$jc[$z]=(array)$X;$J='';foreach($jc["error"]as$z=>$o){if($o)return$o;$C=$jc["name"][$z];$eg=$jc["tmp_name"][$z];$kb=file_get_contents($vb&&preg_match('~\\.gz$~',$C)?"compress.zlib://$eg":$eg);if($vb){$Ef=substr($kb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Ef,$Se))$kb=iconv("utf-16","utf-8",$kb);elseif($Ef=="\xEF\xBB\xBF")$kb=substr($kb,3);$J.=$kb."\n\n";}else$J.=$kb;}return$J;}function
  91. upload_error($o){$Hd=($o==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($o?'Unable to upload a file.'.($Hd?" ".sprintf('Maximum allowed file size is %sB.',$Hd):""):'File does not exist.');}function
  92. repeat_pattern($we,$ud){return
  93. str_repeat("$we{0,65535}",$ud/65535)."$we{0,".($ud%65535)."}";}function
  94. is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function
  95. shorten_utf8($Q,$ud=80,$Lf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$ud).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ud).")($)?)",$Q,$B);return
  96. h($B[1]).$Lf.(isset($B[2])?"":"<i>...</i>");}function
  97. format_number($X){return
  98. strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
  99. friendly_url($X){return
  100. preg_replace('~[^a-z0-9_]~i','-',$X);}function
  101. hidden_fields($Ge,$Qc=array()){$J=false;while(list($z,$X)=each($Ge)){if(!in_array($z,$Qc)){if(is_array($X)){foreach($X
  102. as$id=>$W)$Ge[$z."[$id]"]=$W;}else{$J=true;echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">';}}}return$J;}function
  103. hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
  104. table_status1($R,$fc=false){$J=table_status($R,$fc);return($J?$J:array("Name"=>$R));}function
  105. column_foreign_keys($R){global$b;$J=array();foreach($b->foreignKeys($R)as$uc){foreach($uc["source"]as$X)$J[$X][]=$uc;}return$J;}function
  106. enum_input($U,$Ca,$p,$Y,$Pb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$p["length"],$Ed);$J=($Pb!==null?"<label><input type='$U'$Ca value='$Pb'".((is_array($Y)?in_array($Pb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Ed[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Va=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$J.=" <label><input type='$U'$Ca value='".($t+1)."'".($Va?' checked':'').'>'.h($b->editVal($X,$p)).'</label>';}return$J;}function
  107. input($p,$Y,$s){global$sg,$b,$y;$C=h(bracket_escape($p["field"]));echo"<td class='function'>";if(is_array($Y)&&!$s){$xa=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$xa[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$xa);$s="json";}$Xe=($y=="mssql"&&$p["auto_increment"]);if($Xe&&!$_POST["save"])$s=null;$_c=(isset($_GET["select"])||$Xe?array("orig"=>'original'):array())+$b->editFunctions($p);$Ca=" name='fields[$C]'";if($p["type"]=="enum")echo
  108. nbsp($_c[""])."<td>".$b->editInput($_GET["edit"],$p,$Ca,$Y);else{$Gc=(in_array($s,$_c)||isset($_c[$s]));echo(count($_c)>1?"<select name='function[$C]'>".optionlist($_c,$s===null||$Gc?$s:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):nbsp(reset($_c))).'<td>';$bd=$b->editInput($_GET["edit"],$p,$Ca,$Y);if($bd!="")echo$bd;elseif(preg_match('~bool~',$p["type"]))echo"<input type='hidden'$Ca value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$Ca value='1'>";elseif($p["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$p["length"],$Ed);foreach($Ed[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Va=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$C][$t]' value='".(1<<$t)."'".($Va?' checked':'').">".h($b->editVal($X,$p)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$p["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif(($Uf=preg_match('~text|lob~',$p["type"]))||preg_match("~\n~",$Y)){if($Uf&&$y!="sqlite")$Ca.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$Ca.=" cols='30' rows='$L'".($L==1?" style='height: 1.2em;'":"");}echo"<textarea$Ca>".h($Y).'</textarea>';}elseif($s=="json"||preg_match('~^jsonb?$~',$p["type"]))echo"<textarea$Ca cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$Jd=(!preg_match('~int~',$p["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$p["length"],$B)?((preg_match("~binary~",$p["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$p["unsigned"]?1:0)):($sg[$p["type"]]?$sg[$p["type"]]+($p["unsigned"]?0:1):0));if($y=='sql'&&min_version(5.6)&&preg_match('~time~',$p["type"]))$Jd+=7;echo"<input".((!$Gc||$s==="")&&preg_match('~(?<!o)int(?!er)~',$p["type"])&&!preg_match('~\[\]~',$p["full_type"])?" type='number'":"")." value='".h($Y)."'".($Jd?" data-maxlength='$Jd'":"").(preg_match('~char|binary~',$p["type"])&&$Jd>20?" size='40'":"")."$Ca>";}echo$b->editHint($_GET["edit"],$p,$Y);$mc=0;foreach($_c
  109. as$z=>$X){if($z===""||!$X)break;$mc++;}if($mc)echo
  110. script("mixin(qsl('td'), {onchange: partial(skipOriginal, $mc), oninput: function () { this.onchange(); }});");}}function
  111. process_input($p){global$b,$n;$v=bracket_escape($p["field"]);$s=$_POST["function"][$v];$Y=$_POST["fields"][$v];if($p["type"]=="enum"){if($Y==-1)return
  112. false;if($Y=="")return"NULL";return+$Y;}if($p["auto_increment"]&&$Y=="")return
  113. null;if($s=="orig")return($p["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($p["field"]):false);if($s=="NULL")return"NULL";if($p["type"]=="set")return
  114. array_sum((array)$Y);if($s=="json"){$s="";$Y=json_decode($Y,true);if(!is_array($Y))return
  115. false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$p["type"])&&ini_bool("file_uploads")){$jc=get_file("fields-$v");if(!is_string($jc))return
  116. false;return$n->quoteBinary($jc);}return$b->processInput($p,$Y,$s);}function
  117. fields_from_edit(){global$n;$J=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$C=bracket_escape($z,1);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$n->primary),);}return$J;}function
  118. search_tables(){global$b,$h;$_GET["where"][0]["val"]=$_POST["query"];$of="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=$b->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=$h->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$Ee="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$of<li>".($I?$Ee:"<p class='error'>$Ee: ".error())."\n";$of="";}}}echo($of?"<p class='message'>".'No tables.':"</ul>")."\n";}function
  119. dump_headers($Oc,$Pd=false){global$b;$J=$b->dumpHeaders($Oc,$Pd);$ne=$_POST["output"];if($ne!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Oc).".$J".($ne!="file"&&!preg_match('~[^0-9a-z]~',$ne)?".$ne":""));session_write_close();ob_flush();flush();return$J;}function
  120. dump_csv($K){foreach($K
  121. as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$K[$z]='"'.str_replace('"','""',$X).'"';}echo
  122. implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
  123. apply_sql_function($s,$f){return($s?($s=="unixepoch"?"DATETIME($f, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$f)"):$f);}function
  124. get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$r=@tempnam("","");if(!$r)return
  125. false;$J=dirname($r);unlink($r);}}return$J;}function
  126. file_open_lock($r){$yc=@fopen($r,"r+");if(!$yc){$yc=@fopen($r,"w");if(!$yc)return;chmod($r,0660);}flock($yc,LOCK_EX);return$yc;}function
  127. file_write_unlock($yc,$sb){rewind($yc);fwrite($yc,$sb);ftruncate($yc,strlen($sb));flock($yc,LOCK_UN);fclose($yc);}function
  128. password_file($nb){$r=get_temp_dir()."/adminer.key";$J=@file_get_contents($r);if($J||!$nb)return$J;$yc=@fopen($r,"w");if($yc){chmod($r,0660);$J=rand_string();fwrite($yc,$J);fclose($yc);}return$J;}function
  129. rand_string(){return
  130. md5(uniqid(mt_rand(),true));}function
  131. select_value($X,$A,$p,$Vf){global$b;if(is_array($X)){$J="";foreach($X
  132. as$id=>$W)$J.="<tr>".($X!=array_values($X)?"<th>".h($id):"")."<td>".select_value($W,$A,$p,$Vf);return"<table cellspacing='0'>$J</table>";}if(!$A)$A=$b->selectLink($X,$p);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$J=$b->editVal($X,$p);if($J!==null){if($J==="")$J="&nbsp;";elseif(!is_utf8($J))$J="\0";elseif($Vf!=""&&is_shortable($p))$J=shorten_utf8($J,max(0,+$Vf));else$J=h($J);}return$b->selectVal($J,$A,$p,$X);}function
  133. is_mail($Mb){$_a='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$we="$_a+(\\.$_a+)*@($Db?\\.)+$Db";return
  134. is_string($Mb)&&preg_match("(^$we(,\\s*$we)*\$)i",$Mb);}function
  135. is_url($Q){$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
  136. preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
  137. is_shortable($p){return
  138. preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$p["type"]);}function
  139. count_rows($R,$Z,$gd,$Ac){global$y;$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($gd&&($y=="sql"||count($Ac)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$Ac).")$H":"SELECT COUNT(*)".($gd?" FROM (SELECT 1$H GROUP BY ".implode(", ",$Ac).") x":$H));}function
  140. slow_query($H){global$b,$gg;$m=$b->database();$Yf=$b->queryTimeout();if(support("kill")&&is_object($i=connect())&&($m==""||$i->select_db($m))){$nd=$i->result(connection_id());echo'<script',nonce(),'>
  141. var timeout = setTimeout(function () {
  142. ajax(\'',js_escape(ME),'script=kill\', function () {
  143. }, \'kill=',$nd,'&token=',$gg,'\');
  144. }, ',1000*$Yf,');
  145. </script>
  146. ';}else$i=null;ob_flush();flush();$J=@get_key_vals($H,$i,$Yf,false);if($i){echo
  147. script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
  148. get_token(){$Ne=rand(1,1e6);return($Ne^$_SESSION["token"]).":$Ne";}function
  149. verify_token(){list($gg,$Ne)=explode(":",$_POST["token"]);return($Ne^$_SESSION["token"])==$gg;}function
  150. lzw_decompress($La){$Bb=256;$Ma=8;$ab=array();$Ze=0;$af=0;for($t=0;$t<strlen($La);$t++){$Ze=($Ze<<8)+ord($La[$t]);$af+=8;if($af>=$Ma){$af-=$Ma;$ab[]=$Ze>>$af;$Ze&=(1<<$af)-1;$Bb++;if($Bb>>$Ma)$Ma++;}}$Ab=range("\0","\xFF");$J="";foreach($ab
  151. as$t=>$Za){$Lb=$Ab[$Za];if(!isset($Lb))$Lb=$Ug.$Ug[0];$J.=$Lb;if($t)$Ab[]=$Ug.$Lb[0];$Ug=$Lb;}return$J;}function
  152. on_help($fb,$vf=0){return
  153. script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $fb, $vf) }, onmouseout: helpMouseout});","");}function
  154. edit_form($a,$q,$K,$_g){global$b,$y,$gg,$o;$Pf=$b->tableName(table_status1($a,true));page_header(($_g?'Edit':'Insert'),$o,array("select"=>array($a,$Pf)),$Pf);if($K===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
  155. ';if(!$q)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0'>".script("qsl('table').onkeydown = editingKeydown;");foreach($q
  156. as$C=>$p){echo"<tr><th>".$b->fieldName($p);$wb=$_GET["set"][bracket_escape($C)];if($wb===null){$wb=$p["default"];if($p["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$wb,$Se))$wb=$Se[1];}$Y=($K!==null?($K[$C]!=""&&$y=="sql"&&preg_match("~enum|set~",$p["type"])?(is_array($K[$C])?array_sum($K[$C]):+$K[$C]):$K[$C]):(!$_g&&$p["auto_increment"]?"":(isset($_GET["select"])?false:$wb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$p);$s=($_POST["save"]?(string)$_POST["function"][$C]:($_g&&$p["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$p["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$s="now";}input($p,$Y,$s);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($q){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($_g?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($_g?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."...', this); };"):"");}}echo($_g?"<input type='submit' name='delete' value='".'Delete'."'>".confirm()."\n":($_POST||!$q?"":script("focus(qsa('td', qs('#form'))[1].firstChild);")));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
  157. <input type="hidden" name="save" value="1">
  158. <input type="hidden" name="token" value="',$gg,'">
  159. </form>
  160. ';}if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
  161. lzw_decompress("\0\0\0` \0\84\0\n @\0\B4C\84\E8\"\0`E\E3Q\B8\E0\FF\87?\C0tvM'\94Jd\C1d\\\8Cb0\0\C4\"\99\C0fӈ\A4\EEs5\9B\CF\E7\D1A\9DXPaJ\930\84\A5\918\84#R\8AT\A9\91z`\88#.\A9\C7c\EDX\C3\FEȀ?\C0-\0\A1Im?\A0.\ABM\B6\80\0ȯ(̉\FD\C0/(%\8C\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
  162. lzw_decompress("\n1̇\93ٌ\DEl7\9C\87B1\844vb0\98\CDfs\91\BC\EAn2B\CCѱ٘\DEn:\87#(\BCb.\rDc)\C8\C8a7E\84\91\A4\C2l \A6ñ\94\E8i1̎s\98\B4\E7-4\99\87f\D3 \C8\CEi7\86\B3\E9\86 \84\8E\8CFé\94vt2\9E\82\D3!\96 r0\CF\E3\E3\A3t~\BDU\8D'3M\80\C9W\84B\A6'c\CDP\C2:6T\rc\A3A\BEzr_\EEWK\B6\r-\BCVNFS%~\C3c\B2\D9\ED&\9B\\^\CAr\C0\9B\AD\E6u\82ŎÞ\F4ً4'7k\B6\E8\AF\C2\E3Q\D4\E6h\9A'g\rFB\ryT7SS\A5P\D01=ǤcI\E8\CA:\8Dd\94\BAm>\A3S8L\86J\81\9Ct.M\A2\8F\8A ϋ`'C\A1\BC\DB\D0889\A4\C8 \8EQ\D8\FD\8C\EE2\8D#8А\AD\A3\92\986m\FA\B2\86\F0j\88\A2h\AB<\85\8C\B0\AB\8C9/\EB\98\E7:\90J\EA)ʂ\A4\0d>!\0Z\87\88v\EC\BBn\EB\BE\F0\BCo(\DA\F3\A5\C9k\D47\BD\8Fs\E0\F9>\8C \EE\86!\D0R\"*nS\FD\0@P\"\C1\E8\92(\8B#[\B6\A5\A3@g \B9o\FC\AD\92zn\FE9k\A48\86n\9A\99\AA1\B4I*\88\F4 =\CDn\B2\A4\AA\8F\B8\E80\ABc(\F6;\BEà\D0\E8!\B0\FC\EB*c\EC\F7>Ύ\ACE7D\F1LJ\A9\A01\C8\E4\B7\E3`\C28(\E1\D53M\A8\F3\"\C739\E9?E \81e=Ҭ\FC~\F9\BE\B2\F4\C5\EEӸ7;\C9C\C4\C1\9B\CDE\rd!)\C2a*\AF5ajo\0\AA#`\CA38\B6\0\CA\ED]\93e\8C\EA\88\C62\A4 mk\D7\F8e]\85\C1\ADAZs\D5StZ\95Z!)BR\A8G+\CE#Jv2(\E3\A0\F6\EEc\854<\B8#sB\AF0\E9\FA\826YL\r\B2=\A3\85\BF[\D773\C6\F0<\D4:\A3\8Abx\94\DFJ= m_ \BE\CF\C5f\AAl\D9\D7t\8B\E5I\AA\83H\DA3\8Fx*\80\9B\E16`t6\BE\C3%\9DU\D4L\F2eق\98<\B4\0\C9AQ<P<:\9A#u/\A4:T\\>\A0\CB-\85xJ\88͍ QH\nj\A1L+j\DDz\F0\F3\B07\A3\95\AB`\DD\F0\8E\B3\nk\83\83'\93N\D3vX>\EEC-T˩\B6\9C\B8\90\864*L\94%Cj>7ߨ\8Aި\AD\F5\99`\F9\AE\9C;y\D8\FB\C6q\C1r\CA3 #\A8\D9} :#n\ED\r\E3\BD^\C5=C\E5Aܸ\DDƎ\81s&8\8E\A3K&\BB\F4*0\D1\D2t\DDS\C9\D4\C5=\BE[\D7\F3:\9D\\]\C3E݌\9D/O\E0>^]\D8ø\C2<\8D\E8\D8\F7gZ\D4V\86\E9q\BA\B3\8A\8C\F9 \F1\CBx\\\AD\8D\E8\95\F6\B9\DF޺\B4\84\"J\A0\\î\88\FB##\C1\A1\BDD\86\CEx6\EA\9C\DA5x\CA\DC\80\B8\B6\86\A8\rH\F8l \8B\F1\F8\B0b\FA\A0r\BC7\E1\D46\86\E0\F6j|\C1\89\F4\A2ۖ*\F4F AquvyO\92\BDWeM\8B\D6\F7\89D.F\E1\F6:R\D0\$ -\A1\DE\B6\B5T!\ECDS`\B08D\98~\9F\E0A`(\C7em\83\A6\F2\FD\A2T@O1@\BA\86X\A6\E2\93\nLp\F0\96\91P\E4\FE\C1\D3\C2m\AByf\B8 \A3) \89\ABˆ\DAGSEI\89\81\A5xC(s(a\9D?\$`tE\A8n\84\F1\B1\AD,\F7\D5 \$a\90\8BU>,\E8В\$Z\F1kDm,G\0\E5\A0\\\90\90i\FA\A3%ʹ\A2 n\AC\A5\A5\B1\B7\EC\DD\DCg\90\C9\84b y`\92\F2Ԇ\CBW\EC\B7 䗗\A1_C\C0\C4T\ni\90\CFH%\D5da \C0\D6i\CD7\EDAt\B0,\C1\AEJ\86X4n\88\91\94\880o͹\BB9g\nzm\8BM%`\C9'I\FC\80\8DО-\E8\F2\A9\D07:p\F03p\C7\8DQ\97rED\9A\A4\D7\EC\A0\E0b2 ]\85PF\A0\FD\A5\C9>e\C9\FA\863j\n\80߰t!\C1?4f\90tK;\A3\CA\rΞи\AD!\E0o\8Au\9D?\D3\FA\81Ph\9E\90\D20uIC}'~\C5\C82\87v\FEQ\A8\D2\CE8)\EC\C0\867\ECDI\F9=\A7\E9y&\95\A2ea\E0s*hɕjlA\C4(\EA\9B\"\C4\\\D3\EAm^i\91\AEM)\82\B0^\83 |~\D5l\A8\B6#!Y\CDf81RS\8E\A0\C1\B5!\87\86\E862P\C6C\91\F4l&\ED\FB\E4xd!\8C|\A0\E89\B0`\D6_OY\ED=\F0\D1G\E0[E\C9-eL\F1CvT\AC )\C4@\90j -5\A8\B6\9CpSg\BB.\92G=\81\94\D0ZE\D2\F6\$\0\A2цKj\EDU\A7\B5\$\A0\82\C0G'I\E4P\A9\C2~\FBځ\F0 ;\81\DAhNێG%*\E1Rj\F1\89X[\9CXPf^\C1\B1|\E6\E8T!\B5*N\F0\F0І\B8\rU\A2\8C^q1V!\C3\F9Uz,\C3I|7\B07\86r,\BE\A1\AC7\94\E8\DEľB\D6\F9\C8;\E9+\F7\A8\A9ߕ \88A\DAp\CD\CE\BD\C7^\81\80\A1~ؼW!3P\8AI8]\93\BDv\D3J\92\C1f\F1q\A3|,\9D\EA\E89W\F8f`\0\E1q\94Z\CEp}[Jdhy\AD\95N\EA\B5Y|\EF\99C y,\AA<s A\81{e\CDQ\D4\9F\F2hd\84\81\ECLJ \CCB4;ks&\90\83\AC\F1\C4\DD\C7a\DE\F8\C5\FB\E9\94\D8;˹}\E7S\8C\CBJ\85\EF\CD)\F7=d\EC\D4|\CE\CC\AE Nd\D2 \B7I\E7*8\B5\8D\A2dl\C3ѓ\81E6~Ϩ\90F\A6\95\C6\B1X`\98M\rʞ/\D4%B/V\C0I\E5N&;\EA\F9\E30\C5UC cT&.E+\E7\95\F3\83\C0\B0\8A\9B\E9\DC@\B20`;\C5\E0\CBG\E85\E4\B1\C1ަj'\99\81\9B\98\F6\E0Ɛ\BBY\E2+\B6\89QZ-i\81\F4\9Cyv\83\96I\995\DA\F3,O|\ADP\D6]Fۏ\E1\F2\D3\F9\F1\0\90\FC\CB2\9949͢\99\A2\81n/χ]س&\A6\AAI^\AE=\D3l\8E\A9qfI\C6\CA= \D6]x1GR\FC&\A6e\B77\A9\BA)\8A\F3'\AA\C6:B\B2B\B1>a\A6z\87-\A5\89\D12.\AF\F6\AC\B8bz\F8\B4\DC#\84\A5\BC\F1\93\C4Uᓍ\C6L7-\BCw\BFt\E73ɵ\F1\92\F4e\A7\8A\F6D\E4\A7\$\B2#\F7\B1\A4j\D5@\D5G\978\CE \937p\FA\DC\F0R\A0YC\C1\D0~\C1\C8:\C0@\C6\D6EU\89J\DC\D9;67v]\96J'\D8\DC\E4q1ϳ\E9El\F4QІi\BE\CD\C3\CE\F1\84/\ED\FF{k<\90\E0֡M\DCpo\EC}\D0\E8r\C1\A2q\8C؞ \ECc\D5ä\99_m\D2w\EF\BE\8D^\BAu\96\B4\C5\F9\DA\FC\F9\BD\AB\90\B6\C7ln\FE\94\99 \8E\FD_\91~\B7G\F8n\E8\E6\8B\D6{kܞ\DFw\E3\DE\F9\rj~\97K\93\0\CF\DD\FC\A6\BE-\EE\FA\CF\A2B\80;\9C\E0\9B\F6b`}\C1CC,\81\94\B9-\B6\8BL\81\D08\r,\87\BFkl\FDnj\F2n}-5\81\8A\8D\8D3u\9Bgm\B8\F2Ÿ\C0 *\DF/\E4\F4 \CA\F9\CF\EE׏\F4`\CB`\BD#x\E4+B?#\F6ۏN;OR\r\A8\E8\F8\AF\$\F7\CE\FA\F6\C9k\F2\FFϙ\01\0k\F3\0\D08\F4\CDa\E8\E9/t\A0\FA\FB#(&\CCl&\AD\F9\A5p\B8\CF삅\FE\E2\CEi\90M\90{\AFzp*\D6-g\A8\C2\E8v\89\C56\9Ck\EB \E5\88\F0\9Cd\AC؋\AC\DC\D7\C4A`");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
  163. lzw_decompress("f:\9B\8CgCI\BC\DC\n8\9C\C53)\B0\CB7\9C\85\8681\D0\CAx:\nOg#)\D0\EAr7\n\"\86\E8\B4`\F8|2\CCgSi\96H)N\A6S\91\E4\A7\r\87\9D\"0\B9\C4@\E4)\9F`(\$s6O!\D3\E8\9CV/=\9D\8C' T4\E6=\84\98iS\98\8D6IO\93\CAer\D9x\EE9\90*ź\B0\BAn3\9D\rщv\83C\81\C1`\F5\9A\DD2G%\A8Y\E3\E6\E1\FE\9F1\99\CDf\F4\B9\D1Ȃl\A4\C31\91\ny\A3*pC\r\$\CCn\8DT\AA\953=\\\82r9O\"\E3 \C0\E0l<\8A\r\C7\\\80\B3I,\97s\nA\A4\C6e h+M\E2\8B!\8Dq0\99\FDf\BB`(\B9N{c\96\97+w\CB\F1\C1Y\A3\96p٧3\8A3\FA\98+I\A6\D4j\B9\BA\FD\8E\CFk\B7\B2n\B8q\DC\83\8Dzi#^r\D8\C0\BA\B4\8B3\E8\E2\8D\CF[\9E\E8\BAo;\AE\CB(\8B\D06\8D#\C0Ґ\8E\8D\":cz>ߣC2v\D1CX\CA<\81P\98 \C3c*5\n\BA\A8\E8\B7/\FCP97\F1|F\BB\B0c0\83\B3\A8\B0\E4!\8D\83\E6\85!\A8\9C\83!\89\C3\nZ%\C3ć#CH\CC!\A8\D2 r8\E7\$\A5\A1\EC\AF,\C8Rܔ2\85\C8\E3^0\B7\E1@\A42\8C\E2(\F088P/\82\E0\B8݄\E1\\\C1\$La\\\E5;c\E0H\84\E1HX\84\81\95\nʃt\9C\87\E18A<\CFsZ\F4*\83;I\D0\CE3\A1\C1@\D22<\8A\A2\AC!A8G<\D4j\BF-K\83({*\r\92\C5a1\87\A1\E8N4Tc\"\\\D2!=1^ \95\F0\DDM9O\B3:\86;j\8C\8A\r\E3X\D2\E0L#H\CE7\83#Tݪ/-\B4\8B\A3p\CA;\81B ‹\n\BF2!\83\A5\CDt]apΎ\DD\EE\0R\DBC\CBv\ACM\C2I,\r\F6\8D\A7\0Hv\B0\DD?kT\DE4\A3\8A\BC\F3uٱ\D8;&\92\90\F2+&\83\9B\F0\95\B5\r\C8X\8F\8D\81bu4ݡi88\C22B\E4/⃖4\83\A1\80N8A\DCA)52\ED\FA\F8\CB\E5\CE2\88\A8s\E38\E7\935\A4\A5\A1p\E7WC@\E8:\98t\85㾴\D6e\90\9Ah\"#8_\98\E6cp^\E3\88\E2I]OH\FE\D4:zd\C83g\A3(\84\88\D7Ök\B8\EE\93\\6\B4\90\98\902\DAږ\F7\B9i\C3\E47\B2\98\CF]\r\C3xO\BEn\BAp\E8<\A1\C1p\EFQ\AEU\D0n\8B\F2|@\E7\CB\F3#G3\F0\C18bA\A8\CA6\F42\9F67%#\B8\\8\r\FD\9A2\C8c\r\E6ݟk\AE \82.(\92 \8E\92-\97J;\EE\9B\D1\F3 \C8\E9L\E3\CF \83 \BC\9EW\E2\F8㧓ѥɤ\E2\96\F7\B7\9En\FB\A0ҧ\BB\E6\FDM\CE\C09ZНs]\EAz\AE\AF\AC\EBy^[\AF\EC4-\BAU\0t a\A0\B662^\95\98.`\A4\82\E2.C\DFj\FF[ᄠ% Q\0`d\EBM8\BF\A6\BC\CB\DB\$O0`4\B2\EA\CE\n\0a\rA\84<\86@\9F\83\9B\8A\r!\C0:\D8BA\9F9\D9?h>\A4Ǻ \A0\9A~̌\976Ȉh\DC= \CB-\9CA7X\E4\C0և\\\BC\r\81\91Q<蚧q\92'!XΓ2\FAT \B0!\8CD\r\A7\D2,K\B4\"\E7%\98H\D6qR\r\84̠\A2\EEC =\8E\ED\82\A0\E6\E4\8E\C8<c\94\n#<\805\8DM\F8 \EAE\83\9Cy\8C\A1\94\93\87\B0\FAo\"\B0cJKL2\F9&\A3\D8eR\9C\C0W\D0AΐTw\CAё;\E5J\88\E2\E1\\`)5\A6\D4ޜB\F2qhT3\A7\E0R \B8'\r+\":\828 \A4\C0tV\93A\DF+]\8C\C9S72\C8\F0\A4Y\88F\83\BCZ85\E0c,\E6\F4\B6J\C1\B1/+S\B8nBpoW\C5d\90\D6\"\A7Q\FB\A6 a\ADZKp\E8ާy\$\9B\92\D0\CF\F54\8FI\A2@L'@\89xC\D1df\E9~}Q*\94ҺA\B5\E0Q\92\"B\DB*2\0\9C.\D1\D5kF\A9\"\r\94\91\B0 \D8o\83\\\EBԢ\90\99\DAVijY\A6 \A5M\CA\F4O\82\$\8A\882\D2ThH\81\B4\A4\AA0XH\AA5~kL\A9\89\85T*:~P\A9\942\A6t\D2 \C2\E0B\0\FDY\85\C0\C8\C1\9C\9Fj \86vD\D0s .\D09\93s\B8\B9̤\C6P\A5*x\9E\AA\95b\A4o\93\F5\FF\A2P\DC\$\B9W/\93*\C3\C9z';\A6\D1\$\9E*\F9\DB\D9\E9d\E2m \EDÃ\C4'b\r\D1n%\C5\C447W\EC-\9F\92\E0\F6\D5\A0\B6K\B4\B5\B3@<\C5g\E6èbB\D1\FF[7\A7\\\92|\80VdR\A3\BF6leQ\CC`(Ԣ,\D1d\98\E5\B98\r\A5]S:?\9A1\B9`\EE\CDY\C0`\DCA\E5ғ%\BE\D2ZkQ\94sM\9A*\D1\D7\C8{` \AFJ*\9Dw\B6\D7ӊ>\EEվ\F4D\CF\FB\9B>\EFeӾ\B7\"\E5t+po\FC\FC\9F\CA=\DE*\82\B5Apc7g\E6\E4\A0]\D3\CAl\EE!׎ї+\CC\FBzsN\A6\EE\FD\E0\C0P\9D\D4 \9A\F2ia\A7y}U\B2a\9A\D3\F9\99`\E4\E3A\A5\AD\C1\BD\C1w\n\A1\F3\CA\9B\D8j\93\FF <\AD:+\9F7;\"\B0\D5N3 tqd4źg\94\83\A6T\8Bx\80\AAPH\A8\97FvW\F5V\n\D5h;\A2\94B\E1D\B0س/\F6bJ\B3\DD\\\CA+ %\A5\F1\96\F7\EE\E1]\FA\FAъ\BD\A3wa\D7ݫ\B9\8F\8A\A6\BB\E1\A6\F0\E8 E\91\AD(i\C9!\EE\F47\EB\D7x\B1\86z\A4\D7\D2\F7\E7\C5Hɳ\B8d\B4\EAmd\E9\EC\E8Q\B1r@\A7a\95\EE\A4ja?\A4\r\94\ry\EB4-4\B5fP\E1҉W\C3\CA`,\BCx@\A7\83\DDx\BC\88\E8A\92\81\A6K.\80O\C1i\80\AFo\B2;\EA\A9\F6\96)\B1Ш\BA\E4\92ɆS\D9d\D9\D3eO\FD\99%\D9N\D0\E5L78\ED\A6F㪛\A7S\EE\E1\D2\F9\F6I\C1 \C2\r\EE\DBZ\98\B2r^\89>\FD\8D\D0\EC*\82d\ri \B0Y\FC\EBYd\8Bu\C3\EBs\87*\9C \CC\E8E\A0\A1ʽ\E9D\A79\E6\EB!\C2>\F9kCရA\87\8E\C1d\AE\E5\E2\B0!WW\EC1\F0\F0\FF\8EQA\E6\9C\DBk\BD\B0d%\A6\DC# \EFy\86\B0{\9B\96`}T\E9_YY\8BR\AE\F0-\B9M\F4\BAO\962\D6\E2\CA,\CB,Š\C9`\FA-2\D3\C0\F7\A8+]L\95\C87E\A4\D4\E7{`\A2\83˕\AD\F1~w\EC-\85\D7\FD\A0\A9M6\A5\9D\8F\A4]F\F3\FB\83\A6@\99\A7\CCe`\B0/\988\B9@\87e\A6\CD\D8\\ ap.\82H\A5\FB\8D\D0C\B4\C0\E6*EAoz2\B9\C6\E7g0\FA\88?]͝~\9Fs\B0\F1\CF`\8ChJ`\86\EA箤`\FB}\87\E1\CD^`\E8\D1\C3>\A7\C8O\F15\r\F0W^I\9C\F5\9E\F5\n\B3\F9\AC\FD;\F1\B8\B4\F0:\9F\E4\CF_h\9Bn\B1\B5\8C\B4 \DFYP4\AE\F0\88)\FB\A0*\FD\B8\EE\C9\F5\AF\E6\D16v\D6\E4[ˤ\ADC;\FB\F6\B3\EF\E3\BB\B6n\E4W/j\BA<\$J*qĢ\FB\E4\B0\FA-L\F4\8C\0\B5\AF\E3\EF\F7\0O\9A\$\EBZW z\FE \0}\8F\DA.4 F\84\rnu\0\E2\E0\D8\C0䏋\92\E9L\DE \A0\F7IA\nz\9B\A9*\96\A9\AA\8AjJ\98̅P\8A \A2\EB\82\D0p\9D\85\C26\80ئN\9A\9ED\C8Bf\\ \0\A8 \A0\98W@L\r\C0\C4`\E0g'Bd\AF Bi \90\9C\B0\82\89*|r%|\nr\r#\8E\B0\84@w\AE\BB\EE(T.\ACv\E28\F1\CA\E2\nm\98\A5\F0<p\D8\D4`\FAY0\D8\D4\E2\F0\C0\CA\F6\0\D0#\80\CC\91}\8E.I \9Cx\A2T\\\E2\F4\D1\n \A0\CD  Q\91\E6@bR MF\D9\C7| \A2\E8%0SDr\A7\C2\C8\A0\9Ef/b\96\E0\C2\E1\A2:\E1\EDk/\FE\E3 f %\E4Ш\AEe\nx\0\C2l\0\CC \C5\DA \910\80W`\DF\A5\DA\n\E78\r\0}p\8E\B2\91\9B\C2;\0\C8.B\E8\A4V\F9\A7,z&\C0f \CC\r\8D\F6WOcK\83\n\EC\BB\A0\9E\92\E5\D2k\AAz2\r\F1\C9\C0\EEW@’\E7%\n~1\80\82X\A0\A4\DFq\E2D \A2!\B0^\F9\A6t<\A7\$\B2{ 0<E\A6\CAѪ\B32&\DCN\D2\r\n\E6^i\8D\C0\8D\"\E8\B3#n\FD \EC\AD#2D\A7\88\FC\8D\CB\AED\E2\8E\E6o!\ACzK6\C2\EB:\8E\EF\EC\C3\CF\F0#Rl\D3%q'k޾*\B8\ABÀ\E0\B6 Z@\BA\F2J\CC`^P\E0H\C0bSR|\A7 \8E%|\F6\F4\EC.\FF\AFµ\B2^\DFrc&o\E6\D1k<\FF\AD\FE\ED&\FE\B2xK\B2\D5'\E6\FCLĂ\AB\F2\8B(\F2\92\F2mE)\A5*\96\FF\AC`R\A5bWGbTR\F8\BD\EE`VNf\A2\AEj\E6\F0\B4 woV\E8\E8\98(\"\AD\92ڧ\F4&s\0\A7\B2.\B2\A6޳8\9E\90=h\AE\EB Q&\FC\8E\E2n*h\F8\0\F2v\A2B\E8G\D8\E8@\\F\n\82W\C5r f\$\F3e6\90\916\E0a㤥\A25H\95\F1\E2\B0bY\D0f\8D\D3RF\80\D19\A8(Һ\B3.EQ\E5*\CA\EE\B8\EB(\DA1\89*\C2/+,\BA\"\88\F6\r\A0\DC \AA\E28\FD\0\88\FC3@\DD%l厭\E3\A5,+\BC\BC\E5&\ED#-\$\A6\F3\C8%\86\CC\C5gF!s\DD1\B3\D6%\AF\D4s\F3/\A5nK\AAq\94\0O\"EA\A98\852\C0\8A}5\0\CB8\8B\9FA \n\AF\C5RrH \85\DA\B3\879\C54U\ECdW3!b\A8z`\ED>\E3F >\D2i,\94a?L>\B0\B4`\B4r\BE\B1r\A0ta;L\A6\EB\C5%\C0RxR\86\EBt\8AʥHW/m7Dr\B6EsG2\CE.B5I\EE\B0\EB\C9Q3 \E2_\80\D2Ԉ봤\A724.\EC\89\C5R k\E2\80z@\B6\8F@\BAN\EC[4\CE&<%b>n\A6YPW\CE \9F\E2\936n\$bK5\93t\87\E2ZB\B3YI L\EA~G\B3Y\CE\D6\F1cQc 6DXֵ\"}ƞ f\8AТI\CEj \80\F35\93\\\F6 X٢td\AE\84\nbtNaE\C0Tb;\8Dl\E2p\82\D5|\8F\0\D4\AFx\n\82\9E\E5dV\D6\ED\8C\D6\E0]X\F5\93Yf\84\F7%D`\87Qb\D8svDsk0\D3qT\A5\FF7\93l\A0c7\E7\80\E4\A0\D6\F4\8E\8D\CESZ\946\E4\EF\BE㵊Ğ#\EAx\82\D5h ՚\E2 \AC\A3`\B7_`ܾ\CEڧ\90\B1\95\EA\A5\9C\B7+w`\D6%U\90\A7\85\92\EF\A9虯\B6\EF̻U\A0\F2\F6D\8BXl#\B5\86Ju\AF[ \E5Q'\D7\\H\F0\F7\84\A4\F7\E4GR\D5\EB0\ABoa\90\D0\F5\D3C\C3X\A5+\D4a\EDc\E0N 䞮`\D6re\DA\n\80\D2%\A44\9AS\8D_\ADk_\E0ښ\8E!3({7\F3\92bI\rV\r\F75\E7\D7\0\B5\\\93 \80aeSg[\D3z\A0f-P\F6O,ju;XUv\8F\D0\EE\FD\D6\C3m\CBl\85\"\\B1Ğ\DD\C50\E6 \B5\91p\F0 \E54\E1\95\EB;2*\91\EE. b\A3\0\D8\D8u\D4\E3J \"NV\89\DBrrO\D5f\EE2\E4W3[\89آ\94\A4\B3  \80\CB \C65\r7\B2\CB0,yt\C9\DBwS W ]kG\D3X\B7iA*=P\rbs\"\AE\\\F7o{e\C0\F2\9C\B65k\80\EFk\C6<\B1\82;\AE;x\D5 \B6-\F60\A7\C9_\$4\DD \B2\B6\B4\998*i\0f\9B.\D1(`\BC\95\F2\F1D`\E6P\B7&\8C\F4\98\8C\C4A+eB\"Z\C0\A8\B6\B3 \A2W̢\\M>\B6w\F6 \F7\FA\B6\CBg0\A6\E3G\E0 \E0\9A\85\91\90\D2\F8\B4\r\C6ܩ*\DDf\\\F2\8Cp\0\F0\BC\82\E5Kf#\80\DB\C0˃\r\CE\D9͡\83\D8@\r\F7\82\D6d\A0\A2\9F\n\F3&D\B0%\82\D8\813\AD\81w\FD\82\A9.}\F7\F9\CF\FF\81ŭ\82 \F1\82kH\C6k1x~]\B8P٭Ӄ\80[\85\8C;\85\C0Y\80\D8\88ؑK\C56 \CBZ\E4\D6\E0t\B5\A9>gL\r\80\E0HsM\EC\BAe\A4\0\9F\81\E4&3\B2\$\EB\89n3\ED\FC wʓ7՗ \AE\B7\" \F4\D2\EB+\8F\DD;\A2s;\E9\94\A0* 1\99 y*\EE\8E\CB\AE;TG|\E7|B\A9!\A0{!\E5\C5\"/ʖo\CE\E3j\F7W\8F\EB+\B5\E6\93L\FEDJ\FE\92ͅ\B4w2\B4\C6VTZ\B9Gg/\9A\FD֊\83]4n\BD4\B2\C0\BF\B1\C1\8B\CF\F7i\A9=\C8T\85\88]d\E2&\A6\C0\C4M\0\D6[88\87ȮE\E6\96\E28&LXVm\F4v\C0\B1 ʔj\84כ\87F\E5\C4\\\99\C2 \99\C6\CA&t\0Q\9B\E0\\\"\F2b\80\B0 \E0\C4\rBs\9D w\9E\C2 \9F\F5\9F\82N \9A7\C7C/|\D9\D7 \80\A8\n\nN\FA\FDK\9By\E0*A\99`\F1W\CFYvUZ4tz;~0}\9A\F1J?hW\A3d*#\C93 \80\E5 О\E0yF\nKT\EB\A4\C5\E6@|\84gy\9B\0\CAO\C0x\F4a\A7`w\A3Z9\A5\8CbO\84\BB\A8\DAWY\92R\C4\C9}J\BE\88X\CA\DAP\F1U2`\F7\A9\9AG\A9\E5beu\AA\85zW\F6+\9C\C8\F0\r\E8\AC\$4\9D\83\85\"\n\0\9E\n`\A8X@N\E0\8B\AE% d|\82h\E9\AC\C8\DA\99\DEŇeg\C4\EA\82+\E2H\B8t\99(\AA\DE\D1( \C0^\0Zk@\EE\AAP\A6@%\C2(W\CD{\AC\BA/\AF\BA\FEt{o\$\E2 \0[\B3\E8\DE\B1\A1\84%\A1\A7\EB\B4ə\AF\82 hU]\A4B,\80rD\E8\F0e:D\A7\A2\CCX\AB\86V&\DAWll@ \C0d\F2\ECY4\A0˯\9BiY y\A1\9A[\91\AC\C3+\ABZ\B9\A9]\A6g\B7\87Fr\DAF\FB\B4\8Fw\DE \B5\94#1\A6tϦ\A4\C3N\A2hq`\E5\A7D\F3\F0\F0 \A7v|\BA\A6Z\85L\FAv\85:S\A8\FA\9D@\E5e\BA\BB\FFB\92\83.2\87\ACE\8A%گB\E8\92@[\94\8A\FA\D6B\A3*Y;\BF\99[\FA#\AA\94\A9\99\9B\B5@:5\C3`Y8۾\96\E8&\B9\E8 @\A6 \E0\9C\FCQ\C5S8!\9B\A3\B3\BB\C2 \C2\BC\A22MY\8E\84\E4O;\BE\AB\90\A9ƛ\C8)\EA\F5F¨F Z\F5A\\1\A0PF\A8B\A4lF+\90\9A\F3\94<\DAR\CA><J?\9A\DA{\B5f\92\F5kĘ8\AE\EBW\82\AC\E8뮺M\r\95\CD\BCۖRsC\F7N\CD\F4\80\EE\94%\A9\CAJ\EB~\C1\98 ?\B7\DA\E2\AF,\r4\D7k0\B5,J󪎕b\97\90\F6o\0\CA!1 \F85'\A6\r\E0\F8\B7 u\r\0\F8\CA\$\A1\D0=\9A}\r7N\CC\D4=DW6K\F88v\F5\90\r\B3 \CA\n\A0\A4 *\82\r\BB\C47)\A6\CFD\FCm\9B1 a\D6@\DFև\B0\A8w.\E4T\90\94\C8\DD~\A9\C7\BCpV\BD\C0\9CJ\82u\A2\r\E4&N Mqc\CAd\D0\D0d\D08\EE\9E\F0\D8\80_\D0K\D7aU&\AEH#]\B0d }`P\AC\0~\C0U/\AA\85\F1\83\85\F9\CCynY<>dC\B7<G\C9@\E9\C3\"\92eZS\B9w㕛\93\C6Gy\BC\\j)\F0}\9E\95\A4\r5\E21,p\AA^u\0\E8 \E9\88 \D5\C6n\CC\DAC\A9\BAHP֬G<\9F\9Ap\8B\F42\A8\n\E8FD\DC\r\D6\$\B0\ADy\8Fuyc\F6\E7\F5v\8D6\DDe )\D6p\DBYH\CFĒ\F5\DE#VP\BE\80\FC\D5\D8eW\AE\DE=\9Em\D9\E6c:&\89\A5\E6-\DB\C4Pv.\8F\A3ˀ\F8杍\8F\BA\F0\9A \8B\FAأ\0\$\EA\C1@+\D7\EC\B9P\FFl&_\E7Cb-U&\8E0\"\E5F\85\AEVy\81\B8p\r\C4a5\DBq9U>\8D5\E8\\LBg\86\E8U\AD[\B67m d\FC\F3yV[5\9F*}\D54\F85/\E7\B6\E0ҏ\BEH\F6D 60 \BF\AD\C5쐿\ED\C3:Suy\r\84\BC\87\E3SM\C0\9F\C2;W\93\AA\D8εL4\D6G\A2N\D8\E3\B0\A7\96\9F\F5 \DCe\DCm\F0\9At\84\C8sq\B6\80\98\".F\FF\99\8D\8E\A7CsQ\B8 h\80e7\E4\FCn\D8>\B0\B2*\E0c!iS\DDj\BE \86ّ̭\FC\B0\F8\82\B0\FC\A0{\FC\B5\AD\F7%t \80\EA\0`&lrœ,\DC!0ahy R\B5B =\CDegW\E3\F9o\0\A6H\87h/v(\92N4\91\r\FD\84\C0Tz\84&q\F7?X\$\80X!\F4J^\90,\9F\AD\F6b\F3\93\FD`2@:\86\BC7\C3CX\92H\80e\A1\8A@q\EF\DB\ny\B6\A00\A6\E8\8B\B4\A3\B4\80\F1P\C0O02@\E8v\89/IPa\B02\C0\DC0\n]-(^\C6\FCt.\BD\953&\C7\"\AB0\A4\98\"\D0\0]\B01\9A\CD\F1a˜\B4\B0E\B3S\FA\C4P|\\\80\C9\D1A\F5p\FA9\9B\9D\$K\81\98\88Byuد\9Dz\EB7Z\95\r\ECb\A4u\C9_ \EF\F2 8\F5\C6m\E3q\B3\F0\FB\98E<-\C8\C9@\0\AE!)\B3\C4 )\F7)\D5~Q\E5 rّ\DC/M\E8P\FF\n\BA \A6\C9`\E0!\n(\88\82\n\n>X\80\D0!` W\BA\8D\CB\E1\81\F8\BC\E0p4A\DA Ŷ\C1\A9d\91\C7\0X\D2٧V\n\80+Cd/E\D8F\E5\E2\AFm+ `\0\DE2\B4\F4p/-\D8 \CC2\B7\99\B4e\E6\CBC@C\84\0pX,4\BD쪼\83\CC9\E0\F2\D4Xt!. P\DF\98\\ \90\FD\95q\84\A3b{\85v\88bfM\C3\CD)D]\FBw\84\98\B0\9F\CB\85\A0X\E0B4'\BB\97f\C0tXЦ\A2(O վ\A9 \F0\91q\FC#\9E\B33\B8\ABp]\A2i\".\AA\E87\ACiw[T\0y\r\C44C\E5;,\$a2i(\99\$\B5mȆD\D2&Ԕ4\A5\9EZ \E2;E#6UA \C4R\80\AD\FC\ECeFF\8D\8DU\8C1\95h2\n\A8\F7UpևÞ\E9Tʹ\80\E2\CF \D8\D5[\EE+\91^\F4X դ\D978 A\rnK\82\82d1\B4>\80p\83+\A6`\CE:\87\8B\8DI\83o<\DAL\84@\E4a \BE\80\B4\0:\88\86\DDG\97\BD hQ\84\$\F9jR\B8\C7'\C9Ȍ\AFK!\FD`\A8\A3\B81\C5\D2 \C0H\83C\C6\E2Z0\$\C0e\C9yXG\A35h\CEE\E2\r1\9FG\82\n\BA`\B7g'\0\BC\DD6qV\E3(\r\87\84VPH\F6nj\EBb֊\r\AF-k\96\0B\91b\C6\FD\D8G\DF:\BD\E1\8CZ\D7\D1|\B9>\8E*\C4XX\D9!\A1\92\A3\B4\"&\F6\C0:E\D5a\AB\F7,vB\A0P\81\89h!pf;\0\A3\BE[\C1\91/r:qT\8E\83\E8\D98\"x3Gl \91\DD\"Xm#\C3`\E85\D1\E6\DCx\n\A8\F3G\B6;\D1\FEEQ\97X\B9ǂ<HhA\FA\E5\A2\EA\B7+1 Ns\90\BA\B4\E3\A1\B5k\95js H{\80\D8\F5\E3\EF&1\95G\E3aI\CA?76\9A22\CEp4\99\FE\97șV!\B0\C1\87\A2\BA\8F2͟:\80\A4z \90I\E0ĉZ\D41ER7\C3\DD%\A3\B6\C2\F4\C56\81\90!\C1?@(\95\E4\96\91\EF\8F,&\852\92\B8\F2\94>\99I8 \D2P+\9C\94\82h\E2&7N'2V\98\9A\0\D1\A2i\0\9C\87\CBܙi%8\F9\B9V8e\84Z:\D2@ʴ\B0\F16\E4\A6R{ \A8 Jz\D4s2\85 j(C`Z*\F4\88J-b\E7\EB#\B8DEu\$\B9W\8C*\8C\A5*#9\88\81\94D3y\8D\A5?\"\D89\FD,Q\94/\A7 \DFw8\88\82U\C0=\95q\FF\99]\0\83ʹ\B8m\8Et\F8\8C-*\E7(\98\F0d҉\95!\8E\E5\83+F\8DX\$I\8C̄\E2\EE\88\BC\BAU\$\F5` \82\82\CCe\F2'c\A6\BFVr\A8\8Dn\AB\C61l\80\8A\F55\AC?XT\C5&*@\A0\F2\8FIB\D6tyt\96\90f\EA\F5N\A8\F0%\C2\C5S\99H\98x\F4\$\DC\0}/sH]\8E]\98\E2\BB\F4\E3\C3P')HC&\85\ECI\E11\9D\8E\ri.\E4U&\$\9E\85dI\FD<)\F4\C5\D3\D3( \8EEP\E2\88T^ \n\A27\9B(\8D\88\8F\99T'&T\C7\D4:.\90,\B5d\AABj\F5\B8:D\85\F0}u{\ACa\0\EC\A6&m\D11CCH\n\985!\AA\B2h\C0l\9A@\B8\D2\C1\E0L\A9\80⹙i&\C4:\99\B5\BFG\86fqN\9A\\\D3\\|\F0\C7 \84`\BB\93X\nz\E2\8E̖\FCz\A9\99\87ʦ\B36`\B8=\rJE\83\n0\A6\E4eg\CC\D4\CAΉ\DC\CB\D7\n\87Y\99\BE\E4Wή\83\FB\AF\E1M\$a\C1\E6'\EE\EDw\81Z\B0\D1Da\B8L\F7\C9\\\A81)\91\91Z=&\ABZ\FAA\92.Ǵ91\FAp \9F;\99\89\D8\F3\95\91<\EC\E3\EFA8\D1\CB,F\AC l\CB,=\F2\A4\0\F8\9B'́\E5\E8 &y\F0K\D45X\94e\F7\93xw\B4ߧE3)\D2L\D2pn\BC\99\F4ᦀM9\C55I(s\8Dw\93E&\DD6Y\99\C9\88\D4\F5\80N9qM{I2\E8\EB\C0\C2eT\8F\84:a\C8\F1.\AAI\94\DC\F8X\A2\F2tӠ\95De&f\A7fn i\D8]\92hbHE\86`\9E\98");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
  164. lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\81\0001\EE\EE\EE\0\0\80\99\99\99\0\0\0!\F9\0\0\0,\0\0\0\0\0\0!\84\8F\A9\CB\EDM\F1\CC*)\BEo\FA\AF) q\95\A1e\88\B5\EE#\C4\F2L\CB\0;";break;case"cross.gif":echo"GIF89a\0\0\81\0001\EE\EE\EE\0\0\80\99\99\99\0\0\0!\F9\0\0\0,\0\0\0\0\0\0#\84\8F\A9\CB\ED#\na\D6Fo~y\C3.\81_wa\94\E11\E7\B1J\EE G\C2L\D76]\0\0;";break;case"up.gif":echo"GIF89a\0\0\81\0001\EE\EE\EE\0\0\80\99\99\99\0\0\0!\F9\0\0\0,\0\0\0\0\0\0 \84\8F\A9\CB\EDMQN\n\EF}\F4\9Ea8\8Ay\9AaŶ\AE\0\C7\F2\0;";break;case"down.gif":echo"GIF89a\0\0\81\0001\EE\EE\EE\0\0\80\99\99\99\0\0\0!\F9\0\0\0,\0\0\0\0\0\0 \84\8F\A9\CB\EDM\F1\CC*)\BE[W\FE\\\A2\C7L&ٜƶ\95\0\C7\F2\0;";break;case"arrow.gif":echo"GIF89a\0\n\0\80\0\0\80\80\80\FF\FF\FF!\F9\0\0\0,\0\0\0\0\0\n\0\0\82i\96\B1\8B\9E\94\AAӲ޻\0\0;";break;}}exit;}if($_GET["script"]=="version"){$yc=file_open_lock(get_temp_dir()."/adminer.version");if($yc)file_write_unlock($yc,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$h,$Eb,$Jb,$Rb,$o,$_c,$Dc,$aa,$ad,$y,$ba,$qd,$be,$xe,$If,$Hc,$gg,$kg,$sg,$zg,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$F=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$F[]=true;call_user_func_array('session_set_cookie_params',$F);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$lc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",15);function
  165. get_lang(){return'en';}function
  166. lang($jg,$Xd=null){if(is_array($jg)){$_e=($Xd==1?0:1);$jg=$jg[$_e];}$jg=str_replace("%d","%s",$jg);$Xd=format_number($Xd);return
  167. sprintf($jg,$Xd);}if(extension_loaded('pdo')){class
  168. Min_PDO
  169. extends
  170. PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
  171. __construct(){global$b;$_e=array_search("SQL",$b->operators);if($_e!==false)unset($b->operators[$_e]);}function
  172. dsn($Hb,$V,$G,$D=array()){try{parent::__construct($Hb,$V,$G,$D);}catch(Exception$Vb){auth_error(h($Vb->getMessage()));}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=@$this->getAttribute(4);}function
  173. query($H,$tg=false){$I=parent::query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->errorInfo();return
  174. false;}$this->store_result($I);return$I;}function
  175. multi_query($H){return$this->_result=$this->query($H);}function
  176. store_result($I=null){if(!$I){$I=$this->_result;if(!$I)return
  177. false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
  178. true;}function
  179. next_result(){if(!$this->_result)return
  180. false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
  181. result($H,$p=0){$I=$this->query($H);if(!$I)return
  182. false;$K=$I->fetch();return$K[$p];}}class
  183. Min_PDOStatement
  184. extends
  185. PDOStatement{var$_offset=0,$num_rows;function
  186. fetch_assoc(){return$this->fetch(2);}function
  187. fetch_row(){return$this->fetch(3);}function
  188. fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=(in_array("blob",(array)$K->flags)?63:0);return$K;}}}$Eb=array();class
  189. Min_SQL{var$_conn;function
  190. __construct($h){$this->_conn=$h;}function
  191. select($R,$M,$Z,$Ac,$je=array(),$_=1,$E=0,$Ee=false){global$b,$y;$gd=(count($Ac)<count($M));$H=$b->selectQueryBuild($M,$Z,$Ac,$je,$_,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$_!=""&&$Ac&&$gd&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($Ac&&$gd?"\nGROUP BY ".implode(", ",$Ac):"").($je?"\nORDER BY ".implode(", ",$je):""),($_!=""?+$_:null),($E?$_*$E:0),"\n");$Ef=microtime(true);$J=$this->_conn->query($H);if($Ee)echo$b->selectQuery($H,$Ef,!$J);return$J;}function
  192. delete($R,$Le,$_=0){$H="FROM ".table($R);return
  193. queries("DELETE".($_?limit1($R,$H,$Le):" $H$Le"));}function
  194. update($R,$P,$Le,$_=0,$N="\n"){$Gg=array();foreach($P
  195. as$z=>$X)$Gg[]="$z = $X";$H=table($R)." SET$N".implode(",$N",$Gg);return
  196. queries("UPDATE".($_?limit1($R,$H,$Le,$N):" $H$Le"));}function
  197. insert($R,$P){return
  198. queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
  199. insertUpdate($R,$L,$Ce){return
  200. false;}function
  201. begin(){return
  202. queries("BEGIN");}function
  203. commit(){return
  204. queries("COMMIT");}function
  205. rollback(){return
  206. queries("ROLLBACK");}function
  207. convertSearch($v,$X,$p){return$v;}function
  208. value($X,$p){return$X;}function
  209. quoteBinary($ff){return
  210. q($ff);}function
  211. warnings(){return'';}function
  212. tableHelp($C){}}$Eb["sqlite"]="SQLite 3";$Eb["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){$Ae=array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite");define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class
  213. Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
  214. __construct($r){$this->_link=new
  215. SQLite3($r);$Ig=$this->_link->version();$this->server_info=$Ig["versionString"];}function
  216. query($H){$I=@$this->_link->query($H);$this->error="";if(!$I){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
  217. false;}elseif($I->numColumns())return
  218. new
  219. Min_Result($I);$this->affected_rows=$this->_link->changes();return
  220. true;}function
  221. quote($Q){return(is_utf8($Q)?"'".$this->_link->escapeString($Q)."'":"x'".reset(unpack('H*',$Q))."'");}function
  222. store_result(){return$this->_result;}function
  223. result($H,$p=0){$I=$this->query($H);if(!is_object($I))return
  224. false;$K=$I->_result->fetchArray();return$K[$p];}}class
  225. Min_Result{var$_result,$_offset=0,$num_rows;function
  226. __construct($I){$this->_result=$I;}function
  227. fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
  228. fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
  229. fetch_field(){$f=$this->_offset++;$U=$this->_result->columnType($f);return(object)array("name"=>$this->_result->columnName($f),"type"=>$U,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
  230. __desctruct(){return$this->_result->finalize();}}}else{class
  231. Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
  232. __construct($r){$this->server_info=sqlite_libversion();$this->_link=new
  233. SQLiteDatabase($r);}function
  234. query($H,$tg=false){$Nd=($tg?"unbufferedQuery":"query");$I=@$this->_link->$Nd($H,SQLITE_BOTH,$o);$this->error="";if(!$I){$this->error=$o;return
  235. false;}elseif($I===true){$this->affected_rows=$this->changes();return
  236. true;}return
  237. new
  238. Min_Result($I);}function
  239. quote($Q){return"'".sqlite_escape_string($Q)."'";}function
  240. store_result(){return$this->_result;}function
  241. result($H,$p=0){$I=$this->query($H);if(!is_object($I))return
  242. false;$K=$I->_result->fetch();return$K[$p];}}class
  243. Min_Result{var$_result,$_offset=0,$num_rows;function
  244. __construct($I){$this->_result=$I;if(method_exists($I,'numRows'))$this->num_rows=$I->numRows();}function
  245. fetch_assoc(){$K=$this->_result->fetch(SQLITE_ASSOC);if(!$K)return
  246. false;$J=array();foreach($K
  247. as$z=>$X)$J[($z[0]=='"'?idf_unescape($z):$z)]=$X;return$J;}function
  248. fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
  249. fetch_field(){$C=$this->_result->fieldName($this->_offset++);$we='(\\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($we\\.)?$we\$~",$C,$B)){$R=($B[3]!=""?$B[3]:idf_unescape($B[2]));$C=($B[5]!=""?$B[5]:idf_unescape($B[4]));}return(object)array("name"=>$C,"orgname"=>$C,"orgtable"=>$R,);}}}}elseif(extension_loaded("pdo_sqlite")){class
  250. Min_SQLite
  251. extends
  252. Min_PDO{var$extension="PDO_SQLite";function
  253. __construct($r){$this->dsn(DRIVER.":$r","","");}}}if(class_exists("Min_SQLite")){class
  254. Min_DB
  255. extends
  256. Min_SQLite{function
  257. __construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
  258. select_db($r){if(is_readable($r)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$r)?$r:dirname($_SERVER["SCRIPT_FILENAME"])."/$r")." AS a")){parent::__construct($r);$this->query("PRAGMA foreign_keys = 1");return
  259. true;}return
  260. false;}function
  261. multi_query($H){return$this->_result=$this->query($H);}function
  262. next_result(){return
  263. false;}}}class
  264. Min_Driver
  265. extends
  266. Min_SQL{function
  267. insertUpdate($R,$L,$Ce){$Gg=array();foreach($L
  268. as$P)$Gg[]="(".implode(", ",$P).")";return
  269. queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Gg));}function
  270. tableHelp($C){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}}function
  271. idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
  272. table($v){return
  273. idf_escape($v);}function
  274. connect(){return
  275. new
  276. Min_DB;}function
  277. get_databases(){return
  278. array();}function
  279. limit($H,$Z,$_,$Zd=0,$N=" "){return" $H$Z".($_!==null?$N."LIMIT $_".($Zd?" OFFSET $Zd":""):"");}function
  280. limit1($R,$H,$Z,$N="\n"){global$h;return(preg_match('~^INTO~',$H)||$h->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$N):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$N."LIMIT 1)");}function
  281. db_collation($m,$cb){global$h;return$h->result("PRAGMA encoding");}function
  282. engines(){return
  283. array();}function
  284. logged_user(){return
  285. get_current_user();}function
  286. tables_list(){return
  287. get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name",1);}function
  288. count_tables($l){return
  289. array();}function
  290. table_status($C=""){global$h;$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K){$K["Rows"]=$h->result("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return($C!=""?$J[$C]:$J);}function
  291. is_view($S){return$S["Engine"]=="view";}function
  292. fk_support($S){global$h;return!$h->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
  293. fields($R){global$h;$J=array();$Ce="";foreach(get_rows("PRAGMA table_info(".table($R).")")as$K){$C=$K["name"];$U=strtolower($K["type"]);$wb=$K["dflt_value"];$J[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~'(.*)'~",$wb,$B)?str_replace("''","'",$B[1]):($wb=="NULL"?null:$wb)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($Ce!="")$J[$Ce]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$C]["auto_increment"]=true;$Ce=$C;}}$Bf=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Bf,$Ed,PREG_SET_ORDER);foreach($Ed
  294. as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($J[$C])$J[$C]["collation"]=trim($B[3],"'");}return$J;}function
  295. indexes($R,$i=null){global$h;if(!is_object($i))$i=$h;$J=array();$Bf=$i->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Bf,$B)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$Ed,PREG_SET_ORDER);foreach($Ed
  296. as$B){$J[""]["columns"][]=idf_unescape($B[2]).$B[4];$J[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$J){foreach(fields($R)as$C=>$p){if($p["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$Cf=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$i);foreach(get_rows("PRAGMA index_list(".table($R).")",$i)as$K){$C=$K["name"];$w=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$i)as$ef){$w["columns"][]=$ef["name"];$w["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Cf[$C],$Se)){preg_match_all('/("[^"]*+")+( DESC)?/',$Se[2],$Ed);foreach($Ed[2]as$z=>$X){if($X)$w["descs"][$z]='1';}}if(!$J[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$J[""]["columns"]||$w["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$C))$J[$C]=$w;}return$J;}function
  297. foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$uc=&$J[$K["id"]];if(!$uc)$uc=$K;$uc["source"][]=$K["from"];$uc["target"][]=$K["to"];}return$J;}function
  298. view($C){global$h;return
  299. array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU','',$h->result("SELECT sql FROM sqlite_master WHERE name = ".q($C))));}function
  300. collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
  301. information_schema($m){return
  302. false;}function
  303. error(){global$h;return
  304. h($h->error);}function
  305. check_sqlite_name($C){global$h;$cc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($cc)\$~",$C)){$h->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$cc));return
  306. false;}return
  307. true;}function
  308. create_database($m,$e){global$h;if(file_exists($m)){$h->error='File exists.';return
  309. false;}if(!check_sqlite_name($m))return
  310. false;try{$A=new
  311. Min_SQLite($m);}catch(Exception$Vb){$h->error=$Vb->getMessage();return
  312. false;}$A->query('PRAGMA encoding = "UTF-8"');$A->query('CREATE TABLE adminer (i)');$A->query('DROP TABLE adminer');return
  313. true;}function
  314. drop_databases($l){global$h;$h->__construct(":memory:");foreach($l
  315. as$m){if(!@unlink($m)){$h->error='File exists.';return
  316. false;}}return
  317. true;}function
  318. rename_database($C,$e){global$h;if(!check_sqlite_name($C))return
  319. false;$h->__construct(":memory:");$h->error='File exists.';return@rename(DB,$C);}function
  320. auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
  321. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){$Dg=($R==""||$rc);foreach($q
  322. as$p){if($p[0]!=""||!$p[1]||$p[2]){$Dg=true;break;}}$c=array();$me=array();foreach($q
  323. as$p){if($p[1]){$c[]=($Dg?$p[1]:"ADD ".implode($p[1]));if($p[0]!="")$me[$p[0]]=$p[1][0];}}if(!$Dg){foreach($c
  324. as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
  325. false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
  326. false;}elseif(!recreate_table($R,$C,$c,$me,$rc))return
  327. false;if($Ea)queries("UPDATE sqlite_sequence SET seq = $Ea WHERE name = ".q($C));return
  328. true;}function
  329. recreate_table($R,$C,$q,$me,$rc,$x=array()){if($R!=""){if(!$q){foreach(fields($R)as$z=>$p){if($x)$p["auto_increment"]=0;$q[]=process_field($p,$p);$me[$z]=idf_escape($z);}}$De=false;foreach($q
  330. as$p){if($p[6])$De=true;}$Gb=array();foreach($x
  331. as$z=>$X){if($X[2]=="DROP"){$Gb[$X[1]]=true;unset($x[$z]);}}foreach(indexes($R)as$ld=>$w){$g=array();foreach($w["columns"]as$z=>$f){if(!$me[$f])continue
  332. 2;$g[]=$me[$f].($w["descs"][$z]?" DESC":"");}if(!$Gb[$ld]){if($w["type"]!="PRIMARY"||!$De)$x[]=array($w["type"],$ld,$g);}}foreach($x
  333. as$z=>$X){if($X[0]=="PRIMARY"){unset($x[$z]);$rc[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$ld=>$uc){foreach($uc["source"]as$z=>$f){if(!$me[$f])continue
  334. 2;$uc["source"][$z]=idf_unescape($me[$f]);}if(!isset($rc[" $ld"]))$rc[]=" ".format_foreign_key($uc);}queries("BEGIN");}foreach($q
  335. as$z=>$p)$q[$z]=" ".implode($p);$q=array_merge($q,array_filter($rc));if(!queries("CREATE TABLE ".table($R!=""?"adminer_$C":$C)." (\n".implode(",\n",$q)."\n)"))return
  336. false;if($R!=""){if($me&&!queries("INSERT INTO ".table("adminer_$C")." (".implode(", ",$me).") SELECT ".implode(", ",array_map('idf_escape',array_keys($me)))." FROM ".table($R)))return
  337. false;$qg=array();foreach(triggers($R)as$og=>$Zf){$ng=trigger($og);$qg[]="CREATE TRIGGER ".idf_escape($og)." ".implode(" ",$Zf)." ON ".table($C)."\n$ng[Statement]";}if(!queries("DROP TABLE ".table($R)))return
  338. false;queries("ALTER TABLE ".table("adminer_$C")." RENAME TO ".table($C));if(!alter_indexes($C,$x))return
  339. false;foreach($qg
  340. as$ng){if(!queries($ng))return
  341. false;}queries("COMMIT");}return
  342. true;}function
  343. index_sql($R,$U,$C,$g){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $g";}function
  344. alter_indexes($R,$c){foreach($c
  345. as$Ce){if($Ce[0]=="PRIMARY")return
  346. recreate_table($R,$R,array(),array(),array(),$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
  347. false;}return
  348. true;}function
  349. truncate_tables($T){return
  350. apply_queries("DELETE FROM",$T);}function
  351. drop_views($Kg){return
  352. apply_queries("DROP VIEW",$Kg);}function
  353. drop_tables($T){return
  354. apply_queries("DROP TABLE",$T);}function
  355. move_tables($T,$Kg,$Sf){return
  356. false;}function
  357. trigger($C){global$h;if($C=="")return
  358. array("Statement"=>"BEGIN\n\t;\nEND");$v='(?:[^`"\\s]+|`[^`]*`|"[^"]*")+';$pg=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$v\\s*(".implode("|",$pg["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($v))?\\s+ON\\s*$v\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$h->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$Yd=$B[3];return
  359. array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($Yd?" OF":""),"Of"=>($Yd[0]=='`'||$Yd[0]=='"'?idf_unescape($Yd):$Yd),"Trigger"=>$C,"Statement"=>$B[4],);}function
  360. triggers($R){$J=array();$pg=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*('.implode("|",$pg["Timing"]).')\\s*(.*)\\s+ON\\b~iU',$K["sql"],$B);$J[$K["name"]]=array($B[1],$B[2]);}return$J;}function
  361. trigger_options(){return
  362. array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
  363. begin(){return
  364. queries("BEGIN");}function
  365. last_id(){global$h;return$h->result("SELECT LAST_INSERT_ROWID()");}function
  366. explain($h,$H){return$h->query("EXPLAIN QUERY PLAN $H");}function
  367. found_rows($S,$Z){}function
  368. types(){return
  369. array();}function
  370. schemas(){return
  371. array();}function
  372. get_schema(){return"";}function
  373. set_schema($hf){return
  374. true;}function
  375. create_sql($R,$Ea,$Jf){global$h;$J=$h->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$w){if($C=='')continue;$J.=";\n\n".index_sql($R,$w['type'],$C,"(".implode(", ",array_map('idf_escape',$w['columns'])).")");}return$J;}function
  376. truncate_sql($R){return"DELETE FROM ".table($R);}function
  377. use_sql($k){}function
  378. trigger_sql($R){return
  379. implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
  380. show_variables(){global$h;$J=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$z)$J[$z]=$h->result("PRAGMA $z");return$J;}function
  381. show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$he){list($z,$X)=explode("=",$he,2);$J[$z]=$X;}return$J;}function
  382. convert_field($p){}function
  383. unconvert_field($p,$J){return$J;}function
  384. support($gc){return
  385. preg_match('~^(columns|database|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$gc);}$y="sqlite";$sg=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$If=array_keys($sg);$zg=array();$ge=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");$_c=array("hex","length","lower","round","unixepoch","upper");$Dc=array("avg","count","count distinct","group_concat","max","min","sum");$Jb=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}$Eb["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){$Ae=array("PgSQL","PDO_PgSQL");define("DRIVER","pgsql");if(extension_loaded("pgsql")){class
  386. Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error;function
  387. _error($Tb,$o){if(ini_bool("html_errors"))$o=html_entity_decode(strip_tags($o));$o=preg_replace('~^[^:]*: ~','',$o);$this->error=$o;}function
  388. connect($O,$V,$G){global$b;$m=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($O,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($G,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($m!=""?addcslashes($m,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$m!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Ig=pg_version($this->_link);$this->server_info=$Ig["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
  389. quote($Q){return"'".pg_escape_string($this->_link,$Q)."'";}function
  390. value($X,$p){return($p["type"]=="bytea"?pg_unescape_bytea($X):$X);}function
  391. quoteBinary($Q){return"'".pg_escape_bytea($this->_link,$Q)."'";}function
  392. select_db($k){global$b;if($k==$b->database())return$this->_database;$J=@pg_connect("$this->_string dbname='".addcslashes($k,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->_link=$J;return$J;}function
  393. close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function
  394. query($H,$tg=false){$I=@pg_query($this->_link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->_link);return
  395. false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);return
  396. true;}return
  397. new
  398. Min_Result($I);}function
  399. multi_query($H){return$this->_result=$this->query($H);}function
  400. store_result(){return$this->_result;}function
  401. next_result(){return
  402. false;}function
  403. result($H,$p=0){$I=$this->query($H);if(!$I||!$I->num_rows)return
  404. false;return
  405. pg_fetch_result($I->_result,0,$p);}function
  406. warnings(){return
  407. h(pg_last_notice($this->_link));}}class
  408. Min_Result{var$_result,$_offset=0,$num_rows;function
  409. __construct($I){$this->_result=$I;$this->num_rows=pg_num_rows($I);}function
  410. fetch_assoc(){return
  411. pg_fetch_assoc($this->_result);}function
  412. fetch_row(){return
  413. pg_fetch_row($this->_result);}function
  414. fetch_field(){$f=$this->_offset++;$J=new
  415. stdClass;if(function_exists('pg_field_table'))$J->orgtable=pg_field_table($this->_result,$f);$J->name=pg_field_name($this->_result,$f);$J->orgname=$J->name;$J->type=pg_field_type($this->_result,$f);$J->charsetnr=($J->type=="bytea"?63:0);return$J;}function
  416. __destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
  417. Min_DB
  418. extends
  419. Min_PDO{var$extension="PDO_PgSQL";function
  420. connect($O,$V,$G){global$b;$m=$b->database();$Q="pgsql:host='".str_replace(":","' port='",addcslashes($O,"'\\"))."' options='-c client_encoding=utf8'";$this->dsn("$Q dbname='".($m!=""?addcslashes($m,"'\\"):"postgres")."'",$V,$G);return
  421. true;}function
  422. select_db($k){global$b;return($b->database()==$k);}function
  423. value($X,$p){return$X;}function
  424. quoteBinary($ff){return
  425. q($ff);}function
  426. warnings(){return'';}function
  427. close(){}}}class
  428. Min_Driver
  429. extends
  430. Min_SQL{function
  431. insertUpdate($R,$L,$Ce){global$h;foreach($L
  432. as$P){$_g=array();$Z=array();foreach($P
  433. as$z=>$X){$_g[]="$z = $X";if(isset($Ce[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_g)." WHERE ".implode(" AND ",$Z))&&$h->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($P)).") VALUES (".implode(", ",$P).")")))return
  434. false;}return
  435. true;}function
  436. convertSearch($v,$X,$p){return(preg_match('~char|text'.(is_numeric($X["val"])&&!preg_match('~LIKE~',$X["op"])?'|'.number_type():'').'~',$p["type"])?$v:"CAST($v AS text)");}function
  437. value($X,$p){return$this->_conn->value($X,$p);}function
  438. quoteBinary($ff){return$this->_conn->quoteBinary($ff);}function
  439. warnings(){return$this->_conn->warnings();}function
  440. tableHelp($C){$xd=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$A=$xd[$_GET["ns"]];if($A)return"$A-".str_replace("_","-",$C).".html";}}function
  441. idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
  442. table($v){return
  443. idf_escape($v);}function
  444. connect(){global$b,$sg,$If;$h=new
  445. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2])){if(min_version(9,0,$h)){$h->query("SET application_name = 'Adminer'");if(min_version(9.2,0,$h)){$If['Strings'][]="json";$sg["json"]=4294967295;if(min_version(9.4,0,$h)){$If['Strings'][]="jsonb";$sg["jsonb"]=4294967295;}}}return$h;}return$h->error;}function
  446. get_databases(){return
  447. get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");}function
  448. limit($H,$Z,$_,$Zd=0,$N=" "){return" $H$Z".($_!==null?$N."LIMIT $_".($Zd?" OFFSET $Zd":""):"");}function
  449. limit1($R,$H,$Z,$N="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$N):" $H WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$N."LIMIT 1)");}function
  450. db_collation($m,$cb){global$h;return$h->result("SHOW LC_COLLATE");}function
  451. engines(){return
  452. array();}function
  453. logged_user(){global$h;return$h->result("SELECT user");}function
  454. tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support('materializedview'))$H.="
  455. UNION ALL
  456. SELECT matviewname, 'MATERIALIZED VIEW'
  457. FROM pg_matviews
  458. WHERE schemaname = current_schema()";$H.="
  459. ORDER BY 1";return
  460. get_key_vals($H);}function
  461. count_tables($l){return
  462. array();}function
  463. table_status($C=""){$J=array();foreach(get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", CASE WHEN c.relhasoids THEN 'oid' ELSE '' END AS \"Oid\", c.reltuples as \"Rows\", n.nspname
  464. FROM pg_class c
  465. JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
  466. WHERE relkind IN ('r', 'm', 'v', 'f')
  467. ".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return($C!=""?$J[$C]:$J);}function
  468. is_view($S){return
  469. in_array($S["Engine"],array("view","materialized view"));}function
  470. fk_support($S){return
  471. true;}function
  472. fields($R){$J=array();$wa=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment
  473. FROM pg_class c
  474. JOIN pg_namespace n ON c.relnamespace = n.oid
  475. JOIN pg_attribute a ON c.oid = a.attrelid
  476. LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
  477. WHERE c.relname = ".q($R)."
  478. AND n.nspname = current_schema()
  479. AND NOT a.attisdropped
  480. AND a.attnum > 0
  481. ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$B);list(,$U,$ud,$K["length"],$ra,$ya)=$B;$K["length"].=$ya;$Ua=$U.$ra;if(isset($wa[$Ua])){$K["type"]=$wa[$Ua];$K["full_type"]=$K["type"].$ud.$ya;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$ud.$ra.$ya;}$K["null"]=!$K["attnotnull"];$K["auto_increment"]=preg_match('~^nextval\\(~i',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~(.+)::[^)]+(.*)~',$K["default"],$B))$K["default"]=($B[1]=="NULL"?null:(($B[1][0]=="'"?idf_unescape($B[1]):$B[1]).$B[2]));$J[$K["field"]]=$K;}return$J;}function
  482. indexes($R,$i=null){global$h;if(!is_object($i))$i=$h;$J=array();$Qf=$i->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R));$g=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Qf AND attnum > 0",$i);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $Qf AND ci.oid = i.indexrelid",$i)as$K){$Te=$K["relname"];$J[$Te]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Te]["columns"]=array();foreach(explode(" ",$K["indkey"])as$Wc)$J[$Te]["columns"][]=$g[$Wc];$J[$Te]["descs"]=array();foreach(explode(" ",$K["indoption"])as$Xc)$J[$Te]["descs"][]=($Xc&1?'1':null);$J[$Te]["lengths"]=array();}return$J;}function
  483. foreign_keys($R){global$be;$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
  484. FROM pg_constraint
  485. WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema())
  486. AND contype = 'f'::char
  487. ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$B)){$K['source']=array_map('trim',explode(',',$B[1]));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$Dd)){$K['ns']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Dd[2]));$K['table']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Dd[4]));}$K['target']=array_map('trim',explode(',',$B[3]));$K['on_delete']=(preg_match("~ON DELETE ($be)~",$B[4],$Dd)?$Dd[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE ($be)~",$B[4],$Dd)?$Dd[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
  488. view($C){global$h;return
  489. array("select"=>trim($h->result("SELECT view_definition
  490. FROM information_schema.views
  491. WHERE table_schema = current_schema() AND table_name = ".q($C))));}function
  492. collations(){return
  493. array();}function
  494. information_schema($m){return($m=="information_schema");}function
  495. error(){global$h;$J=h($h->error);if(preg_match('~^(.*\\n)?([^\\n]*)\\n( *)\\^(\\n.*)?$~s',$J,$B))$J=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\\1<b>\\2</b>',$B[2]).$B[4];return
  496. nl_br($J);}function
  497. create_database($m,$e){return
  498. queries("CREATE DATABASE ".idf_escape($m).($e?" ENCODING ".idf_escape($e):""));}function
  499. drop_databases($l){global$h;$h->close();return
  500. apply_queries("DROP DATABASE",$l,'idf_escape');}function
  501. rename_database($C,$e){return
  502. queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
  503. auto_increment(){return"";}function
  504. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){$c=array();$Ke=array();foreach($q
  505. as$p){$f=idf_escape($p[0]);$X=$p[1];if(!$X)$c[]="DROP $f";else{$Fg=$X[5];unset($X[5]);if(isset($X[6])&&$p[0]=="")$X[1]=($X[1]=="bigint"?" big":" ")."serial";if($p[0]=="")$c[]=($R!=""?"ADD ":" ").implode($X);else{if($f!=$X[0])$Ke[]="ALTER TABLE ".table($R)." RENAME $f TO $X[0]";$c[]="ALTER $f TYPE$X[1]";if(!$X[6]){$c[]="ALTER $f ".($X[3]?"SET$X[3]":"DROP DEFAULT");$c[]="ALTER $f ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($p[0]!=""||$Fg!="")$Ke[]="COMMENT ON COLUMN ".table($R).".$X[0] IS ".($Fg!=""?substr($Fg,9):"''");}}$c=array_merge($c,$rc);if($R=="")array_unshift($Ke,"CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($Ke,"ALTER TABLE ".table($R)."\n".implode(",\n",$c));if($R!=""&&$R!=$C)$Ke[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);if($R!=""||$gb!="")$Ke[]="COMMENT ON TABLE ".table($C)." IS ".q($gb);if($Ea!=""){}foreach($Ke
  506. as$H){if(!queries($H))return
  507. false;}return
  508. true;}function
  509. alter_indexes($R,$c){$nb=array();$Fb=array();$Ke=array();foreach($c
  510. as$X){if($X[0]!="INDEX")$nb[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$Fb[]=idf_escape($X[1]);else$Ke[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($nb)array_unshift($Ke,"ALTER TABLE ".table($R).implode(",",$nb));if($Fb)array_unshift($Ke,"DROP INDEX ".implode(", ",$Fb));foreach($Ke
  511. as$H){if(!queries($H))return
  512. false;}return
  513. true;}function
  514. truncate_tables($T){return
  515. queries("TRUNCATE ".implode(", ",array_map('table',$T)));return
  516. true;}function
  517. drop_views($Kg){return
  518. drop_tables($Kg);}function
  519. drop_tables($T){foreach($T
  520. as$R){$Gf=table_status($R);if(!queries("DROP ".strtoupper($Gf["Engine"])." ".table($R)))return
  521. false;}return
  522. true;}function
  523. move_tables($T,$Kg,$Sf){foreach(array_merge($T,$Kg)as$R){$Gf=table_status($R);if(!queries("ALTER ".strtoupper($Gf["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Sf)))return
  524. false;}return
  525. true;}function
  526. trigger($C,$R=null){if($C=="")return
  527. array("Statement"=>"EXECUTE PROCEDURE ()");if($R===null)$R=$_GET['trigger'];$L=get_rows('SELECT t.trigger_name AS "Trigger", t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') FROM information_schema.triggers WHERE event_object_table = t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS "Type", t.action_statement AS "Statement" FROM information_schema.triggers t WHERE t.event_object_table = '.q($R).' AND t.trigger_name = '.q($C));return
  528. reset($L);}function
  529. triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".q($R))as$K)$J[$K["trigger_name"]]=array($K["action_timing"],$K["event_manipulation"]);return$J;}function
  530. trigger_options(){return
  531. array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
  532. routine($C,$U){$L=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
  533. FROM information_schema.routines
  534. WHERE routine_schema = current_schema() AND specific_name = '.q($C));$J=$L[0];$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
  535. FROM information_schema.parameters
  536. WHERE specific_schema = current_schema() AND specific_name = '.q($C).'
  537. ORDER BY ordinal_position');return$J;}function
  538. routines(){return
  539. get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
  540. FROM information_schema.routines
  541. WHERE routine_schema = current_schema()
  542. ORDER BY SPECIFIC_NAME');}function
  543. routine_languages(){return
  544. get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
  545. routine_id($C,$K){$J=array();foreach($K["fields"]as$p)$J[]=$p["type"];return
  546. idf_escape($C)."(".implode(", ",$J).")";}function
  547. last_id(){return
  548. 0;}function
  549. explain($h,$H){return$h->query("EXPLAIN $H");}function
  550. found_rows($S,$Z){global$h;if(preg_match("~ rows=([0-9]+)~",$h->result("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Se))return$Se[1];return
  551. false;}function
  552. types(){return
  553. get_vals("SELECT typname
  554. FROM pg_type
  555. WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
  556. AND typtype IN ('b','d','e')
  557. AND typelem = 0");}function
  558. schemas(){return
  559. get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
  560. get_schema(){global$h;return$h->result("SELECT current_schema()");}function
  561. set_schema($gf){global$h,$sg,$If;$J=$h->query("SET search_path TO ".idf_escape($gf));foreach(types()as$U){if(!isset($sg[$U])){$sg[$U]=0;$If['User types'][]=$U;}}return$J;}function
  562. create_sql($R,$Ea,$Jf){global$h;$J='';$cf=array();$qf=array();$Gf=table_status($R);$q=fields($R);$x=indexes($R);ksort($x);$pc=foreign_keys($R);ksort($pc);if(!$Gf||empty($q))return
  563. false;$J="CREATE TABLE ".idf_escape($Gf['nspname']).".".idf_escape($Gf['Name'])." (\n ";foreach($q
  564. as$hc=>$p){$se=idf_escape($p['field']).' '.$p['full_type'].default_value($p).($p['attnotnull']?" NOT NULL":"");$cf[]=$se;if(preg_match('~nextval\(\'([^\']+)\'\)~',$p['default'],$Ed)){$pf=$Ed[1];$Af=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($pf):"SELECT * FROM $pf"));$qf[]=($Jf=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $pf;\n":"")."CREATE SEQUENCE $pf INCREMENT $Af[increment_by] MINVALUE $Af[min_value] MAXVALUE $Af[max_value] START ".($Ea?$Af['last_value']:1)." CACHE $Af[cache_value];";}}if(!empty($qf))$J=implode("\n\n",$qf)."\n\n$J";foreach($x
  565. as$Rc=>$w){switch($w['type']){case'UNIQUE':$cf[]="CONSTRAINT ".idf_escape($Rc)." UNIQUE (".implode(', ',array_map('idf_escape',$w['columns'])).")";break;case'PRIMARY':$cf[]="CONSTRAINT ".idf_escape($Rc)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$w['columns'])).")";break;}}foreach($pc
  566. as$oc=>$nc)$cf[]="CONSTRAINT ".idf_escape($oc)." $nc[definition] ".($nc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE');$J.=implode(",\n ",$cf)."\n) WITH (oids = ".($Gf['Oid']?'true':'false').");";foreach($x
  567. as$Rc=>$w){if($w['type']=='INDEX')$J.="\n\nCREATE INDEX ".idf_escape($Rc)." ON ".idf_escape($Gf['nspname']).".".idf_escape($Gf['Name'])." USING btree (".implode(', ',array_map('idf_escape',$w['columns'])).");";}if($Gf['Comment'])$J.="\n\nCOMMENT ON TABLE ".idf_escape($Gf['nspname']).".".idf_escape($Gf['Name'])." IS ".q($Gf['Comment']).";";foreach($q
  568. as$hc=>$p){if($p['comment'])$J.="\n\nCOMMENT ON COLUMN ".idf_escape($Gf['nspname']).".".idf_escape($Gf['Name']).".".idf_escape($hc)." IS ".q($p['comment']).";";}return
  569. rtrim($J,';');}function
  570. truncate_sql($R){return"TRUNCATE ".table($R);}function
  571. trigger_sql($R){$Gf=table_status($R);$J="";foreach(triggers($R)as$mg=>$lg){$ng=trigger($mg,$Gf['Name']);$J.="\nCREATE TRIGGER ".idf_escape($ng['Trigger'])." $ng[Timing] $ng[Events] ON ".idf_escape($Gf["nspname"]).".".idf_escape($Gf['Name'])." $ng[Type] $ng[Statement];;\n";}return$J;}function
  572. use_sql($k){return"\connect ".idf_escape($k);}function
  573. show_variables(){return
  574. get_key_vals("SHOW ALL");}function
  575. process_list(){return
  576. get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
  577. show_status(){}function
  578. convert_field($p){}function
  579. unconvert_field($p,$J){return$J;}function
  580. support($gc){return
  581. preg_match('~^(database|table|columns|sql|indexes|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~',$gc);}function
  582. kill_process($X){return
  583. queries("SELECT pg_terminate_backend(".number($X).")");}function
  584. connection_id(){return"SELECT pg_backend_pid()";}function
  585. max_connections(){global$h;return$h->result("SHOW max_connections");}$y="pgsql";$sg=array();$If=array();foreach(array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$z=>$X){$sg+=$X;$If[$z]=array_keys($X);}$zg=array();$ge=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$_c=array("char_length","lower","round","to_hex","to_timestamp","upper");$Dc=array("avg","count","count distinct","max","min","sum");$Jb=array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}$Eb["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){$Ae=array("OCI8","PDO_OCI");define("DRIVER","oracle");if(extension_loaded("oci8")){class
  586. Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
  587. _error($Tb,$o){if(ini_bool("html_errors"))$o=html_entity_decode(strip_tags($o));$o=preg_replace('~^[^:]*: ~','',$o);$this->error=$o;}function
  588. connect($O,$V,$G){$this->_link=@oci_new_connect($V,$G,$O,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
  589. true;}$o=oci_error();$this->error=$o["message"];return
  590. false;}function
  591. quote($Q){return"'".str_replace("'","''",$Q)."'";}function
  592. select_db($k){return
  593. true;}function
  594. query($H,$tg=false){$I=oci_parse($this->_link,$H);$this->error="";if(!$I){$o=oci_error($this->_link);$this->errno=$o["code"];$this->error=$o["message"];return
  595. false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
  596. new
  597. Min_Result($I);$this->affected_rows=oci_num_rows($I);}return$J;}function
  598. multi_query($H){return$this->_result=$this->query($H);}function
  599. store_result(){return$this->_result;}function
  600. next_result(){return
  601. false;}function
  602. result($H,$p=1){$I=$this->query($H);if(!is_object($I)||!oci_fetch($I->_result))return
  603. false;return
  604. oci_result($I->_result,$p);}}class
  605. Min_Result{var$_result,$_offset=1,$num_rows;function
  606. __construct($I){$this->_result=$I;}function
  607. _convert($K){foreach((array)$K
  608. as$z=>$X){if(is_a($X,'OCI-Lob'))$K[$z]=$X->load();}return$K;}function
  609. fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function
  610. fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function
  611. fetch_field(){$f=$this->_offset++;$J=new
  612. stdClass;$J->name=oci_field_name($this->_result,$f);$J->orgname=$J->name;$J->type=oci_field_type($this->_result,$f);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
  613. __destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
  614. Min_DB
  615. extends
  616. Min_PDO{var$extension="PDO_OCI";function
  617. connect($O,$V,$G){$this->dsn("oci:dbname=//$O;charset=AL32UTF8",$V,$G);return
  618. true;}function
  619. select_db($k){return
  620. true;}}}class
  621. Min_Driver
  622. extends
  623. Min_SQL{function
  624. begin(){return
  625. true;}}function
  626. idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
  627. table($v){return
  628. idf_escape($v);}function
  629. connect(){global$b;$h=new
  630. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2]))return$h;return$h->error;}function
  631. get_databases(){return
  632. get_vals("SELECT tablespace_name FROM user_tablespaces");}function
  633. limit($H,$Z,$_,$Zd=0,$N=" "){return($Zd?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($_+$Zd).") WHERE rnum > $Zd":($_!==null?" * FROM (SELECT $H$Z) WHERE rownum <= ".($_+$Zd):" $H$Z"));}function
  634. limit1($R,$H,$Z,$N="\n"){return" $H$Z";}function
  635. db_collation($m,$cb){global$h;return$h->result("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
  636. engines(){return
  637. array();}function
  638. logged_user(){global$h;return$h->result("SELECT USER FROM DUAL");}function
  639. tables_list(){return
  640. get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."
  641. UNION SELECT view_name, 'view' FROM user_views
  642. ORDER BY 1");}function
  643. count_tables($l){return
  644. array();}function
  645. table_status($C=""){$J=array();$if=q($C);foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q(DB).($C!=""?" AND table_name = $if":"")."
  646. UNION SELECT view_name, 'view', 0, 0 FROM user_views".($C!=""?" WHERE view_name = $if":"")."
  647. ORDER BY 1")as$K){if($C!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
  648. is_view($S){return$S["Engine"]=="view";}function
  649. fk_support($S){return
  650. true;}function
  651. fields($R){$J=array();foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)." ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$ud="$K[DATA_PRECISION],$K[DATA_SCALE]";if($ud==",")$ud=$K["DATA_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($ud?"($ud)":""),"type"=>strtolower($U),"length"=>$ud,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$J;}function
  652. indexes($R,$i=null){$J=array();foreach(get_rows("SELECT uic.*, uc.constraint_type
  653. FROM user_ind_columns uic
  654. LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name
  655. WHERE uic.table_name = ".q($R)."
  656. ORDER BY uc.constraint_type, uic.column_position",$i)as$K){$Rc=$K["INDEX_NAME"];$J[$Rc]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$Rc]["columns"][]=$K["COLUMN_NAME"];$J[$Rc]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$Rc]["descs"][]=($K["DESCEND"]?'1':null);}return$J;}function
  657. view($C){$L=get_rows('SELECT text "select" FROM user_views WHERE view_name = '.q($C));return
  658. reset($L);}function
  659. collations(){return
  660. array();}function
  661. information_schema($m){return
  662. false;}function
  663. error(){global$h;return
  664. h($h->error);}function
  665. explain($h,$H){$h->query("EXPLAIN PLAN FOR $H");return$h->query("SELECT * FROM plan_table");}function
  666. found_rows($S,$Z){}function
  667. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){$c=$Fb=array();foreach($q
  668. as$p){$X=$p[1];if($X&&$p[0]!=""&&idf_escape($p[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($p[0])." TO $X[0]");if($X)$c[]=($R!=""?($p[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$Fb[]=idf_escape($p[0]);}if($R=="")return
  669. queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($R)."\n".implode("\n",$c)))&&(!$Fb||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$Fb).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
  670. foreign_keys($R){$J=array();$H="SELECT c_list.CONSTRAINT_NAME as NAME,
  671. c_src.COLUMN_NAME as SRC_COLUMN,
  672. c_dest.OWNER as DEST_DB,
  673. c_dest.TABLE_NAME as DEST_TABLE,
  674. c_dest.COLUMN_NAME as DEST_COLUMN,
  675. c_list.DELETE_RULE as ON_DELETE
  676. FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
  677. WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
  678. AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
  679. AND c_list.CONSTRAINT_TYPE = 'R'
  680. AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
  681. truncate_tables($T){return
  682. apply_queries("TRUNCATE TABLE",$T);}function
  683. drop_views($Kg){return
  684. apply_queries("DROP VIEW",$Kg);}function
  685. drop_tables($T){return
  686. apply_queries("DROP TABLE",$T);}function
  687. last_id(){return
  688. 0;}function
  689. schemas(){return
  690. get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))");}function
  691. get_schema(){global$h;return$h->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
  692. set_schema($hf){global$h;return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($hf));}function
  693. show_variables(){return
  694. get_key_vals('SELECT name, display_value FROM v$parameter');}function
  695. process_list(){return
  696. get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
  697. FROM v$session sess LEFT OUTER JOIN v$sql sql
  698. ON sql.sql_id = sess.sql_id
  699. WHERE sess.type = \'USER\'
  700. ORDER BY PROCESS
  701. ');}function
  702. show_status(){$L=get_rows('SELECT * FROM v$instance');return
  703. reset($L);}function
  704. convert_field($p){}function
  705. unconvert_field($p,$J){return$J;}function
  706. support($gc){return
  707. preg_match('~^(columns|database|drop_col|indexes|processlist|scheme|sql|status|table|variables|view|view_trigger)$~',$gc);}$y="oracle";$sg=array();$If=array();foreach(array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$z=>$X){$sg+=$X;$If[$z]=array_keys($X);}$zg=array();$ge=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$_c=array("length","lower","round","upper");$Dc=array("avg","count","count distinct","max","min","sum");$Jb=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));}$Eb["mssql"]="MS SQL (beta)";if(isset($_GET["mssql"])){$Ae=array("SQLSRV","MSSQL","PDO_DBLIB");define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class
  708. Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
  709. _get_error(){$this->error="";foreach(sqlsrv_errors()as$o){$this->errno=$o["code"];$this->error.="$o[message]\n";}$this->error=rtrim($this->error);}function
  710. connect($O,$V,$G){$this->_link=@sqlsrv_connect($O,array("UID"=>$V,"PWD"=>$G,"CharacterSet"=>"UTF-8"));if($this->_link){$Yc=sqlsrv_server_info($this->_link);$this->server_info=$Yc['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function
  711. quote($Q){return"'".str_replace("'","''",$Q)."'";}function
  712. select_db($k){return$this->query("USE ".idf_escape($k));}function
  713. query($H,$tg=false){$I=sqlsrv_query($this->_link,$H);$this->error="";if(!$I){$this->_get_error();return
  714. false;}return$this->store_result($I);}function
  715. multi_query($H){$this->_result=sqlsrv_query($this->_link,$H);$this->error="";if(!$this->_result){$this->_get_error();return
  716. false;}return
  717. true;}function
  718. store_result($I=null){if(!$I)$I=$this->_result;if(!$I)return
  719. false;if(sqlsrv_field_metadata($I))return
  720. new
  721. Min_Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
  722. true;}function
  723. next_result(){return$this->_result?sqlsrv_next_result($this->_result):null;}function
  724. result($H,$p=0){$I=$this->query($H);if(!is_object($I))return
  725. false;$K=$I->fetch_row();return$K[$p];}}class
  726. Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
  727. __construct($I){$this->_result=$I;}function
  728. _convert($K){foreach((array)$K
  729. as$z=>$X){if(is_a($X,'DateTime'))$K[$z]=$X->format("Y-m-d H:i:s");}return$K;}function
  730. fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function
  731. fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function
  732. fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$p=$this->_fields[$this->_offset++];$J=new
  733. stdClass;$J->name=$p["Name"];$J->orgname=$p["Name"];$J->type=($p["Type"]==1?254:0);return$J;}function
  734. seek($Zd){for($t=0;$t<$Zd;$t++)sqlsrv_fetch($this->_result);}function
  735. __destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class
  736. Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function
  737. connect($O,$V,$G){$this->_link=@mssql_connect($O,$V,$G);if($this->_link){$I=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");$K=$I->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$K[0]] $K[1]";}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function
  738. quote($Q){return"'".str_replace("'","''",$Q)."'";}function
  739. select_db($k){return
  740. mssql_select_db($k);}function
  741. query($H,$tg=false){$I=@mssql_query($H,$this->_link);$this->error="";if(!$I){$this->error=mssql_get_last_message();return
  742. false;}if($I===true){$this->affected_rows=mssql_rows_affected($this->_link);return
  743. true;}return
  744. new
  745. Min_Result($I);}function
  746. multi_query($H){return$this->_result=$this->query($H);}function
  747. store_result(){return$this->_result;}function
  748. next_result(){return
  749. mssql_next_result($this->_result->_result);}function
  750. result($H,$p=0){$I=$this->query($H);if(!is_object($I))return
  751. false;return
  752. mssql_result($I->_result,0,$p);}}class
  753. Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
  754. __construct($I){$this->_result=$I;$this->num_rows=mssql_num_rows($I);}function
  755. fetch_assoc(){return
  756. mssql_fetch_assoc($this->_result);}function
  757. fetch_row(){return
  758. mssql_fetch_row($this->_result);}function
  759. num_rows(){return
  760. mssql_num_rows($this->_result);}function
  761. fetch_field(){$J=mssql_fetch_field($this->_result);$J->orgtable=$J->table;$J->orgname=$J->name;return$J;}function
  762. seek($Zd){mssql_data_seek($this->_result,$Zd);}function
  763. __destruct(){mssql_free_result($this->_result);}}}elseif(extension_loaded("pdo_dblib")){class
  764. Min_DB
  765. extends
  766. Min_PDO{var$extension="PDO_DBLIB";function
  767. connect($O,$V,$G){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$V,$G);return
  768. true;}function
  769. select_db($k){return$this->query("USE ".idf_escape($k));}}}class
  770. Min_Driver
  771. extends
  772. Min_SQL{function
  773. insertUpdate($R,$L,$Ce){foreach($L
  774. as$P){$_g=array();$Z=array();foreach($P
  775. as$z=>$X){$_g[]="$z = $X";if(isset($Ce[idf_unescape($z)]))$Z[]="$z = $X";}if(!queries("MERGE ".table($R)." USING (VALUES(".implode(", ",$P).")) AS source (c".implode(", c",range(1,count($P))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$_g)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($P)).") VALUES (".implode(", ",$P).");"))return
  776. false;}return
  777. true;}function
  778. begin(){return
  779. queries("BEGIN TRANSACTION");}}function
  780. idf_escape($v){return"[".str_replace("]","]]",$v)."]";}function
  781. table($v){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($v);}function
  782. connect(){global$b;$h=new
  783. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2]))return$h;return$h->error;}function
  784. get_databases(){return
  785. get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
  786. limit($H,$Z,$_,$Zd=0,$N=" "){return($_!==null?" TOP (".($_+$Zd).")":"")." $H$Z";}function
  787. limit1($R,$H,$Z,$N="\n"){return
  788. limit($H,$Z,1,0,$N);}function
  789. db_collation($m,$cb){global$h;return$h->result("SELECT collation_name FROM sys.databases WHERE name = ".q($m));}function
  790. engines(){return
  791. array();}function
  792. logged_user(){global$h;return$h->result("SELECT SUSER_NAME()");}function
  793. tables_list(){return
  794. get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
  795. count_tables($l){global$h;$J=array();foreach($l
  796. as$m){$h->select_db($m);$J[$m]=$h->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
  797. table_status($C=""){$J=array();foreach(get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K){if($C!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
  798. is_view($S){return$S["Engine"]=="VIEW";}function
  799. fk_support($S){return
  800. true;}function
  801. fields($R){$J=array();foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default]
  802. FROM sys.all_columns c
  803. JOIN sys.all_objects o ON c.object_id = o.object_id
  804. JOIN sys.types t ON c.user_type_id = t.user_type_id
  805. LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
  806. WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN ('S', 'U', 'V') AND o.name = ".q($R))as$K){$U=$K["type"];$ud=(preg_match("~char|binary~",$U)?$K["max_length"]:($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($ud?"($ud)":""),"type"=>$U,"length"=>$ud,"default"=>$K["default"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$K["is_identity"],);}return$J;}function
  807. indexes($R,$i=null){$J=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
  808. FROM sys.indexes i
  809. INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
  810. INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
  811. WHERE OBJECT_NAME(i.object_id) = ".q($R),$i)as$K){$C=$K["name"];$J[$C]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$C]["lengths"]=array();$J[$C]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$C]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
  812. view($C){global$h;return
  813. array("select"=>preg_replace('~^(?:[^[]|\\[[^]]*])*\\s+AS\\s+~isU','',$h->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function
  814. collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$e)$J[preg_replace('~_.*~','',$e)][]=$e;return$J;}function
  815. information_schema($m){return
  816. false;}function
  817. error(){global$h;return
  818. nl_br(h(preg_replace('~^(\\[[^]]*])+~m','',$h->error)));}function
  819. create_database($m,$e){return
  820. queries("CREATE DATABASE ".idf_escape($m).(preg_match('~^[a-z0-9_]+$~i',$e)?" COLLATE $e":""));}function
  821. drop_databases($l){return
  822. queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$l)));}function
  823. rename_database($C,$e){if(preg_match('~^[a-z0-9_]+$~i',$e))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $e");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
  824. true;}function
  825. auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
  826. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){$c=array();foreach($q
  827. as$p){$f=idf_escape($p[0]);$X=$p[1];if(!$X)$c["DROP"][]=" COLUMN $f";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~","\\1\\2",$X[1]);if($p[0]=="")$c["ADD"][]="\n ".implode("",$X).($R==""?substr($rc[$X[0]],16+strlen($X[0])):"");else{unset($X[6]);if($f!=$X[0])queries("EXEC sp_rename ".q(table($R).".$f").", ".q(idf_unescape($X[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$X)][]="";}}}if($R=="")return
  828. queries("CREATE TABLE ".table($C)." (".implode(",",(array)$c["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($rc)$c[""]=$rc;foreach($c
  829. as$z=>$X){if(!queries("ALTER TABLE ".idf_escape($C)." $z".implode(",",$X)))return
  830. false;}return
  831. true;}function
  832. alter_indexes($R,$c){$w=array();$Fb=array();foreach($c
  833. as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$Fb[]=idf_escape($X[1]);else$w[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
  834. false;}return(!$w||queries("DROP INDEX ".implode(", ",$w)))&&(!$Fb||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$Fb)));}function
  835. last_id(){global$h;return$h->result("SELECT SCOPE_IDENTITY()");}function
  836. explain($h,$H){$h->query("SET SHOWPLAN_ALL ON");$J=$h->query($H);$h->query("SET SHOWPLAN_ALL OFF");return$J;}function
  837. found_rows($S,$Z){}function
  838. foreign_keys($R){$J=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R))as$K){$uc=&$J[$K["FK_NAME"]];$uc["table"]=$K["PKTABLE_NAME"];$uc["source"][]=$K["FKCOLUMN_NAME"];$uc["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
  839. truncate_tables($T){return
  840. apply_queries("TRUNCATE TABLE",$T);}function
  841. drop_views($Kg){return
  842. queries("DROP VIEW ".implode(", ",array_map('table',$Kg)));}function
  843. drop_tables($T){return
  844. queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function
  845. move_tables($T,$Kg,$Sf){return
  846. apply_queries("ALTER SCHEMA ".idf_escape($Sf)." TRANSFER",array_merge($T,$Kg));}function
  847. trigger($C){if($C=="")return
  848. array();$L=get_rows("SELECT s.name [Trigger],
  849. CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
  850. CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
  851. c.text
  852. FROM sysobjects s
  853. JOIN syscomments c ON s.id = c.id
  854. WHERE s.xtype = 'TR' AND s.name = ".q($C));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\\s+AS\\s+~isU','',$J["text"]);return$J;}function
  855. triggers($R){$J=array();foreach(get_rows("SELECT sys1.name,
  856. CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
  857. CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
  858. FROM sysobjects sys1
  859. JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
  860. WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}function
  861. trigger_options(){return
  862. array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
  863. schemas(){return
  864. get_vals("SELECT name FROM sys.schemas");}function
  865. get_schema(){global$h;if($_GET["ns"]!="")return$_GET["ns"];return$h->result("SELECT SCHEMA_NAME()");}function
  866. set_schema($gf){return
  867. true;}function
  868. use_sql($k){return"USE ".idf_escape($k);}function
  869. show_variables(){return
  870. array();}function
  871. show_status(){return
  872. array();}function
  873. convert_field($p){}function
  874. unconvert_field($p,$J){return$J;}function
  875. support($gc){return
  876. preg_match('~^(columns|database|drop_col|indexes|scheme|sql|table|trigger|view|view_trigger)$~',$gc);}$y="mssql";$sg=array();$If=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$z=>$X){$sg+=$X;$If[$z]=array_keys($X);}$zg=array();$ge=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$_c=array("len","lower","round","upper");$Dc=array("avg","count","count distinct","max","min","sum");$Jb=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));}$Eb['firebird']='Firebird (alpha)';if(isset($_GET["firebird"])){$Ae=array("interbase");define("DRIVER","firebird");if(extension_loaded("interbase")){class
  877. Min_DB{var$extension="Firebird",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
  878. connect($O,$V,$G){$this->_link=ibase_connect($O,$V,$G);if($this->_link){$Cg=explode(':',$O);$this->service_link=ibase_service_attach($Cg[0],$V,$G);$this->server_info=ibase_server_info($this->service_link,IBASE_SVC_SERVER_VERSION);}else{$this->errno=ibase_errcode();$this->error=ibase_errmsg();}return(bool)$this->_link;}function
  879. quote($Q){return"'".str_replace("'","''",$Q)."'";}function
  880. select_db($k){return($k=="domain");}function
  881. query($H,$tg=false){$I=ibase_query($H,$this->_link);if(!$I){$this->errno=ibase_errcode();$this->error=ibase_errmsg();return
  882. false;}$this->error="";if($I===true){$this->affected_rows=ibase_affected_rows($this->_link);return
  883. true;}return
  884. new
  885. Min_Result($I);}function
  886. multi_query($H){return$this->_result=$this->query($H);}function
  887. store_result(){return$this->_result;}function
  888. next_result(){return
  889. false;}function
  890. result($H,$p=0){$I=$this->query($H);if(!$I||!$I->num_rows)return
  891. false;$K=$I->fetch_row();return$K[$p];}}class
  892. Min_Result{var$num_rows,$_result,$_offset=0;function
  893. __construct($I){$this->_result=$I;}function
  894. fetch_assoc(){return
  895. ibase_fetch_assoc($this->_result);}function
  896. fetch_row(){return
  897. ibase_fetch_row($this->_result);}function
  898. fetch_field(){$p=ibase_field_info($this->_result,$this->_offset++);return(object)array('name'=>$p['name'],'orgname'=>$p['name'],'type'=>$p['type'],'charsetnr'=>$p['length'],);}function
  899. __destruct(){ibase_free_result($this->_result);}}}class
  900. Min_Driver
  901. extends
  902. Min_SQL{}function
  903. idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
  904. table($v){return
  905. idf_escape($v);}function
  906. connect(){global$b;$h=new
  907. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2]))return$h;return$h->error;}function
  908. get_databases($qc){return
  909. array("domain");}function
  910. limit($H,$Z,$_,$Zd=0,$N=" "){$J='';$J.=($_!==null?$N."FIRST $_".($Zd?" SKIP $Zd":""):"");$J.=" $H$Z";return$J;}function
  911. limit1($R,$H,$Z,$N="\n"){return
  912. limit($H,$Z,1,0,$N);}function
  913. db_collation($m,$cb){}function
  914. engines(){return
  915. array();}function
  916. logged_user(){global$b;$j=$b->credentials();return$j[1];}function
  917. tables_list(){global$h;$H='SELECT RDB$RELATION_NAME FROM rdb$relations WHERE rdb$system_flag = 0';$I=ibase_query($h->_link,$H);$J=array();while($K=ibase_fetch_assoc($I))$J[$K['RDB$RELATION_NAME']]='table';ksort($J);return$J;}function
  918. count_tables($l){return
  919. array();}function
  920. table_status($C="",$fc=false){global$h;$J=array();$sb=tables_list();foreach($sb
  921. as$w=>$X){$w=trim($w);$J[$w]=array('Name'=>$w,'Engine'=>'standard',);if($C==$w)return$J[$w];}return$J;}function
  922. is_view($S){return
  923. false;}function
  924. fk_support($S){return
  925. preg_match('~InnoDB|IBMDB2I~i',$S["Engine"]);}function
  926. fields($R){global$h;$J=array();$H='SELECT r.RDB$FIELD_NAME AS field_name,
  927. r.RDB$DESCRIPTION AS field_description,
  928. r.RDB$DEFAULT_VALUE AS field_default_value,
  929. r.RDB$NULL_FLAG AS field_not_null_constraint,
  930. f.RDB$FIELD_LENGTH AS field_length,
  931. f.RDB$FIELD_PRECISION AS field_precision,
  932. f.RDB$FIELD_SCALE AS field_scale,
  933. CASE f.RDB$FIELD_TYPE
  934. WHEN 261 THEN \'BLOB\'
  935. WHEN 14 THEN \'CHAR\'
  936. WHEN 40 THEN \'CSTRING\'
  937. WHEN 11 THEN \'D_FLOAT\'
  938. WHEN 27 THEN \'DOUBLE\'
  939. WHEN 10 THEN \'FLOAT\'
  940. WHEN 16 THEN \'INT64\'
  941. WHEN 8 THEN \'INTEGER\'
  942. WHEN 9 THEN \'QUAD\'
  943. WHEN 7 THEN \'SMALLINT\'
  944. WHEN 12 THEN \'DATE\'
  945. WHEN 13 THEN \'TIME\'
  946. WHEN 35 THEN \'TIMESTAMP\'
  947. WHEN 37 THEN \'VARCHAR\'
  948. ELSE \'UNKNOWN\'
  949. END AS field_type,
  950. f.RDB$FIELD_SUB_TYPE AS field_subtype,
  951. coll.RDB$COLLATION_NAME AS field_collation,
  952. cset.RDB$CHARACTER_SET_NAME AS field_charset
  953. FROM RDB$RELATION_FIELDS r
  954. LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
  955. LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
  956. LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
  957. WHERE r.RDB$RELATION_NAME = '.q($R).'
  958. ORDER BY r.RDB$FIELD_POSITION';$I=ibase_query($h->_link,$H);while($K=ibase_fetch_assoc($I))$J[trim($K['FIELD_NAME'])]=array("field"=>trim($K["FIELD_NAME"]),"full_type"=>trim($K["FIELD_TYPE"]),"type"=>trim($K["FIELD_SUB_TYPE"]),"default"=>trim($K['FIELD_DEFAULT_VALUE']),"null"=>(trim($K["FIELD_NOT_NULL_CONSTRAINT"])=="YES"),"auto_increment"=>'0',"collation"=>trim($K["FIELD_COLLATION"]),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"comment"=>trim($K["FIELD_DESCRIPTION"]),);return$J;}function
  959. indexes($R,$i=null){$J=array();return$J;}function
  960. foreign_keys($R){return
  961. array();}function
  962. collations(){return
  963. array();}function
  964. information_schema($m){return
  965. false;}function
  966. error(){global$h;return
  967. h($h->error);}function
  968. types(){return
  969. array();}function
  970. schemas(){return
  971. array();}function
  972. get_schema(){return"";}function
  973. set_schema($gf){return
  974. true;}function
  975. support($gc){return
  976. preg_match("~^(columns|sql|status|table)$~",$gc);}$y="firebird";$ge=array("=");$_c=array();$Dc=array();$Jb=array();}$Eb["simpledb"]="SimpleDB";if(isset($_GET["simpledb"])){$Ae=array("SimpleXML + allow_url_fopen");define("DRIVER","simpledb");if(class_exists('SimpleXMLElement')&&ini_bool('allow_url_fopen')){class
  977. Min_DB{var$extension="SimpleXML",$server_info='2009-04-15',$error,$timeout,$next,$affected_rows,$_result;function
  978. select_db($k){return($k=="domain");}function
  979. query($H,$tg=false){$F=array('SelectExpression'=>$H,'ConsistentRead'=>'true');if($this->next)$F['NextToken']=$this->next;$I=sdb_request_all('Select','Item',$F,$this->timeout);if($I===false)return$I;if(preg_match('~^\s*SELECT\s+COUNT\(~i',$H)){$Mf=0;foreach($I
  980. as$hd)$Mf+=$hd->Attribute->Value;$I=array((object)array('Attribute'=>array((object)array('Name'=>'Count','Value'=>$Mf,))));}return
  981. new
  982. Min_Result($I);}function
  983. multi_query($H){return$this->_result=$this->query($H);}function
  984. store_result(){return$this->_result;}function
  985. next_result(){return
  986. false;}function
  987. quote($Q){return"'".str_replace("'","''",$Q)."'";}}class
  988. Min_Result{var$num_rows,$_rows=array(),$_offset=0;function
  989. __construct($I){foreach($I
  990. as$hd){$K=array();if($hd->Name!='')$K['itemName()']=(string)$hd->Name;foreach($hd->Attribute
  991. as$Ba){$C=$this->_processValue($Ba->Name);$Y=$this->_processValue($Ba->Value);if(isset($K[$C])){$K[$C]=(array)$K[$C];$K[$C][]=$Y;}else$K[$C]=$Y;}$this->_rows[]=$K;foreach($K
  992. as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=count($this->_rows);}function
  993. _processValue($Lb){return(is_object($Lb)&&$Lb['encoding']=='base64'?base64_decode($Lb):(string)$Lb);}function
  994. fetch_assoc(){$K=current($this->_rows);if(!$K)return$K;$J=array();foreach($this->_rows[0]as$z=>$X)$J[$z]=$K[$z];next($this->_rows);return$J;}function
  995. fetch_row(){$J=$this->fetch_assoc();if(!$J)return$J;return
  996. array_values($J);}function
  997. fetch_field(){$md=array_keys($this->_rows[0]);return(object)array('name'=>$md[$this->_offset++]);}}}class
  998. Min_Driver
  999. extends
  1000. Min_SQL{public$Ce="itemName()";function
  1001. _chunkRequest($Pc,$qa,$F,$Yb=array()){global$h;foreach(array_chunk($Pc,25)as$Xa){$re=$F;foreach($Xa
  1002. as$t=>$u){$re["Item.$t.ItemName"]=$u;foreach($Yb
  1003. as$z=>$X)$re["Item.$t.$z"]=$X;}if(!sdb_request($qa,$re))return
  1004. false;}$h->affected_rows=count($Pc);return
  1005. true;}function
  1006. _extractIds($R,$Le,$_){$J=array();if(preg_match_all("~itemName\(\) = (('[^']*+')+)~",$Le,$Ed))$J=array_map('idf_unescape',$Ed[1]);else{foreach(sdb_request_all('Select','Item',array('SelectExpression'=>'SELECT itemName() FROM '.table($R).$Le.($_?" LIMIT 1":"")))as$hd)$J[]=$hd->Name;}return$J;}function
  1007. select($R,$M,$Z,$Ac,$je=array(),$_=1,$E=0,$Ee=false){global$h;$h->next=$_GET["next"];$J=parent::select($R,$M,$Z,$Ac,$je,$_,$E,$Ee);$h->next=0;return$J;}function
  1008. delete($R,$Le,$_=0){return$this->_chunkRequest($this->_extractIds($R,$Le,$_),'BatchDeleteAttributes',array('DomainName'=>$R));}function
  1009. update($R,$P,$Le,$_=0,$N="\n"){$xb=array();$cd=array();$t=0;$Pc=$this->_extractIds($R,$Le,$_);$u=idf_unescape($P["`itemName()`"]);unset($P["`itemName()`"]);foreach($P
  1010. as$z=>$X){$z=idf_unescape($z);if($X=="NULL"||($u!=""&&array($u)!=$Pc))$xb["Attribute.".count($xb).".Name"]=$z;if($X!="NULL"){foreach((array)$X
  1011. as$id=>$W){$cd["Attribute.$t.Name"]=$z;$cd["Attribute.$t.Value"]=(is_array($X)?$W:idf_unescape($W));if(!$id)$cd["Attribute.$t.Replace"]="true";$t++;}}}$F=array('DomainName'=>$R);return(!$cd||$this->_chunkRequest(($u!=""?array($u):$Pc),'BatchPutAttributes',$F,$cd))&&(!$xb||$this->_chunkRequest($Pc,'BatchDeleteAttributes',$F,$xb));}function
  1012. insert($R,$P){$F=array("DomainName"=>$R);$t=0;foreach($P
  1013. as$C=>$Y){if($Y!="NULL"){$C=idf_unescape($C);if($C=="itemName()")$F["ItemName"]=idf_unescape($Y);else{foreach((array)$Y
  1014. as$X){$F["Attribute.$t.Name"]=$C;$F["Attribute.$t.Value"]=(is_array($Y)?$X:idf_unescape($Y));$t++;}}}}return
  1015. sdb_request('PutAttributes',$F);}function
  1016. insertUpdate($R,$L,$Ce){foreach($L
  1017. as$P){if(!$this->update($R,$P,"WHERE `itemName()` = ".q($P["`itemName()`"])))return
  1018. false;}return
  1019. true;}function
  1020. begin(){return
  1021. false;}function
  1022. commit(){return
  1023. false;}function
  1024. rollback(){return
  1025. false;}}function
  1026. connect(){return
  1027. new
  1028. Min_DB;}function
  1029. support($gc){return
  1030. preg_match('~sql~',$gc);}function
  1031. logged_user(){global$b;$j=$b->credentials();return$j[1];}function
  1032. get_databases(){return
  1033. array("domain");}function
  1034. collations(){return
  1035. array();}function
  1036. db_collation($m,$cb){}function
  1037. tables_list(){global$h;$J=array();foreach(sdb_request_all('ListDomains','DomainName')as$R)$J[(string)$R]='table';if($h->error&&defined("PAGE_HEADER"))echo"<p class='error'>".error()."\n";return$J;}function
  1038. table_status($C="",$fc=false){$J=array();foreach(($C!=""?array($C=>true):tables_list())as$R=>$U){$K=array("Name"=>$R,"Auto_increment"=>"");if(!$fc){$Md=sdb_request('DomainMetadata',array('DomainName'=>$R));if($Md){foreach(array("Rows"=>"ItemCount","Data_length"=>"ItemNamesSizeBytes","Index_length"=>"AttributeValuesSizeBytes","Data_free"=>"AttributeNamesSizeBytes",)as$z=>$X)$K[$z]=(string)$Md->$X;}}if($C!="")return$K;$J[$R]=$K;}return$J;}function
  1039. explain($h,$H){}function
  1040. error(){global$h;return
  1041. h($h->error);}function
  1042. information_schema(){}function
  1043. is_view($S){}function
  1044. indexes($R,$i=null){return
  1045. array(array("type"=>"PRIMARY","columns"=>array("itemName()")),);}function
  1046. fields($R){return
  1047. fields_from_edit();}function
  1048. foreign_keys($R){return
  1049. array();}function
  1050. table($v){return
  1051. idf_escape($v);}function
  1052. idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
  1053. limit($H,$Z,$_,$Zd=0,$N=" "){return" $H$Z".($_!==null?$N."LIMIT $_":"");}function
  1054. unconvert_field($p,$J){return$J;}function
  1055. fk_support($S){}function
  1056. engines(){return
  1057. array();}function
  1058. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){return($R==""&&sdb_request('CreateDomain',array('DomainName'=>$C)));}function
  1059. drop_tables($T){foreach($T
  1060. as$R){if(!sdb_request('DeleteDomain',array('DomainName'=>$R)))return
  1061. false;}return
  1062. true;}function
  1063. count_tables($l){foreach($l
  1064. as$m)return
  1065. array($m=>count(tables_list()));}function
  1066. found_rows($S,$Z){return($Z?null:$S["Rows"]);}function
  1067. last_id(){}function
  1068. hmac($va,$sb,$z,$Pe=false){$Na=64;if(strlen($z)>$Na)$z=pack("H*",$va($z));$z=str_pad($z,$Na,"\0");$jd=$z^str_repeat("\x36",$Na);$kd=$z^str_repeat("\x5C",$Na);$J=$va($kd.pack("H*",$va($jd.$sb)));if($Pe)$J=pack("H*",$J);return$J;}function
  1069. sdb_request($qa,$F=array()){global$b,$h;list($Mc,$F['AWSAccessKeyId'],$jf)=$b->credentials();$F['Action']=$qa;$F['Timestamp']=gmdate('Y-m-d\TH:i:s+00:00');$F['Version']='2009-04-15';$F['SignatureVersion']=2;$F['SignatureMethod']='HmacSHA1';ksort($F);$H='';foreach($F
  1070. as$z=>$X)$H.='&'.rawurlencode($z).'='.rawurlencode($X);$H=str_replace('%7E','~',substr($H,1));$H.="&Signature=".urlencode(base64_encode(hmac('sha1',"POST\n".preg_replace('~^https?://~','',$Mc)."\n/\n$H",$jf,true)));@ini_set('track_errors',1);$jc=@file_get_contents((preg_match('~^https?://~',$Mc)?$Mc:"http://$Mc"),false,stream_context_create(array('http'=>array('method'=>'POST','content'=>$H,'ignore_errors'=>1,))));if(!$jc){$h->error=$php_errormsg;return
  1071. false;}libxml_use_internal_errors(true);$Vg=simplexml_load_string($jc);if(!$Vg){$o=libxml_get_last_error();$h->error=$o->message;return
  1072. false;}if($Vg->Errors){$o=$Vg->Errors->Error;$h->error="$o->Message ($o->Code)";return
  1073. false;}$h->error='';$Rf=$qa."Result";return($Vg->$Rf?$Vg->$Rf:true);}function
  1074. sdb_request_all($qa,$Rf,$F=array(),$Yf=0){$J=array();$Ef=($Yf?microtime(true):0);$_=(preg_match('~LIMIT\s+(\d+)\s*$~i',$F['SelectExpression'],$B)?$B[1]:0);do{$Vg=sdb_request($qa,$F);if(!$Vg)break;foreach($Vg->$Rf
  1075. as$Lb)$J[]=$Lb;if($_&&count($J)>=$_){$_GET["next"]=$Vg->NextToken;break;}if($Yf&&microtime(true)-$Ef>$Yf)return
  1076. false;$F['NextToken']=$Vg->NextToken;if($_)$F['SelectExpression']=preg_replace('~\d+\s*$~',$_-count($J),$F['SelectExpression']);}while($Vg->NextToken);return$J;}$y="simpledb";$ge=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","IS NOT NULL");$_c=array();$Dc=array("count");$Jb=array(array("json"));}$Eb["mongo"]="MongoDB";if(isset($_GET["mongo"])){$Ae=array("mongo","mongodb");define("DRIVER","mongo");if(class_exists('MongoDB')){class
  1077. Min_DB{var$extension="Mongo",$error,$last_id,$_link,$_db;function
  1078. connect($O,$V,$G){global$b;$m=$b->database();$D=array();if($V!=""){$D["username"]=$V;$D["password"]=$G;}if($m!="")$D["db"]=$m;try{$this->_link=@new
  1079. MongoClient("mongodb://$O",$D);return
  1080. true;}catch(Exception$Vb){$this->error=$Vb->getMessage();return
  1081. false;}}function
  1082. query($H){return
  1083. false;}function
  1084. select_db($k){try{$this->_db=$this->_link->selectDB($k);return
  1085. true;}catch(Exception$Vb){$this->error=$Vb->getMessage();return
  1086. false;}}function
  1087. quote($Q){return$Q;}}class
  1088. Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
  1089. __construct($I){foreach($I
  1090. as$hd){$K=array();foreach($hd
  1091. as$z=>$X){if(is_a($X,'MongoBinData'))$this->_charset[$z]=63;$K[$z]=(is_a($X,'MongoId')?'ObjectId("'.strval($X).'")':(is_a($X,'MongoDate')?gmdate("Y-m-d H:i:s",$X->sec)." GMT":(is_a($X,'MongoBinData')?$X->bin:(is_a($X,'MongoRegex')?strval($X):(is_object($X)?get_class($X):$X)))));}$this->_rows[]=$K;foreach($K
  1092. as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=count($this->_rows);}function
  1093. fetch_assoc(){$K=current($this->_rows);if(!$K)return$K;$J=array();foreach($this->_rows[0]as$z=>$X)$J[$z]=$K[$z];next($this->_rows);return$J;}function
  1094. fetch_row(){$J=$this->fetch_assoc();if(!$J)return$J;return
  1095. array_values($J);}function
  1096. fetch_field(){$md=array_keys($this->_rows[0]);$C=$md[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class
  1097. Min_Driver
  1098. extends
  1099. Min_SQL{public$Ce="_id";function
  1100. select($R,$M,$Z,$Ac,$je=array(),$_=1,$E=0,$Ee=false){$M=($M==array("*")?array():array_fill_keys($M,true));$yf=array();foreach($je
  1101. as$X){$X=preg_replace('~ DESC$~','',$X,1,$mb);$yf[$X]=($mb?-1:1);}return
  1102. new
  1103. Min_Result($this->_conn->_db->selectCollection($R)->find(array(),$M)->sort($yf)->limit($_!=""?+$_:0)->skip($E*$_));}function
  1104. insert($R,$P){try{$J=$this->_conn->_db->selectCollection($R)->insert($P);$this->_conn->errno=$J['code'];$this->_conn->error=$J['err'];$this->_conn->last_id=$P['_id'];return!$J['err'];}catch(Exception$Vb){$this->_conn->error=$Vb->getMessage();return
  1105. false;}}}function
  1106. get_databases($qc){global$h;$J=array();$ub=$h->_link->listDBs();foreach($ub['databases']as$m)$J[]=$m['name'];return$J;}function
  1107. count_tables($l){global$h;$J=array();foreach($l
  1108. as$m)$J[$m]=count($h->_link->selectDB($m)->getCollectionNames(true));return$J;}function
  1109. tables_list(){global$h;return
  1110. array_fill_keys($h->_db->getCollectionNames(true),'table');}function
  1111. drop_databases($l){global$h;foreach($l
  1112. as$m){$Ye=$h->_link->selectDB($m)->drop();if(!$Ye['ok'])return
  1113. false;}return
  1114. true;}function
  1115. indexes($R,$i=null){global$h;$J=array();foreach($h->_db->selectCollection($R)->getIndexInfo()as$w){$_b=array();foreach($w["key"]as$f=>$U)$_b[]=($U==-1?'1':null);$J[$w["name"]]=array("type"=>($w["name"]=="_id_"?"PRIMARY":($w["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($w["key"]),"lengths"=>array(),"descs"=>$_b,);}return$J;}function
  1116. fields($R){return
  1117. fields_from_edit();}function
  1118. found_rows($S,$Z){global$h;return$h->_db->selectCollection($_GET["select"])->count($Z);}$ge=array("=");}elseif(class_exists('MongoDB\Driver\Manager')){class
  1119. Min_DB{var$extension="MongoDB",$error,$last_id;var$_link;var$_db,$_db_name;function
  1120. connect($O,$V,$G){global$b;$m=$b->database();$D=array();if($V!=""){$D["username"]=$V;$D["password"]=$G;}if($m!="")$D["db"]=$m;try{$d='MongoDB\Driver\Manager';$this->_link=new$d("mongodb://$O",$D);return
  1121. true;}catch(Exception$Vb){$this->error=$Vb->getMessage();return
  1122. false;}}function
  1123. query($H){return
  1124. false;}function
  1125. select_db($k){try{$this->_db_name=$k;return
  1126. true;}catch(Exception$Vb){$this->error=$Vb->getMessage();return
  1127. false;}}function
  1128. quote($Q){return$Q;}}class
  1129. Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
  1130. __construct($I){foreach($I
  1131. as$hd){$K=array();foreach($hd
  1132. as$z=>$X){if(is_a($X,'MongoDB\BSON\Binary'))$this->_charset[$z]=63;$K[$z]=(is_a($X,'MongoDB\BSON\ObjectID')?'MongoDB\BSON\ObjectID("'.strval($X).'")':(is_a($X,'MongoDB\BSON\UTCDatetime')?$X->toDateTime()->format('Y-m-d H:i:s'):(is_a($X,'MongoDB\BSON\Binary')?$X->bin:(is_a($X,'MongoDB\BSON\Regex')?strval($X):(is_object($X)?json_encode($X,256):$X)))));}$this->_rows[]=$K;foreach($K
  1133. as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=$I->count;}function
  1134. fetch_assoc(){$K=current($this->_rows);if(!$K)return$K;$J=array();foreach($this->_rows[0]as$z=>$X)$J[$z]=$K[$z];next($this->_rows);return$J;}function
  1135. fetch_row(){$J=$this->fetch_assoc();if(!$J)return$J;return
  1136. array_values($J);}function
  1137. fetch_field(){$md=array_keys($this->_rows[0]);$C=$md[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class
  1138. Min_Driver
  1139. extends
  1140. Min_SQL{public$Ce="_id";function
  1141. select($R,$M,$Z,$Ac,$je=array(),$_=1,$E=0,$Ee=false){global$h;$M=($M==array("*")?array():array_fill_keys($M,1));if(count($M)&&!isset($M['_id']))$M['_id']=0;$Z=where_to_query($Z);$yf=array();foreach($je
  1142. as$X){$X=preg_replace('~ DESC$~','',$X,1,$mb);$yf[$X]=($mb?-1:1);}if(isset($_GET['limit'])&&is_numeric($_GET['limit'])&&$_GET['limit']>0)$_=$_GET['limit'];$_=min(200,max(1,(int)$_));$wf=$E*$_;$d='MongoDB\Driver\Query';$H=new$d($Z,array('projection'=>$M,'limit'=>$_,'skip'=>$wf,'sort'=>$yf));$bf=$h->_link->executeQuery("$h->_db_name.$R",$H);return
  1143. new
  1144. Min_Result($bf);}function
  1145. update($R,$P,$Le,$_=0,$N="\n"){global$h;$m=$h->_db_name;$Z=sql_query_where_parser($Le);$d='MongoDB\Driver\BulkWrite';$Ra=new$d(array());if(isset($P['_id']))unset($P['_id']);$Ue=array();foreach($P
  1146. as$z=>$Y){if($Y=='NULL'){$Ue[$z]=1;unset($P[$z]);}}$_g=array('$set'=>$P);if(count($Ue))$_g['$unset']=$Ue;$Ra->update($Z,$_g,array('upsert'=>false));$bf=$h->_link->executeBulkWrite("$m.$R",$Ra);$h->affected_rows=$bf->getModifiedCount();return
  1147. true;}function
  1148. delete($R,$Le,$_=0){global$h;$m=$h->_db_name;$Z=sql_query_where_parser($Le);$d='MongoDB\Driver\BulkWrite';$Ra=new$d(array());$Ra->delete($Z,array('limit'=>$_));$bf=$h->_link->executeBulkWrite("$m.$R",$Ra);$h->affected_rows=$bf->getDeletedCount();return
  1149. true;}function
  1150. insert($R,$P){global$h;$m=$h->_db_name;$d='MongoDB\Driver\BulkWrite';$Ra=new$d(array());if(isset($P['_id'])&&empty($P['_id']))unset($P['_id']);$Ra->insert($P);$bf=$h->_link->executeBulkWrite("$m.$R",$Ra);$h->affected_rows=$bf->getInsertedCount();return
  1151. true;}}function
  1152. get_databases($qc){global$h;$J=array();$d='MongoDB\Driver\Command';$fb=new$d(array('listDatabases'=>1));$bf=$h->_link->executeCommand('admin',$fb);foreach($bf
  1153. as$ub){foreach($ub->databases
  1154. as$m)$J[]=$m->name;}return$J;}function
  1155. count_tables($l){$J=array();return$J;}function
  1156. tables_list(){global$h;$d='MongoDB\Driver\Command';$fb=new$d(array('listCollections'=>1));$bf=$h->_link->executeCommand($h->_db_name,$fb);$db=array();foreach($bf
  1157. as$I)$db[$I->name]='table';return$db;}function
  1158. drop_databases($l){return
  1159. false;}function
  1160. indexes($R,$i=null){global$h;$J=array();$d='MongoDB\Driver\Command';$fb=new$d(array('listIndexes'=>$R));$bf=$h->_link->executeCommand($h->_db_name,$fb);foreach($bf
  1161. as$w){$_b=array();$g=array();foreach(get_object_vars($w->key)as$f=>$U){$_b[]=($U==-1?'1':null);$g[]=$f;}$J[$w->name]=array("type"=>($w->name=="_id_"?"PRIMARY":(isset($w->unique)?"UNIQUE":"INDEX")),"columns"=>$g,"lengths"=>array(),"descs"=>$_b,);}return$J;}function
  1162. fields($R){$q=fields_from_edit();if(!count($q)){global$n;$I=$n->select($R,array("*"),null,null,array(),10);while($K=$I->fetch_assoc()){foreach($K
  1163. as$z=>$X){$K[$z]=null;$q[$z]=array("field"=>$z,"type"=>"string","null"=>($z!=$n->primary),"auto_increment"=>($z==$n->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}return$q;}function
  1164. found_rows($S,$Z){global$h;$Z=where_to_query($Z);$d='MongoDB\Driver\Command';$fb=new$d(array('count'=>$S['Name'],'query'=>$Z));$bf=$h->_link->executeCommand($h->_db_name,$fb);$fg=$bf->toArray();return$fg[0]->n;}function
  1165. sql_query_where_parser($Le){$Le=trim(preg_replace('/WHERE[\s]?[(]?\(?/','',$Le));$Le=preg_replace('/\)\)\)$/',')',$Le);$Sg=explode(' AND ',$Le);$Tg=explode(') OR (',$Le);$Z=array();foreach($Sg
  1166. as$Qg)$Z[]=trim($Qg);if(count($Tg)==1)$Tg=array();elseif(count($Tg)>1)$Z=array();return
  1167. where_to_query($Z,$Tg);}function
  1168. where_to_query($Og=array(),$Pg=array()){global$ge;$sb=array();foreach(array('and'=>$Og,'or'=>$Pg)as$U=>$Z){if(is_array($Z)){foreach($Z
  1169. as$Zb){list($bb,$ee,$X)=explode(" ",$Zb,3);if($bb=="_id"){$X=str_replace('MongoDB\BSON\ObjectID("',"",$X);$X=str_replace('")',"",$X);$d='MongoDB\BSON\ObjectID';$X=new$d($X);}if(!in_array($ee,$ge))continue;if(preg_match('~^\(f\)(.+)~',$ee,$B)){$X=(float)$X;$ee=$B[1];}elseif(preg_match('~^\(date\)(.+)~',$ee,$B)){$tb=new
  1170. DateTime($X);$d='MongoDB\BSON\UTCDatetime';$X=new$d($tb->getTimestamp()*1000);$ee=$B[1];}switch($ee){case'=':$ee='$eq';break;case'!=':$ee='$ne';break;case'>':$ee='$gt';break;case'<':$ee='$lt';break;case'>=':$ee='$gte';break;case'<=':$ee='$lte';break;case'regex':$ee='$regex';break;default:continue;}if($U=='and')$sb['$and'][]=array($bb=>array($ee=>$X));elseif($U=='or')$sb['$or'][]=array($bb=>array($ee=>$X));}}}return$sb;}$ge=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);}function
  1171. table($v){return$v;}function
  1172. idf_escape($v){return$v;}function
  1173. table_status($C="",$fc=false){$J=array();foreach(tables_list()as$R=>$U){$J[$R]=array("Name"=>$R);if($C==$R)return$J[$R];}return$J;}function
  1174. last_id(){global$h;return$h->last_id;}function
  1175. error(){global$h;return
  1176. h($h->error);}function
  1177. collations(){return
  1178. array();}function
  1179. logged_user(){global$b;$j=$b->credentials();return$j[1];}function
  1180. connect(){global$b;$h=new
  1181. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2]))return$h;return$h->error;}function
  1182. alter_indexes($R,$c){global$h;foreach($c
  1183. as$X){list($U,$C,$P)=$X;if($P=="DROP")$J=$h->_db->command(array("deleteIndexes"=>$R,"index"=>$C));else{$g=array();foreach($P
  1184. as$f){$f=preg_replace('~ DESC$~','',$f,1,$mb);$g[$f]=($mb?-1:1);}$J=$h->_db->selectCollection($R)->ensureIndex($g,array("unique"=>($U=="UNIQUE"),"name"=>$C,));}if($J['errmsg']){$h->error=$J['errmsg'];return
  1185. false;}}return
  1186. true;}function
  1187. support($gc){return
  1188. preg_match("~database|indexes~",$gc);}function
  1189. db_collation($m,$cb){}function
  1190. information_schema(){}function
  1191. is_view($S){}function
  1192. convert_field($p){}function
  1193. unconvert_field($p,$J){return$J;}function
  1194. foreign_keys($R){return
  1195. array();}function
  1196. fk_support($S){}function
  1197. engines(){return
  1198. array();}function
  1199. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){global$h;if($R==""){$h->_db->createCollection($C);return
  1200. true;}}function
  1201. drop_tables($T){global$h;foreach($T
  1202. as$R){$Ye=$h->_db->selectCollection($R)->drop();if(!$Ye['ok'])return
  1203. false;}return
  1204. true;}function
  1205. truncate_tables($T){global$h;foreach($T
  1206. as$R){$Ye=$h->_db->selectCollection($R)->remove();if(!$Ye['ok'])return
  1207. false;}return
  1208. true;}$y="mongo";$_c=array();$Dc=array();$Jb=array(array("json"));}$Eb["elastic"]="Elasticsearch (beta)";if(isset($_GET["elastic"])){$Ae=array("json");define("DRIVER","elastic");if(function_exists('json_decode')){class
  1209. Min_DB{var$extension="JSON",$server_info,$errno,$error,$_url;function
  1210. rootQuery($ve,$kb=array(),$Nd='GET'){@ini_set('track_errors',1);$jc=@file_get_contents("$this->_url/".ltrim($ve,'/'),false,stream_context_create(array('http'=>array('method'=>$Nd,'content'=>$kb===null?$kb:json_encode($kb),'header'=>'Content-Type: application/json','ignore_errors'=>1,))));if(!$jc){$this->error=$php_errormsg;return$jc;}if(!preg_match('~^HTTP/[0-9.]+ 2~i',$http_response_header[0])){$this->error=$jc;return
  1211. false;}$J=json_decode($jc,true);if($J===null){$this->errno=json_last_error();if(function_exists('json_last_error_msg'))$this->error=json_last_error_msg();else{$jb=get_defined_constants(true);foreach($jb['json']as$C=>$Y){if($Y==$this->errno&&preg_match('~^JSON_ERROR_~',$C)){$this->error=$C;break;}}}}return$J;}function
  1212. query($ve,$kb=array(),$Nd='GET'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($ve,'/'),$kb,$Nd);}function
  1213. connect($O,$V,$G){preg_match('~^(https?://)?(.*)~',$O,$B);$this->_url=($B[1]?$B[1]:"http://")."$V:$G@$B[2]";$J=$this->query('');if($J)$this->server_info=$J['version']['number'];return(bool)$J;}function
  1214. select_db($k){$this->_db=$k;return
  1215. true;}function
  1216. quote($Q){return$Q;}}class
  1217. Min_Result{var$num_rows,$_rows;function
  1218. __construct($L){$this->num_rows=count($this->_rows);$this->_rows=$L;reset($this->_rows);}function
  1219. fetch_assoc(){$J=current($this->_rows);next($this->_rows);return$J;}function
  1220. fetch_row(){return
  1221. array_values($this->fetch_assoc());}}}class
  1222. Min_Driver
  1223. extends
  1224. Min_SQL{function
  1225. select($R,$M,$Z,$Ac,$je=array(),$_=1,$E=0,$Ee=false){global$b;$sb=array();$H="$R/_search";if($M!=array("*"))$sb["fields"]=$M;if($je){$yf=array();foreach($je
  1226. as$bb){$bb=preg_replace('~ DESC$~','',$bb,1,$mb);$yf[]=($mb?array($bb=>"desc"):$bb);}$sb["sort"]=$yf;}if($_){$sb["size"]=+$_;if($E)$sb["from"]=($E*$_);}foreach($Z
  1227. as$X){list($bb,$ee,$X)=explode(" ",$X,3);if($bb=="_id")$sb["query"]["ids"]["values"][]=$X;elseif($bb.$X!=""){$Tf=array("term"=>array(($bb!=""?$bb:"_all")=>$X));if($ee=="=")$sb["query"]["filtered"]["filter"]["and"][]=$Tf;else$sb["query"]["filtered"]["query"]["bool"]["must"][]=$Tf;}}if($sb["query"]&&!$sb["query"]["filtered"]["query"]&&!$sb["query"]["ids"])$sb["query"]["filtered"]["query"]=array("match_all"=>array());$Ef=microtime(true);$if=$this->_conn->query($H,$sb);if($Ee)echo$b->selectQuery("$H: ".print_r($sb,true),$Ef,!$if);if(!$if)return
  1228. false;$J=array();foreach($if['hits']['hits']as$Lc){$K=array();if($M==array("*"))$K["_id"]=$Lc["_id"];$q=$Lc['_source'];if($M!=array("*")){$q=array();foreach($M
  1229. as$z)$q[$z]=$Lc['fields'][$z];}foreach($q
  1230. as$z=>$X){if($sb["fields"])$X=$X[0];$K[$z]=(is_array($X)?json_encode($X):$X);}$J[]=$K;}return
  1231. new
  1232. Min_Result($J);}function
  1233. update($U,$Qe,$Le){$ue=preg_split('~ *= *~',$Le);if(count($ue)==2){$u=trim($ue[1]);$H="$U/$u";return$this->_conn->query($H,$Qe,'POST');}return
  1234. false;}function
  1235. insert($U,$Qe){$u="";$H="$U/$u";$Ye=$this->_conn->query($H,$Qe,'POST');$this->_conn->last_id=$Ye['_id'];return$Ye['created'];}function
  1236. delete($U,$Le){$Pc=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Pc[]=$_GET["where"]["_id"];if(is_array($_POST['check'])){foreach($_POST['check']as$Ta){$ue=preg_split('~ *= *~',$Ta);if(count($ue)==2)$Pc[]=trim($ue[1]);}}$this->_conn->affected_rows=0;foreach($Pc
  1237. as$u){$H="{$U}/{$u}";$Ye=$this->_conn->query($H,'{}','DELETE');if(is_array($Ye)&&$Ye['found']==true)$this->_conn->affected_rows++;}return$this->_conn->affected_rows;}}function
  1238. connect(){global$b;$h=new
  1239. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2]))return$h;return$h->error;}function
  1240. support($gc){return
  1241. preg_match("~database|table|columns~",$gc);}function
  1242. logged_user(){global$b;$j=$b->credentials();return$j[1];}function
  1243. get_databases(){global$h;$J=$h->rootQuery('_aliases');if($J){$J=array_keys($J);sort($J,SORT_STRING);}return$J;}function
  1244. collations(){return
  1245. array();}function
  1246. db_collation($m,$cb){}function
  1247. engines(){return
  1248. array();}function
  1249. count_tables($l){global$h;$J=array();$I=$h->query('_stats');if($I&&$I['indices']){$Vc=$I['indices'];foreach($Vc
  1250. as$Uc=>$Ff){$Tc=$Ff['total']['indexing'];$J[$Uc]=$Tc['index_total'];}}return$J;}function
  1251. tables_list(){global$h;$J=$h->query('_mapping');if($J)$J=array_fill_keys(array_keys($J[$h->_db]["mappings"]),'table');return$J;}function
  1252. table_status($C="",$fc=false){global$h;$if=$h->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$J=array();if($if){$T=$if["aggregations"]["count_by_type"]["buckets"];foreach($T
  1253. as$R){$J[$R["key"]]=array("Name"=>$R["key"],"Engine"=>"table","Rows"=>$R["doc_count"],);if($C!=""&&$C==$R["key"])return$J[$C];}}return$J;}function
  1254. error(){global$h;return
  1255. h($h->error);}function
  1256. information_schema(){}function
  1257. is_view($S){}function
  1258. indexes($R,$i=null){return
  1259. array(array("type"=>"PRIMARY","columns"=>array("_id")),);}function
  1260. fields($R){global$h;$I=$h->query("$R/_mapping");$J=array();if($I){$Ad=$I[$R]['properties'];if(!$Ad)$Ad=$I[$h->_db]['mappings'][$R]['properties'];if($Ad){foreach($Ad
  1261. as$C=>$p){$J[$C]=array("field"=>$C,"full_type"=>$p["type"],"type"=>$p["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($p["properties"]){unset($J[$C]["privileges"]["insert"]);unset($J[$C]["privileges"]["update"]);}}}}return$J;}function
  1262. foreign_keys($R){return
  1263. array();}function
  1264. table($v){return$v;}function
  1265. idf_escape($v){return$v;}function
  1266. convert_field($p){}function
  1267. unconvert_field($p,$J){return$J;}function
  1268. fk_support($S){}function
  1269. found_rows($S,$Z){return
  1270. null;}function
  1271. create_database($m){global$h;return$h->rootQuery(urlencode($m),null,'PUT');}function
  1272. drop_databases($l){global$h;return$h->rootQuery(urlencode(implode(',',$l)),array(),'DELETE');}function
  1273. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){global$h;$He=array();foreach($q
  1274. as$dc){$hc=trim($dc[1][0]);$ic=trim($dc[1][1]?$dc[1][1]:"text");$He[$hc]=array('type'=>$ic);}if(!empty($He))$He=array('properties'=>$He);return$h->query("_mapping/{$C}",$He,'PUT');}function
  1275. drop_tables($T){global$h;$J=true;foreach($T
  1276. as$R)$J=$J&&$h->query(urlencode($R),array(),'DELETE');return$J;}function
  1277. last_id(){global$h;return$h->last_id;}$y="elastic";$ge=array("=","query");$_c=array();$Dc=array();$Jb=array(array("json"));$sg=array();$If=array();foreach(array('Numbers'=>array("long"=>3,"integer"=>5,"short"=>8,"byte"=>10,"double"=>20,"float"=>66,"half_float"=>12,"scaled_float"=>21),'Date and time'=>array("date"=>10),'Strings'=>array("string"=>65535,"text"=>65535),'Binary'=>array("binary"=>255),)as$z=>$X){$sg+=$X;$If[$z]=array_keys($X);}}$Eb=array("server"=>"MySQL")+$Eb;if(!defined("DRIVER")){$Ae=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
  1278. Min_DB
  1279. extends
  1280. MySQLi{var$extension="MySQLi";function
  1281. __construct(){parent::init();}function
  1282. connect($O="",$V="",$G="",$k=null,$ze=null,$xf=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Mc,$ze)=explode(":",$O,2);$Df=$b->connectSsl();if($Df)$this->ssl_set($Df['key'],$Df['cert'],$Df['ca'],'','');$J=@$this->real_connect(($O!=""?$Mc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$G!=""?$G:ini_get("mysqli.default_pw")),$k,(is_numeric($ze)?$ze:ini_get("mysqli.default_port")),(!is_numeric($ze)?$ze:$xf),($Df?64:0));return$J;}function
  1283. set_charset($Sa){if(parent::set_charset($Sa))return
  1284. true;parent::set_charset('utf8');return$this->query("SET NAMES $Sa");}function
  1285. result($H,$p=0){$I=$this->query($H);if(!$I)return
  1286. false;$K=$I->fetch_array();return$K[$p];}function
  1287. quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
  1288. Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
  1289. connect($O,$V,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$G"!=""?$G: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
  1290. set_charset($Sa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Sa,$this->_link))return
  1291. true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Sa");}function
  1292. quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function
  1293. select_db($k){return
  1294. mysql_select_db($k,$this->_link);}function
  1295. query($H,$tg=false){$I=@($tg?mysql_unbuffered_query($H,$this->_link):mysql_query($H,$this->_link));$this->error="";if(!$I){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
  1296. false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
  1297. true;}return
  1298. new
  1299. Min_Result($I);}function
  1300. multi_query($H){return$this->_result=$this->query($H);}function
  1301. store_result(){return$this->_result;}function
  1302. next_result(){return
  1303. false;}function
  1304. result($H,$p=0){$I=$this->query($H);if(!$I||!$I->num_rows)return
  1305. false;return
  1306. mysql_result($I->_result,0,$p);}}class
  1307. Min_Result{var$num_rows,$_result,$_offset=0;function
  1308. __construct($I){$this->_result=$I;$this->num_rows=mysql_num_rows($I);}function
  1309. fetch_assoc(){return
  1310. mysql_fetch_assoc($this->_result);}function
  1311. fetch_row(){return
  1312. mysql_fetch_row($this->_result);}function
  1313. fetch_field(){$J=mysql_fetch_field($this->_result,$this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=($J->blob?63:0);return$J;}function
  1314. __destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
  1315. Min_DB
  1316. extends
  1317. Min_PDO{var$extension="PDO_MySQL";function
  1318. connect($O,$V,$G){global$b;$D=array();$Df=$b->connectSsl();if($Df)$D=array(PDO::MYSQL_ATTR_SSL_KEY=>$Df['key'],PDO::MYSQL_ATTR_SSL_CERT=>$Df['cert'],PDO::MYSQL_ATTR_SSL_CA=>$Df['ca'],);$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$V,$G,$D);return
  1319. true;}function
  1320. set_charset($Sa){$this->query("SET NAMES $Sa");}function
  1321. select_db($k){return$this->query("USE ".idf_escape($k));}function
  1322. query($H,$tg=false){$this->setAttribute(1000,!$tg);return
  1323. parent::query($H,$tg);}}}class
  1324. Min_Driver
  1325. extends
  1326. Min_SQL{function
  1327. insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
  1328. insertUpdate($R,$L,$Ce){$g=array_keys(reset($L));$Be="INSERT INTO ".table($R)." (".implode(", ",$g).") VALUES\n";$Gg=array();foreach($g
  1329. as$z)$Gg[$z]="$z = VALUES($z)";$Lf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Gg);$Gg=array();$ud=0;foreach($L
  1330. as$P){$Y="(".implode(", ",$P).")";if($Gg&&(strlen($Be)+$ud+strlen($Y)+strlen($Lf)>1e6)){if(!queries($Be.implode(",\n",$Gg).$Lf))return
  1331. false;$Gg=array();$ud=0;}$Gg[]=$Y;$ud+=strlen($Y)+2;}return
  1332. queries($Be.implode(",\n",$Gg).$Lf);}function
  1333. convertSearch($v,$X,$p){return(preg_match('~char|text|enum|set~',$p["type"])&&!preg_match("~^utf8~",$p["collation"])?"CONVERT($v USING ".charset($this->_conn).")":$v);}function
  1334. warnings(){$I=$this->_conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();select($I);return
  1335. ob_get_clean();}}function
  1336. tableHelp($C){$Bd=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
  1337. strtolower(($Bd?"information-schema-$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($Bd?"mysql$C-table/":"system-database.html");}}function
  1338. idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
  1339. table($v){return
  1340. idf_escape($v);}function
  1341. connect(){global$b,$sg,$If;$h=new
  1342. Min_DB;$j=$b->credentials();if($h->connect($j[0],$j[1],$j[2])){$h->set_charset(charset($h));$h->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version('5.7.8',10.2,$h)){$If['Strings'][]="json";$sg["json"]=4294967295;}return$h;}$J=$h->error;if(function_exists('iconv')&&!is_utf8($J)&&strlen($ff=iconv("windows-1250","utf-8",$J))>strlen($J))$J=$ff;return$J;}function
  1343. get_databases($qc){$J=get_session("dbs");if($J===null){$H=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$J=($qc?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
  1344. limit($H,$Z,$_,$Zd=0,$N=" "){return" $H$Z".($_!==null?$N."LIMIT $_".($Zd?" OFFSET $Zd":""):"");}function
  1345. limit1($R,$H,$Z,$N="\n"){return
  1346. limit($H,$Z,1,0,$N);}function
  1347. db_collation($m,$cb){global$h;$J=null;$nb=$h->result("SHOW CREATE DATABASE ".idf_escape($m),1);if(preg_match('~ COLLATE ([^ ]+)~',$nb,$B))$J=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$nb,$B))$J=$cb[$B[1]][-1];return$J;}function
  1348. engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
  1349. logged_user(){global$h;return$h->result("SELECT USER()");}function
  1350. tables_list(){return
  1351. 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
  1352. count_tables($l){$J=array();foreach($l
  1353. as$m)$J[$m]=count(get_vals("SHOW TABLES IN ".idf_escape($m)));return$J;}function
  1354. table_status($C="",$fc=false){$J=array();foreach(get_rows($fc&&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$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($C!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
  1355. is_view($S){return$S["Engine"]===null;}function
  1356. fk_support($S){return
  1357. preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function
  1358. fields($R){$J=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$K){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$K["Type"],$B);$J[$K["Field"]]=array("field"=>$K["Field"],"full_type"=>$K["Type"],"type"=>$B[1],"length"=>$B[2],"unsigned"=>ltrim($B[3].$B[4]),"default"=>($K["Default"]!=""||preg_match("~char|set~",$B[1])?$K["Default"]:null),"null"=>($K["Null"]=="YES"),"auto_increment"=>($K["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$K["Extra"],$B)?$B[1]:""),"collation"=>$K["Collation"],"privileges"=>array_flip(preg_split('~, *~',$K["Privileges"])),"comment"=>$K["Comment"],"primary"=>($K["Key"]=="PRI"),);}return$J;}function
  1359. indexes($R,$i=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$i)as$K){$C=$K["Key_name"];$J[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$C]["columns"][]=$K["Column_name"];$J[$C]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$C]["descs"][]=null;}return$J;}function
  1360. foreign_keys($R){global$h,$be;static$we='`(?:[^`]|``)+`';$J=array();$ob=$h->result("SHOW CREATE TABLE ".table($R),1);if($ob){preg_match_all("~CONSTRAINT ($we) FOREIGN KEY ?\\(((?:$we,? ?)+)\\) REFERENCES ($we)(?:\\.($we))? \\(((?:$we,? ?)+)\\)(?: ON DELETE ($be))?(?: ON UPDATE ($be))?~",$ob,$Ed,PREG_SET_ORDER);foreach($Ed
  1361. as$B){preg_match_all("~$we~",$B[2],$zf);preg_match_all("~$we~",$B[5],$Sf);$J[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',$zf[0]),"target"=>array_map('idf_unescape',$Sf[0]),"on_delete"=>($B[6]?$B[6]:"RESTRICT"),"on_update"=>($B[7]?$B[7]:"RESTRICT"),);}}return$J;}function
  1362. view($C){global$h;return
  1363. array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$h->result("SHOW CREATE VIEW ".table($C),1)));}function
  1364. collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
  1365. as$z=>$X)asort($J[$z]);return$J;}function
  1366. information_schema($m){return(min_version(5)&&$m=="information_schema")||(min_version(5.5)&&$m=="performance_schema");}function
  1367. error(){global$h;return
  1368. h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$h->error));}function
  1369. create_database($m,$e){return
  1370. queries("CREATE DATABASE ".idf_escape($m).($e?" COLLATE ".q($e):""));}function
  1371. drop_databases($l){$J=apply_queries("DROP DATABASE",$l,'idf_escape');restart_session();set_session("dbs",null);return$J;}function
  1372. rename_database($C,$e){$J=false;if(create_database($C,$e)){$Ve=array();foreach(tables_list()as$R=>$U)$Ve[]=table($R)." TO ".idf_escape($C).".".table($R);$J=(!$Ve||queries("RENAME TABLE ".implode(", ",$Ve)));if($J)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$J;}function
  1373. auto_increment(){$Fa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$Fa="";break;}if($w["type"]=="PRIMARY")$Fa=" UNIQUE";}}return" AUTO_INCREMENT$Fa";}function
  1374. alter_table($R,$C,$q,$rc,$gb,$Qb,$e,$Ea,$te){$c=array();foreach($q
  1375. as$p)$c[]=($p[1]?($R!=""?($p[0]!=""?"CHANGE ".idf_escape($p[0]):"ADD"):" ")." ".implode($p[1]).($R!=""?$p[2]:""):"DROP ".idf_escape($p[0]));$c=array_merge($c,$rc);$Gf=($gb!==null?" COMMENT=".q($gb):"").($Qb?" ENGINE=".q($Qb):"").($e?" COLLATE ".q($e):"").($Ea!=""?" AUTO_INCREMENT=$Ea":"");if($R=="")return
  1376. queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$Gf$te");if($R!=$C)$c[]="RENAME TO ".table($C);if($Gf)$c[]=ltrim($Gf);return($c||$te?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$te):true);}function
  1377. alter_indexes($R,$c){foreach($c
  1378. as$z=>$X)$c[$z]=($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
  1379. queries("ALTER TABLE ".table($R).implode(",",$c));}function
  1380. truncate_tables($T){return
  1381. apply_queries("TRUNCATE TABLE",$T);}function
  1382. drop_views($Kg){return
  1383. queries("DROP VIEW ".implode(", ",array_map('table',$Kg)));}function
  1384. drop_tables($T){return
  1385. queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function
  1386. move_tables($T,$Kg,$Sf){$Ve=array();foreach(array_merge($T,$Kg)as$R)$Ve[]=table($R)." TO ".idf_escape($Sf).".".table($R);return
  1387. queries("RENAME TABLE ".implode(", ",$Ve));}function
  1388. copy_tables($T,$Kg,$Sf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
  1389. as$R){$C=($Sf==DB?table("copy_$R"):idf_escape($Sf).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $C")||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return
  1390. false;}foreach($Kg
  1391. as$R){$C=($Sf==DB?table("copy_$R"):idf_escape($Sf).".".table($R));$Jg=view($R);if(!queries("DROP VIEW IF EXISTS $C")||!queries("CREATE VIEW $C AS $Jg[select]"))return
  1392. false;}return
  1393. true;}function
  1394. trigger($C){if($C=="")return
  1395. array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return
  1396. reset($L);}function
  1397. triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
  1398. trigger_options(){return
  1399. array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
  1400. routine($C,$U){global$h,$Rb,$ad,$sg;$wa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$_f="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$rg="((".implode("|",array_merge(array_keys($sg),$wa)).")\\b(?:\\s*\\(((?:[^'\")]|$Rb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$we="$_f*(".($U=="FUNCTION"?"":$ad).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$rg";$nb=$h->result("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$we\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$rg\\s+":"")."(.*)~is",$nb,$B);$q=array();preg_match_all("~$we\\s*,?~is",$B[1],$Ed,PREG_SET_ORDER);foreach($Ed
  1401. as$qe){$C=str_replace("``","`",$qe[2]).$qe[3];$q[]=array("field"=>$C,"type"=>strtolower($qe[5]),"length"=>preg_replace_callback("~$Rb~s",'normalize_enum',$qe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$qe[8] $qe[7]"))),"null"=>1,"full_type"=>$qe[4],"inout"=>strtoupper($qe[1]),"collation"=>strtolower($qe[9]),);}if($U!="FUNCTION")return
  1402. array("fields"=>$q,"definition"=>$B[11]);return
  1403. array("fields"=>$q,"returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",);}function
  1404. routines(){return
  1405. get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
  1406. routine_languages(){return
  1407. array();}function
  1408. routine_id($C,$K){return
  1409. idf_escape($C);}function
  1410. last_id(){global$h;return$h->result("SELECT LAST_INSERT_ID()");}function
  1411. explain($h,$H){return$h->query("EXPLAIN ".(min_version(5.1)?"PARTITIONS ":"").$H);}function
  1412. found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
  1413. types(){return
  1414. array();}function
  1415. schemas(){return
  1416. array();}function
  1417. get_schema(){return"";}function
  1418. set_schema($gf){return
  1419. true;}function
  1420. create_sql($R,$Ea,$Jf){global$h;$J=$h->result("SHOW CREATE TABLE ".table($R),1);if(!$Ea)$J=preg_replace('~ AUTO_INCREMENT=\\d+~','',$J);return$J;}function
  1421. truncate_sql($R){return"TRUNCATE ".table($R);}function
  1422. use_sql($k){return"USE ".idf_escape($k);}function
  1423. trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
  1424. show_variables(){return
  1425. get_key_vals("SHOW VARIABLES");}function
  1426. process_list(){return
  1427. get_rows("SHOW FULL PROCESSLIST");}function
  1428. show_status(){return
  1429. get_key_vals("SHOW STATUS");}function
  1430. convert_field($p){if(preg_match("~binary~",$p["type"]))return"HEX(".idf_escape($p["field"]).")";if($p["type"]=="bit")return"BIN(".idf_escape($p["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$p["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($p["field"]).")";}function
  1431. unconvert_field($p,$J){if(preg_match("~binary~",$p["type"]))$J="UNHEX($J)";if($p["type"]=="bit")$J="CONV($J, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$p["type"]))$J=(min_version(8)?"ST_":"")."GeomFromText($J)";return$J;}function
  1432. support($gc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view"))."~",$gc);}function
  1433. kill_process($X){return
  1434. queries("KILL ".number($X));}function
  1435. connection_id(){return"SELECT CONNECTION_ID()";}function
  1436. max_connections(){global$h;return$h->result("SELECT @@max_connections");}$y="sql";$sg=array();$If=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$sg+=$X;$If[$z]=array_keys($X);}$zg=array("unsigned","zerofill","unsigned zerofill");$ge=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$_c=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");$Dc=array("avg","count","count distinct","group_concat","max","min","sum");$Jb=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",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_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"])."&":""):''));$ca="4.6.2";class
  1437. Adminer{var$operators=array("<=",">=");var$_values=array();function
  1438. name(){return"<a href='https://www.adminer.org/editor/'".target_blank()." id='h1'>".'Editor'."</a>";}function
  1439. credentials(){return
  1440. array(SERVER,$_GET["username"],get_password());}function
  1441. connectSsl(){}function
  1442. permanentLogin($nb=false){return
  1443. password_file($nb);}function
  1444. bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
  1445. serverName($O){}function
  1446. database(){global$h;if($h){$l=$this->databases(false);return(!$l?$h->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)"):$l[(information_schema($l[0])?1:0)]);}}function
  1447. schemas(){return
  1448. schemas();}function
  1449. databases($qc=true){return
  1450. get_databases($qc);}function
  1451. queryTimeout(){return
  1452. 5;}function
  1453. headers(){}function
  1454. csp(){return
  1455. csp();}function
  1456. head(){return
  1457. true;}function
  1458. css(){$J=array();$r="adminer.css";if(file_exists($r))$J[]=$r;return$J;}function
  1459. loginForm(){echo'<table cellspacing="0">
  1460. <tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off">
  1461. <tr><th>Password<td><input type="password" name="auth[password]">
  1462. </table>
  1463. ',script("focus(qs('#username'));"),"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
  1464. login($zd,$G){return
  1465. true;}function
  1466. tableName($Of){return
  1467. h($Of["Comment"]!=""?$Of["Comment"]:$Of["Name"]);}function
  1468. fieldName($p,$je=0){return
  1469. h(preg_replace('~\s+\[.*\]$~','',($p["comment"]!=""?$p["comment"]:$p["field"])));}function
  1470. selectLinks($Of,$P=""){$a=$Of["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function
  1471. foreignKeys($R){return
  1472. foreign_keys($R);}function
  1473. backwardKeys($R,$Nf){$J=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
  1474. FROM information_schema.KEY_COLUMN_USAGE
  1475. WHERE TABLE_SCHEMA = ".q($this->database())."
  1476. AND REFERENCED_TABLE_SCHEMA = ".q($this->database())."
  1477. AND REFERENCED_TABLE_NAME = ".q($R)."
  1478. ORDER BY ORDINAL_POSITION",null,"")as$K)$J[$K["TABLE_NAME"]]["keys"][$K["CONSTRAINT_NAME"]][$K["COLUMN_NAME"]]=$K["REFERENCED_COLUMN_NAME"];foreach($J
  1479. as$z=>$X){$C=$this->tableName(table_status($z,true));if($C!=""){$if=preg_quote($Nf);$N="(:|\\s*-)?\\s+";$J[$z]["name"]=(preg_match("(^$if$N(.+)|^(.+?)$N$if\$)iu",$C,$B)?$B[2].$B[3]:$C);}else
  1480. unset($J[$z]);}return$J;}function
  1481. backwardKeysPrint($Ia,$K){foreach($Ia
  1482. as$R=>$Ha){foreach($Ha["keys"]as$eb){$A=ME.'select='.urlencode($R);$t=0;foreach($eb
  1483. as$f=>$X)$A.=where_link($t++,$f,$K[$X]);echo"<a href='".h($A)."'>".h($Ha["name"])."</a>";$A=ME.'edit='.urlencode($R);foreach($eb
  1484. as$f=>$X)$A.="&set".urlencode("[".bracket_escape($f)."]")."=".urlencode($K[$X]);echo"<a href='".h($A)."' title='".'New item'."'>+</a> ";}}}function
  1485. selectQuery($H,$Ef,$ec=false){return"<!--\n".str_replace("--","--><!-- ",$H)."\n(".format_time($Ef).")\n-->\n";}function
  1486. rowDescription($R){foreach(fields($R)as$p){if(preg_match("~varchar|character varying~",$p["type"]))return
  1487. idf_escape($p["field"]);}return"";}function
  1488. rowDescriptions($L,$tc){$J=$L;foreach($L[0]as$z=>$X){if(list($R,$u,$C)=$this->_foreignColumn($tc,$z)){$Pc=array();foreach($L
  1489. as$K)$Pc[$K[$z]]=q($K[$z]);$zb=$this->_values[$R];if(!$zb)$zb=get_key_vals("SELECT $u, $C FROM ".table($R)." WHERE $u IN (".implode(", ",$Pc).")");foreach($L
  1490. as$Rd=>$K){if(isset($K[$z]))$J[$Rd][$z]=(string)$zb[$K[$z]];}}}return$J;}function
  1491. selectLink($X,$p){}function
  1492. selectVal($X,$A,$p,$le){$J=($X===null?"&nbsp;":$X);$A=h($A);if(preg_match('~blob|bytea~',$p["type"])&&!is_utf8($X)){$J=lang(array('%d byte','%d bytes'),strlen($le));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$le))$J="<img src='$A' alt='$J'>";}if(like_bool($p)&&$J!="&nbsp;")$J=(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?'yes':'no');if($A)$J="<a href='$A'".(is_url($A)?target_blank():"").">$J</a>";if(!$A&&!like_bool($p)&&preg_match(number_type(),$p["type"]))$J="<div class='number'>$J</div>";elseif(preg_match('~date~',$p["type"]))$J="<div class='datetime'>$J</div>";return$J;}function
  1493. editVal($X,$p){if(preg_match('~date|timestamp~',$p["type"])&&$X!==null)return
  1494. preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$X);return$X;}function
  1495. selectColumnsPrint($M,$g){}function
  1496. selectSearchPrint($Z,$g,$x){$Z=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$md=array();foreach($Z
  1497. as$z=>$X)$md[$X["col"]]=$z;$t=0;$q=fields($_GET["select"]);foreach($g
  1498. as$C=>$yb){$p=$q[$C];if(preg_match("~enum~",$p["type"])||like_bool($p)){$z=$md[$C];$t--;echo"<div>".h($yb)."<input type='hidden' name='where[$t][col]' value='".h($C)."'>:",(like_bool($p)?" <select name='where[$t][val]'>".optionlist(array(""=>"",'no','yes'),$Z[$z]["val"],true)."</select>":enum_input("checkbox"," name='where[$t][val][]'",$p,(array)$Z[$z]["val"],($p["null"]?0:null))),"</div>\n";unset($g[$C]);}elseif(is_array($D=$this->_foreignKeyOptions($_GET["select"],$C))){if($q[$C]["null"])$D[0]='('.'empty'.')';$z=$md[$C];$t--;echo"<div>".h($yb)."<input type='hidden' name='where[$t][col]' value='".h($C)."'><input type='hidden' name='where[$t][op]' value='='>: <select name='where[$t][val]'>".optionlist($D,$Z[$z]["val"],true)."</select></div>\n";unset($g[$C]);}}$t=0;foreach($Z
  1499. as$X){if(($X["col"]==""||$g[$X["col"]])&&"$X[col]$X[val]"!=""){echo"<div><select name='where[$t][col]'><option value=''>(".'anywhere'.")".optionlist($g,$X["col"],true)."</select>",html_select("where[$t][op]",array(-1=>"")+$this->operators,$X["op"]),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>".script("mixin(qsl('input'), {onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});","")."</div>\n";$t++;}}echo"<div><select name='where[$t][col]'><option value=''>(".'anywhere'.")".optionlist($g,null,true)."</select>",script("qsl('select').onchange = selectAddRow;",""),html_select("where[$t][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$t][val]'></div>",script("mixin(qsl('input'), {onchange: function () { this.parentNode.firstChild.onchange(); }, onsearch: selectSearchSearch});"),"</div></fieldset>\n";}function
  1500. selectOrderPrint($je,$g,$x){$ke=array();foreach($x
  1501. as$z=>$w){$je=array();foreach($w["columns"]as$X)$je[]=$g[$X];if(count(array_filter($je,'strlen'))>1&&$z!="PRIMARY")$ke[$z]=implode(", ",$je);}if($ke){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$ke,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function
  1502. selectLimitPrint($_){echo"<fieldset><legend>".'Limit'."</legend><div>";echo
  1503. html_select("limit",array("","50","100"),$_),"</div></fieldset>\n";}function
  1504. selectLengthPrint($Vf){}function
  1505. selectActionPrint($x){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>","</div></fieldset>\n";}function
  1506. selectCommandPrint(){return
  1507. true;}function
  1508. selectImportPrint(){return
  1509. true;}function
  1510. selectEmailPrint($Nb,$g){if($Nb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div>",script("qsl('div').onkeydown = partialArg(bodyKeydown, 'email');"),"<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p>".script("qsl('p').onkeydown = partialArg(bodyKeydown, 'email_append');","").html_select("email_addition",$g,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]'>".script("qsl('input').onchange = emailFileChange;"),"<p>".(count($Nb)==1?'<input type="hidden" name="email_field" value="'.h(key($Nb)).'">':html_select("email_field",$Nb)),"<input type='submit' name='email' value='".'Send'."'>".confirm(),"</div>\n","</div></fieldset>\n";}}function
  1511. selectColumnsProcess($g,$x){return
  1512. array(array(),array());}function
  1513. selectSearchProcess($q,$x){$J=array();foreach((array)$_GET["where"]as$z=>$Z){$bb=$Z["col"];$ee=$Z["op"];$X=$Z["val"];if(($z<0?"":$bb).$X!=""){$hb=array();foreach(($bb!=""?array($bb=>$q[$bb]):$q)as$C=>$p){if($bb!=""||is_numeric($X)||!preg_match(number_type(),$p["type"])){$C=idf_escape($C);if($bb!=""&&$p["type"]=="enum")$hb[]=(in_array(0,$X)?"$C IS NULL OR ":"")."$C IN (".implode(", ",array_map('intval',$X)).")";else{$Wf=preg_match('~char|text|enum|set~',$p["type"]);$Y=$this->processInput($p,(!$ee&&$Wf&&preg_match('~^[^%]+$~',$X)?"%$X%":$X));$hb[]=$C.($Y=="NULL"?" IS".($ee==">="?" NOT":"")." $Y":(in_array($ee,$this->operators)||$ee=="="?" $ee $Y":($Wf?" LIKE $Y":" IN (".str_replace(",","', '",$Y).")")));if($z<0&&$X=="0")$hb[]="$C IS NULL";}}}$J[]=($hb?"(".implode(" OR ",$hb).")":"1 = 0");}}return$J;}function
  1514. selectOrderProcess($q,$x){$Sc=$_GET["index_order"];if($Sc!="")unset($_GET["order"][1]);if($_GET["order"])return
  1515. array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($Sc!=""?array($x[$Sc]):$x)as$w){if($Sc!=""||$w["type"]=="INDEX"){$Fc=array_filter($w["descs"]);$yb=false;foreach($w["columns"]as$X){if(preg_match('~date|timestamp~',$q[$X]["type"])){$yb=true;break;}}$J=array();foreach($w["columns"]as$z=>$X)$J[]=idf_escape($X).(($Fc?$w["descs"][$z]:$yb)?" DESC":"");return$J;}}return
  1516. array();}function
  1517. selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
  1518. selectLengthProcess(){return"100";}function
  1519. selectEmailProcess($Z,$tc){if($_POST["email_append"])return
  1520. true;if($_POST["email"]){$nf=0;if($_POST["all"]||$_POST["check"]){$p=idf_escape($_POST["email_field"]);$Kf=$_POST["email_subject"];$Kd=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Kf.$Kd",$Ed);$L=get_rows("SELECT DISTINCT $p".($Ed[1]?", ".implode(", ",array_map('idf_escape',array_unique($Ed[1]))):"")." FROM ".table($_GET["select"])." WHERE $p IS NOT NULL AND $p != ''".($Z?" AND ".implode(" AND ",$Z):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$q=fields($_GET["select"]);foreach($this->rowDescriptions($L,$tc)as$K){$We=array('{\\'=>'{');foreach($Ed[1]as$X)$We['{$'."$X}"]=$this->editVal($K[$X],$q[$X]);$Mb=$K[$_POST["email_field"]];if(is_mail($Mb)&&send_mail($Mb,strtr($Kf,$We),strtr($Kd,$We),$_POST["email_from"],$_FILES["email_files"]))$nf++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$nf));}return
  1521. false;}function
  1522. selectQueryBuild($M,$Z,$Ac,$je,$_,$E){return"";}function
  1523. messageQuery($H,$Xf,$ec=false){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$H)."\n".($Xf?"($Xf)\n":"")."-->";}function
  1524. editFunctions($p){$J=array();if($p["null"]&&preg_match('~blob~',$p["type"]))$J["NULL"]='empty';$J[""]=($p["null"]||$p["auto_increment"]||like_bool($p)?"":"*");if(preg_match('~date|time~',$p["type"]))$J["now"]='now';if(preg_match('~_(md5|sha1)$~i',$p["field"],$B))$J[]=strtolower($B[1]);return$J;}function
  1525. editInput($R,$p,$Ca,$Y){if($p["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$Ca value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$Ca,$p,($Y||isset($_GET["select"])?$Y:0),($p["null"]?"":null));$D=$this->_foreignKeyOptions($R,$p["field"],$Y);if($D!==null)return(is_array($D)?"<select$Ca>".optionlist($D,$Y,true)."</select>":"<input value='".h($Y)."'$Ca class='hidden'>"."<input value='".h($D)."' class='jsonly'>"."<div></div>".script("qsl('input').oninput = partial(whisper, '".ME."script=complete&source=".urlencode($R)."&field=".urlencode($p["field"])."&value=');
  1526. qsl('div').onclick = whisperClick;",""));if(like_bool($p))return'<input type="checkbox" value="'.h($Y?$Y:1).'"'.($Y?' checked':'')."$Ca>";$Kc="";if(preg_match('~time~',$p["type"]))$Kc='HH:MM:SS';if(preg_match('~date|timestamp~',$p["type"]))$Kc='[yyyy]-mm-dd'.($Kc?" [$Kc]":"");if($Kc)return"<input value='".h($Y)."'$Ca> ($Kc)";if(preg_match('~_(md5|sha1)$~i',$p["field"]))return"<input type='password' value='".h($Y)."'$Ca>";return'';}function
  1527. editHint($R,$p,$Y){return(preg_match('~\s+(\[.*\])$~',($p["comment"]!=""?$p["comment"]:$p["field"]),$B)?h(" $B[1]"):'');}function
  1528. processInput($p,$Y,$s=""){if($s=="now")return"$s()";$J=$Y;if(preg_match('~date|timestamp~',$p["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$Y,$B))$J=($B["p1"]!=""?$B["p1"]:($B["p2"]!=""?($B["p2"]<70?20:19).$B["p2"]:gmdate("Y")))."-$B[p3]$B[p4]-$B[p5]$B[p6]".end($B);$J=($p["type"]=="bit"&&preg_match('~^[0-9]+$~',$Y)?$J:q($J));if($Y==""&&like_bool($p))$J="0";elseif($Y==""&&($p["null"]||!preg_match('~char|text~',$p["type"])))$J="NULL";elseif(preg_match('~^(md5|sha1)$~',$s))$J="$s($J)";return
  1529. unconvert_field($p,$J);}function
  1530. dumpOutput(){return
  1531. array();}function
  1532. dumpFormat(){return
  1533. array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
  1534. dumpDatabase($m){}function
  1535. dumpTable(){echo"\xef\xbb\xbf";}function
  1536. dumpData($R,$Jf,$H){global$h;$I=$h->query($H,1);if($I){while($K=$I->fetch_assoc()){if($Jf=="table"){dump_csv(array_keys($K));$Jf="INSERT";}dump_csv($K);}}}function
  1537. dumpFilename($Oc){return
  1538. friendly_url($Oc);}function
  1539. dumpHeaders($Oc,$Pd=false){$ac="csv";header("Content-Type: text/csv; charset=utf-8");return$ac;}function
  1540. importServerPath(){}function
  1541. homepage(){return
  1542. true;}function
  1543. navigation($Od){global$ca;echo'<h1>
  1544. ',$this->name(),' <span class="version">',$ca,'</span>
  1545. <a href="https://www.adminer.org/editor/#download"',target_blank(),' id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
  1546. </h1>
  1547. ';if($Od=="auth"){$mc=true;foreach((array)$_SESSION["pwds"]as$Hg=>$sf){foreach($sf[""]as$V=>$G){if($G!==null){if($mc){echo"<p id='logins'>",script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");$mc=false;}echo"<a href='".h(auth_url($Hg,"",$V))."'>".($V!=""?h($V):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Od);if($Od!="db"&&$Od!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
  1548. databasesPrint($Od){}function
  1549. tablesPrint($T){echo"<ul id='tables'>",script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
  1550. as$K){echo'<li>';$C=$this->tableName($K);if(isset($K["Engine"])&&$C!="")echo"<a href='".h(ME).'select='.urlencode($K["Name"])."'".bold($_GET["select"]==$K["Name"]||$_GET["edit"]==$K["Name"],"select")." title='".'Select data'."'>$C</a>\n";}echo"</ul>\n";}function
  1551. _foreignColumn($tc,$f){foreach((array)$tc[$f]as$sc){if(count($sc["source"])==1){$C=$this->rowDescription($sc["table"]);if($C!=""){$u=idf_escape($sc["target"][0]);return
  1552. array($sc["table"],$u,$C);}}}}function
  1553. _foreignKeyOptions($R,$f,$Y=null){global$h;if(list($Sf,$u,$C)=$this->_foreignColumn(column_foreign_keys($R),$f)){$J=&$this->_values[$Sf];if($J===null){$S=table_status($Sf);$J=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $u, $C FROM ".table($Sf)." ORDER BY 2"));}if(!$J&&$Y!==null)return$h->result("SELECT $C FROM ".table($Sf)." WHERE $u = ".q($Y));return$J;}}}$b=(function_exists('adminer_object')?adminer_object():new
  1554. Adminer);function
  1555. page_header($ag,$o="",$Qa=array(),$bg=""){global$ba,$ca,$b,$Eb,$y;page_headers();if(is_ajax()&&$o){page_messages($o);exit;}$cg=$ag.($bg!=""?": $bg":"");$dg=strip_tags($cg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
  1556. <html lang="en" dir="ltr">
  1557. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  1558. <meta name="robots" content="noindex">
  1559. <title>',$dg,'</title>
  1560. <link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=4.6.2"),'">
  1561. ',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.6.2");if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.6.2"),'">
  1562. <link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.6.2"),'">
  1563. ';foreach($b->css()as$qb){echo'<link rel="stylesheet" type="text/css" href="',h($qb),'">
  1564. ';}}echo'
  1565. <body class="ltr nojs">
  1566. ';$r=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($r)&&filemtime($r)+86400>time()){$Ig=unserialize(file_get_contents($r));$Ie="-----BEGIN PUBLIC KEY-----
  1567. MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
  1568. RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
  1569. DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
  1570. h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
  1571. jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
  1572. nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
  1573. fQIDAQAB
  1574. -----END PUBLIC KEY-----
  1575. ";if(openssl_verify($Ig["version"],base64_decode($Ig["signature"]),$Ie)==1)$_COOKIE["adminer_version"]=$Ig["version"];}echo'<script',nonce(),'>
  1576. mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ca', '".js_escape(ME)."', '".get_token()."')");?>});
  1577. document.body.className = document.body.className.replace(/ nojs/, ' js');
  1578. var offlineMessage = '<?php echo
  1579. js_escape('You are offline.'),'\';
  1580. var thousandsSeparator = \'',js_escape(','),'\';
  1581. </script>
  1582.  
  1583. <div id="help" class="jush-',$y,' jsonly hidden"></div>
  1584. ',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
  1585. <div id="content">
  1586. ';if($Qa!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> &raquo; ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=$b->serverName(SERVER);$O=($O!=""?$O:'Server');if($Qa===false)echo"$O\n";else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Qa)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Qa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Qa
  1587. as$z=>$X){$yb=(is_array($X)?$X[1]:h($X));if($yb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$yb</a> &raquo; ";}}echo"$ag\n";}}echo"<h2>$cg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($o);$l=&get_session("dbs");if(DB!=""&&$l&&!in_array(DB,$l,true))$l=null;stop_session();define("PAGE_HEADER",1);}function
  1588. 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){$Ic=array();foreach($pb
  1589. as$z=>$X)$Ic[]="$z $X";header("Content-Security-Policy: ".implode("; ",$Ic));}$b->headers();}function
  1590. csp(){return
  1591. 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
  1592. get_nonce(){static$Vd;if(!$Vd)$Vd=base64_encode(rand_string());return$Vd;}function
  1593. page_messages($o){$Ag=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ld=$_SESSION["messages"][$Ag];if($Ld){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Ld)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Ag]);}if($o)echo"<div class='error'>$o</div>\n";}function
  1594. page_footer($Od=""){global$b,$gg;echo'</div>
  1595.  
  1596. ';if($Od!="auth"){echo'<form action="" method="post">
  1597. <p class="logout">
  1598. <input type="submit" name="logout" value="Logout" id="logout">
  1599. <input type="hidden" name="token" value="',$gg,'">
  1600. </p>
  1601. </form>
  1602. ';}echo'<div id="menu">
  1603. ';$b->navigation($Od);echo'</div>
  1604. ',script("setupSubmitHighlight(document);");}function
  1605. int32($Rd){while($Rd>=2147483648)$Rd-=4294967296;while($Rd<=-2147483649)$Rd+=4294967296;return(int)$Rd;}function
  1606. long2str($W,$Mg){$ff='';foreach($W
  1607. as$X)$ff.=pack('V',$X);if($Mg)return
  1608. substr($ff,0,end($W));return$ff;}function
  1609. str2long($ff,$Mg){$W=array_values(unpack('V*',str_pad($ff,4*ceil(strlen($ff)/4),"\0")));if($Mg)$W[]=strlen($ff);return$W;}function
  1610. xxtea_mx($Xg,$Wg,$Mf,$id){return
  1611. int32((($Xg>>5&0x7FFFFFF)^$Wg<<2)+(($Wg>>3&0x1FFFFFFF)^$Xg<<4))^int32(($Mf^$Wg)+($id^$Xg));}function
  1612. encrypt_string($Hf,$z){if($Hf=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Hf,true);$Rd=count($W)-1;$Xg=$W[$Rd];$Wg=$W[0];$Je=floor(6+52/($Rd+1));$Mf=0;while($Je-->0){$Mf=int32($Mf+0x9E3779B9);$Ib=$Mf>>2&3;for($oe=0;$oe<$Rd;$oe++){$Wg=$W[$oe+1];$Qd=xxtea_mx($Xg,$Wg,$Mf,$z[$oe&3^$Ib]);$Xg=int32($W[$oe]+$Qd);$W[$oe]=$Xg;}$Wg=$W[0];$Qd=xxtea_mx($Xg,$Wg,$Mf,$z[$oe&3^$Ib]);$Xg=int32($W[$Rd]+$Qd);$W[$Rd]=$Xg;}return
  1613. long2str($W,false);}function
  1614. decrypt_string($Hf,$z){if($Hf=="")return"";if(!$z)return
  1615. false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Hf,false);$Rd=count($W)-1;$Xg=$W[$Rd];$Wg=$W[0];$Je=floor(6+52/($Rd+1));$Mf=int32($Je*0x9E3779B9);while($Mf){$Ib=$Mf>>2&3;for($oe=$Rd;$oe>0;$oe--){$Xg=$W[$oe-1];$Qd=xxtea_mx($Xg,$Wg,$Mf,$z[$oe&3^$Ib]);$Wg=int32($W[$oe]-$Qd);$W[$oe]=$Wg;}$Xg=$W[$Rd];$Qd=xxtea_mx($Xg,$Wg,$Mf,$z[$oe&3^$Ib]);$Wg=int32($W[0]-$Qd);$W[0]=$Wg;$Mf=int32($Mf-0x9E3779B9);}return
  1616. long2str($W,true);}$h='';$Hc=$_SESSION["token"];if(!$Hc)$_SESSION["token"]=rand(1,1e6);$gg=get_token();$xe=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$xe[$z]=$X;}}function
  1617. add_invalid_login(){global$b;$yc=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$yc)return;$ed=unserialize(stream_get_contents($yc));$Xf=time();if($ed){foreach($ed
  1618. as$fd=>$X){if($X[0]<$Xf)unset($ed[$fd]);}}$dd=&$ed[$b->bruteForceKey()];if(!$dd)$dd=array($Xf+30*60,0);$dd[1]++;file_write_unlock($yc,serialize($ed));}function
  1619. check_invalid_login(){global$b;$ed=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$dd=$ed[$b->bruteForceKey()];$Ud=($dd[1]>29?$dd[0]-time():0);if($Ud>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Ud/60)));}$Da=$_POST["auth"];if($Da){session_regenerate_id();$Hg=$Da["driver"];$O=$Da["server"];$V=$Da["username"];$G=(string)$Da["password"];$m=$Da["db"];set_password($Hg,$O,$V,$G);$_SESSION["db"][$Hg][$O][$V][$m]=true;if($Da["permanent"]){$z=base64_encode($Hg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($m);$Fe=$b->permanentLogin(true);$xe[$z]="$z:".base64_encode($Fe?encrypt_string($G,$Fe):"");cookie("adminer_permanent",implode(" ",$xe));}if(count($_POST)==1||DRIVER!=$Hg||SERVER!=$O||$_GET["username"]!==$V||DB!=$m)redirect(auth_url($Hg,$O,$V,$m));}elseif($_POST["logout"]){if($Hc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.sprintf('Thanks for using Adminer, consider <a href="%s">donating</a>.','https://sourceforge.net/donate/index.php?group_id=264133'));}}elseif($xe&&!$_SESSION["pwds"]){session_regenerate_id();$Fe=$b->permanentLogin();foreach($xe
  1620. as$z=>$X){list(,$Ya)=explode(":",$X);list($Hg,$O,$V,$m)=array_map('base64_decode',explode("-",$z));set_password($Hg,$O,$V,decrypt_string(base64_decode($Ya),$Fe));$_SESSION["db"][$Hg][$O][$V][$m]=true;}}function
  1621. unset_permanent(){global$xe;foreach($xe
  1622. as$z=>$X){list($Hg,$O,$V,$m)=array_map('base64_decode',explode("-",$z));if($Hg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$m==DB)unset($xe[$z]);}cookie("adminer_permanent",implode(" ",$xe));}function
  1623. auth_error($o){global$b,$Hc;$tf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$tf]||$_GET[$tf])&&!$Hc)$o='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$o.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$tf]&&$_GET[$tf]&&ini_bool("session.use_only_cookies"))$o='Session support must be enabled.';$F=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$F["lifetime"]);page_header('Login',$o,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'The action will be performed after successful login with the same credentials.'."\n";echo"</div>\n";$b->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ae)),false);page_footer("auth");exit;}list($Mc,$ze)=explode(":",SERVER,2);if(is_numeric($ze)&&$ze<1024)auth_error('Connecting to privileged ports is not allowed.');check_invalid_login();$h=connect();$n=new
  1624. Min_Driver($h);}$zd=null;if(!is_object($h)||($zd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($h)?h($h):(is_string($zd)?$zd:'Invalid credentials.')));if($Da&&$_POST["token"])$_POST["token"]=$gg;$o='';if($_POST){if(!verify_token()){$Zc="max_input_vars";$Id=ini_get($Zc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Id||$X<$Id)){$Zc=$z;$Id=$X;}}}$o=(!$_POST["token"]&&$Id?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Zc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$o=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$o.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
  1625. email_header($Ic){return"=?UTF-8?B?".base64_encode($Ic)."?=";}function
  1626. send_mail($Mb,$Kf,$Kd,$zc="",$kc=array()){$Sb=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$Kd=str_replace("\n",$Sb,wordwrap(str_replace("\r","","$Kd\n")));$Pa=uniqid("boundary");$Aa="";foreach((array)$kc["error"]as$z=>$X){if(!$X)$Aa.="--$Pa$Sb"."Content-Type: ".str_replace("\n","",$kc["type"][$z]).$Sb."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$kc["name"][$z])."\"$Sb"."Content-Transfer-Encoding: base64$Sb$Sb".chunk_split(base64_encode(file_get_contents($kc["tmp_name"][$z])),76,$Sb).$Sb;}$Ka="";$Jc="Content-Type: text/plain; charset=utf-8$Sb"."Content-Transfer-Encoding: 8bit";if($Aa){$Aa.="--$Pa--$Sb";$Ka="--$Pa$Sb$Jc$Sb$Sb";$Jc="Content-Type: multipart/mixed; boundary=\"$Pa\"";}$Jc.=$Sb."MIME-Version: 1.0$Sb"."X-Mailer: Adminer Editor".($zc?$Sb."From: ".str_replace("\n","",$zc):"");return
  1627. mail($Mb,email_header($Kf),$Ka.$Kd.$Aa,$Jc);}function
  1628. like_bool($p){return
  1629. preg_match("~bool|(tinyint|bit)\\(1\\)~",$p["full_type"]);}$h->select_db($b->database());$be="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$Eb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$q=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=$n->select($a,$M,array(where($_GET,$q)),$M);$K=($I?$I->fetch_row():array());echo$n->value($K[0],$q[$_GET["field"]]);exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$q=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$q):""):where($_GET,$q));$_g=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($q
  1630. as$C=>$p){if(!isset($p["privileges"][$_g?"update":"insert"])||$b->fieldName($p)=="")unset($q[$C]);}if($_POST&&!$o&&!isset($_GET["select"])){$yd=$_POST["referer"];if($_POST["insert"])$yd=($_g?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$yd))$yd=ME."select=".urlencode($a);$x=indexes($a);$vg=unique_array($_GET["where"],$x);$Me="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($yd,'Item has been deleted.',$n->delete($a,$Me,!$vg));else{$P=array();foreach($q
  1631. as$C=>$p){$X=process_input($p);if($X!==false&&$X!==null)$P[idf_escape($C)]=$X;}if($_g){if(!$P)redirect($yd);queries_redirect($yd,'Item has been updated.',$n->update($a,$P,$Me,!$vg));if(is_ajax()){page_headers();page_messages($o);exit;}}else{$I=$n->insert($a,$P);$sd=($I?last_id():0);queries_redirect($yd,sprintf('Item%s has been inserted.',($sd?" $sd":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($q
  1632. as$C=>$p){if(isset($p["privileges"]["select"])){$za=convert_field($p);if($_POST["clone"]&&$p["auto_increment"])$za="''";if($y=="sql"&&preg_match("~enum|set~",$p["type"]))$za="1*".idf_escape($C);$M[]=($za?"$za AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=$n->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$o=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$q){if(!$Z){$I=$n->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array($n->primary=>"");}if($K){foreach($K
  1633. as$z=>$X){if(!$Z)$K[$z]=null;$q[$z]=array("field"=>$z,"null"=>($z!=$n->primary),"auto_increment"=>($z==$n->primary));}}}edit_form($a,$q,$K,$_g);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$q=fields($a);$vc=column_foreign_keys($a);$ae=$S["Oid"];parse_str($_COOKIE["adminer_import"],$sa);$df=array();$g=array();$Vf=null;foreach($q
  1634. as$z=>$p){$C=$b->fieldName($p);if(isset($p["privileges"]["select"])&&$C!=""){$g[$z]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($p))$Vf=$b->selectLengthProcess();}$df+=$p["privileges"];}list($M,$Ac)=$b->selectColumnsProcess($g,$x);$gd=count($Ac)<count($M);$Z=$b->selectSearchProcess($q,$x);$je=$b->selectOrderProcess($q,$x);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$wg=>$K){$za=convert_field($q[key($K)]);$M=array($za?$za:idf_escape(key($K)));$Z[]=where_check($wg,$q);$J=$n->select($a,$M,$Z,$M);if($J)echo
  1635. reset($J->fetch_row());}exit;}$Ce=$yg=null;foreach($x
  1636. as$w){if($w["type"]=="PRIMARY"){$Ce=array_flip($w["columns"]);$yg=($M?$Ce:array());foreach($yg
  1637. as$z=>$X){if(in_array(idf_escape($z),$M))unset($yg[$z]);}break;}}if($ae&&!$Ce){$Ce=$yg=array($ae=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($ae));}if($_POST&&!$o){$Rg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Wa=array();foreach($_POST["check"]as$Ta)$Wa[]=where_check($Ta,$q);$Rg[]="((".implode(") OR (",$Wa)."))";}$Rg=($Rg?"\nWHERE ".implode(" AND ",$Rg):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$zc=($M?implode(", ",$M):"*").convert_fields($g,$q,$M)."\nFROM ".table($a);$Cc=($Ac&&$gd?"\nGROUP BY ".implode(", ",$Ac):"").($je?"\nORDER BY ".implode(", ",$je):"");if(!is_array($_POST["check"])||$Ce)$H="SELECT $zc$Rg$Cc";else{$ug=array();foreach($_POST["check"]as$X)$ug[]="(SELECT".limit($zc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$q).$Cc,1).")";$H=implode(" UNION ALL ",$ug);}$b->dumpData($a,"table",$H);exit;}if(!$b->selectEmailProcess($Z,$vc)){if($_POST["save"]||$_POST["delete"]){$I=true;$ta=0;$P=array();if(!$_POST["delete"]){foreach($g
  1638. as$C=>$X){$X=process_input($q[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$P){if($_POST["clone"])$H="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Ce&&is_array($_POST["check"]))||$gd){$I=($_POST["delete"]?$n->delete($a,$Rg):($_POST["clone"]?queries("INSERT $H$Rg"):$n->update($a,$P,$Rg)));$ta=$h->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Ng="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$q);$I=($_POST["delete"]?$n->delete($a,$Ng,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Ng)):$n->update($a,$P,$Ng,1)));if(!$I)break;$ta+=$h->affected_rows;}}}$Kd=lang(array('%d item has been affected.','%d items have been affected.'),$ta);if($_POST["clone"]&&$I&&$ta==1){$sd=last_id();if($sd)$Kd=sprintf('Item%s has been inserted.'," $sd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Kd,$I);if(!$_POST["delete"]){edit_form($a,$q,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$o='Ctrl+click on a value to modify it.';else{$I=true;$ta=0;foreach($_POST["val"]as$wg=>$K){$P=array();foreach($K
  1639. as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$q[$z]["type"])||$X!=""?$b->processInput($q[$z],$X):"NULL");}$I=$n->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($wg,$q),!$gd&&!$Ce," ");if(!$I)break;$ta+=$h->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ta),$I);}}elseif(!is_string($jc=get_file("csv_file",true)))$o=upload_error($jc);elseif(!preg_match('~~u',$jc))$o='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($sa["output"])."&format=".urlencode($_POST["separator"]));$I=true;$eb=array_keys($q);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$jc,$Ed);$ta=count($Ed[0]);$n->begin();$N=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Ed[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$N]*)$N~",$X.$N,$Fd);if(!$z&&!array_diff($Fd[1],$eb)){$eb=$Fd[1];$ta--;}else{$P=array();foreach($Fd[1]as$t=>$bb)$P[idf_escape($eb[$t])]=($bb==""&&$q[$eb[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$bb))));$L[]=$P;}}$I=(!$L||$n->insertUpdate($a,$L,$Ce));if($I)$I=$n->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ta),$I);$n->rollback();}}}$Pf=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
  1640. page_header('Select'.": $Pf",$o);$P=null;if(isset($df["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if($vc[$X["col"]]&&count($vc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$P);if(!$g&&support("table"))echo"<p class='error'>".'Unable to select the table'.($q?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($M,$g);$b->selectSearchPrint($Z,$g,$x);$b->selectOrderPrint($je,$g,$x);$b->selectLimitPrint($_);$b->selectLengthPrint($Vf);$b->selectActionPrint($x);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$xc=$h->result(count_rows($a,$Z,$gd,$Ac));$E=floor(max(0,$xc-1)/$_);}$kf=$M;$Bc=$Ac;if(!$kf){$kf[]="*";$lb=convert_fields($g,$q,$M);if($lb)$kf[]=substr($lb,2);}foreach($M
  1641. as$z=>$X){$p=$q[idf_unescape($X)];if($p&&($za=convert_field($p)))$kf[$z]="$za AS $X";}if(!$gd&&$yg){foreach($yg
  1642. as$z=>$X){$kf[]=idf_escape($z);if($Bc)$Bc[]=idf_escape($z);}}$I=$n->select($a,$kf,$Z,$Bc,$je,$_,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$E)$I->seek($_*$E);$Ob=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&$y=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$_!=""&&$Ac&&$gd&&$y=="sql")$xc=$h->result(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ja=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$Ac&&$M?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Sd=array();$_c=array();reset($M);$Oe=1;foreach($L[0]as$z=>$X){if(!isset($yg[$z])){$X=$_GET["columns"][key($M)];$p=$q[$M?($X?$X["col"]:current($M)):$z];$C=($p?$b->fieldName($p,$Oe):($X["fun"]?"*":$z));if($C!=""){$Oe++;$Sd[$z]=$C;$f=idf_escape($z);$Nc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$yb="&desc%5B0%5D=1";echo"<th>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'<a href="'.h($Nc.($je[0]==$f||$je[0]==$z||(!$je&&$gd&&$Ac[0]==$f)?$yb:'')).'">';echo
  1643. apply_sql_function($X["fun"],$C)."</a>";echo"<span class='column hidden'>","<a href='".h($Nc.$yb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]){echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($z)."');");}echo"</span>";}$_c[$z]=$X["fun"];next($M);}}$vd=array();if($_GET["modify"]){foreach($L
  1644. as$K){foreach($K
  1645. as$y=>$X)$Wc[$y]=max($Wc[$y],min(40,strlen(utf8_decode($X))));}}echo($ya?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($z%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($L,$n)as$D=>$K){$Kf=unique_array($L[$D],$v);if(!$Kf){$Kf=array();foreach($L[$D]as$y=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$y))$Kf[$y]=$X;}}$Lf="";foreach($Kf
  1646. as$y=>$X){if(($x=="sql"||$x=="pgsql")&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".($x=='sql'&&preg_match("~^utf8_~",$l[$y]["collation"])?$y:"CONVERT($y USING ".charset($e).")").")";$X=md5($X);}$Lf.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X):"null%5B%5D=".urlencode($y));}echo"<tr".odd().">".(!$r&&$M?"":"<td>".checkbox("check[]",substr($Lf,1),in_array(substr($Lf,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Hc||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Lf)."'>".'edit'."</a>"));foreach($K
  1647. as$y=>$X){if(isset($rd[$y])){$k=$l[$y];if($X!=""&&(!isset($Gb[$y])||$Gb[$y]!=""))$Gb[$y]=(is_mail($X)?$rd[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$k["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$Lf;if(!$_&&$X!==null){foreach((array)$n[$y]as$m){if(count($n[$y])==1||end($m["source"])==$y){$_="";foreach($m["source"]as$s=>$Se)$_.=where_link($s,$m["target"][$s],$L[$D][$Se]);$_=($m["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($m["db"]),ME):ME).'select='.urlencode($m["table"]).$_;if(count($m["source"])==1)break;}}}if($y=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Kf))$_.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Kf
  1648. as$Kc=>$W)$_.=where_link($s++,$Kc,$W);}$X=select_value($X,$_,$k,$qf);$t=h("val[$Lf][".bracket_escape($y)."]");$Y=$_POST["val"][$Lf][bracket_escape($y)];$Bb=!is_array($K[$y])&&is_utf8($X)&&$L[$D][$y]==$K[$y]&&!$q[$y];$pf=preg_match('~text|lob~',$k["type"]);if(($_GET["modify"]&&$Bb)||$Y!==null){$oc=h($Y!==null?$Y:$K[$y]);echo"<td>".($pf?"<textarea name='$t' cols='30' rows='".(substr_count($K[$y],"\n")+1)."'>$oc</textarea>":"<input name='$t' value='$oc' size='$Wc[$y]'>");}else{if($_GET['db']=='shopini'&&$_GET['select']=='shopusers'&&$y=='password')$X=base64_decode($X);$ad=strpos($X,"<i>...</i>");echo"<td id='$t' onclick=\"selectClick(this, event, ".($ad?2:($pf?1:0)).($Bb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($ya)echo"<td>";$b->backwardKeysPrint($ya,$L[$D]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($L||$F)&&!is_ajax()){$Pb=true;if($_GET["page"]!="last"){if(!+$z)$jc=count($L);elseif($x!="sql"||!$Hc){$jc=($Hc?false:found_rows($R,$Z));if($jc<max(1e4,2*($F+1)*$z))$jc=reset(slow_query(count_rows($a,$Z,$Hc,$r)));else$Pb=false;}}if(+$z&&($jc===false||$jc>$z||$F)){echo"<p class='pages'>";$ed=($jc===false?$F+(count($L)>=$z?2:1):floor(($jc-1)/$z));if($x!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($s=max(1,$F-4);$s<min($ed,$F+5);$s++)echo
  1649. pagination($s,$F);if($ed>0){echo($F+5<$ed?" ...":""),($Pb&&$jc!==false?pagination($ed,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ed'>".'last'."</a>");}echo(($jc===false?count($L)+1:$jc-$F*$z)>$z?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$z).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($ed>$F?pagination($F+1,$F).($ed>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($jc!==false?"(".($Pb?"":"~ ").lang(array('%d row','%d rows'),$jc).") ":"");$rb=($Pb?"":"~ ").$jc;echo
  1650. checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$rb' : checked); selectCount('selected2', this.checked || !checked ? '$rb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
  1651. <input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
  1652. </div></fieldset>
  1653. <fieldset><legend>Selected <span id="selected"></span></legend><div>
  1654. <input type="submit" name="edit" value="Edit">
  1655. <input type="submit" name="clone" value="Clone">
  1656. <input type="submit" name="delete" value="Delete">',confirm(),'</div></fieldset>
  1657. ';}$wc=$b->dumpFormat();foreach((array)$_GET["columns"]as$f){if($f["fun"]){unset($wc['sql']);break;}}if($wc){print_fieldset("export",'Export'." <span id='selected2'></span>");$ne=$b->dumpOutput();echo($ne?html_select("output",$ne,$sa["output"])." ":""),html_select("format",$wc,$sa["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Ob,'strlen'),$g);}echo"</div></div>\n";if($b->selectImportPrint()){echo"<div>","<a href='#import'>".'Import'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import' class='hidden'>: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$sa["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</span>","</div>";}echo"<input type='hidden' name='token' value='$gg'>\n","</form>\n",(!$Ac&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$h->query("KILL ".number($_POST["kill"]));elseif(list($R,$u,$C)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$_=11;$I=$h->query("SELECT $u, $C FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$u = $_GET[value] OR ":"")."$C LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $_");for($t=1;($K=$I->fetch_row())&&$t<$_;$t++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($u))."]")."=".urlencode($K[0]))."'>".h($K[1])."</a><br>\n";if($K)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^tables\[/);",""),'<th>'.'Table','<td>'.'Rows',"</thead>\n";foreach(table_status()as$R=>$K){$C=$b->tableName($K);if(isset($K["Engine"])&&$C!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true)),"<th><a href='".h(ME).'select='.urlencode($R)."'>$C</a>";$X=format_number($K["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($K["Engine"]=="InnoDB"&&$X?"~ $X":$X)."</a>";}}echo"</table>\n","</form>\n",script("tableCheck();");}}page_footer();
Add Comment
Please, Sign In to add comment