﻿function js_beautify(K,y,x,q){var c,e,d,b,i,r,j,C,p,H,B,D,a,t,v,l,u,w,o,s;function G(){while(e.length&&(e[e.length-1]===" "||e[e.length-1]===p))e.pop()}function g(a){a=typeof a==="undefined"?true:a;G();if(!e.length)return;if(e[e.length-1]!=="\n"||!a)e.push("\n");for(var b=0;b<q;b++)e.push(p)}function h(){var a=e.length?e[e.length-1]:" ";if(a!==" "&&a!=="\n"&&a!==p)e.push(" ")}function f(){e.push(d)}function I(){q++}function A(){if(q)q--}function L(){if(e.length&&e[e.length-1]===p)e.pop()}function z(a){C.push(j);j=a}function F(){w=j==="DO_BLOCK";j=C.pop()}function k(c,b){for(var a=0;a<b.length;a++)if(b[a]===c)return true;return false}function E(){var h=0,d="";do{if(a>=c.length)return ["","TK_EOF"];d=c.charAt(a);a+=1;if(d==="\n")h+=1}while(k(d,H));if(h>1)for(var l=0;l<2;l++)g(l===0);var m=h===1;if(k(d,B)){if(a<c.length)while(k(c.charAt(a),B)){d+=c.charAt(a);a+=1;if(a===c.length)break}if(a!==c.length&&d.match(/^[0-9]+[Ee]$/)&&c.charAt(a)==="-"){a+=1;var n=E(a);d+="-"+n[0];return [d,"TK_WORD"]}if(d==="in")return [d,"TK_OPERATOR"];return [d,"TK_WORD"]}if(d==="("||d==="[")return [d,"TK_START_EXPR"];if(d===")"||d==="]")return [d,"TK_END_EXPR"];if(d==="{")return [d,"TK_START_BLOCK"];if(d==="}")return [d,"TK_END_BLOCK"];if(d===";")return [d,"TK_END_COMMAND"];if(d==="/"){var e="";if(c.charAt(a)==="*"){a+=1;if(a<c.length)while(!(c.charAt(a)==="*"&&c.charAt(a+1)&&c.charAt(a+1)==="/")&&a<c.length){e+=c.charAt(a);a+=1;if(a>=c.length)break}a+=2;return ["/*"+e+"*/","TK_BLOCK_COMMENT"]}if(c.charAt(a)==="/"){e=d;while(c.charAt(a)!=="\r"&&c.charAt(a)!=="\n"){e+=c.charAt(a);a+=1;if(a>=c.length)break}a+=1;if(m)g();return [e,"TK_COMMENT"]}}if(d==="'"||d==='"'||d==="/"&&(b==="TK_WORD"&&i==="return"||(b==="TK_START_EXPR"||b==="TK_END_BLOCK"||b==="TK_OPERATOR"||b==="TK_EOF"||b==="TK_END_COMMAND"))){var j=d,f=false;d="";if(a<c.length)while(f||c.charAt(a)!==j){d+=c.charAt(a);if(!f)f=c.charAt(a)==="\\";else f=false;a+=1;if(a>=c.length)break}a+=1;if(b==="TK_END_COMMAND")g();return [j+d+j,"TK_STRING"]}if(k(d,D)){while(a<c.length&&k(d+c.charAt(a),D)){d+=c.charAt(a);a+=1;if(a>=c.length)break}return [d,"TK_OPERATOR"]}return [d,"TK_UNKNOWN"]}x=x||" ";y=y||4;p="";while(y--)p+=x;c=K;r="";b="TK_START_EXPR";i="";e=[];w=false;o=false;s=false;H="\n\r\t ".split("");B="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$".split("");D="+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |=".split(" ");t="continue,try,throw,return,var,if,switch,case,default,for,while,break,function".split(",");j="BLOCK";C=[j];q=q||0;a=0;v=false;while(true){var J=E(a);d=J[0];u=J[1];if(u==="TK_EOF")break;switch(u){case "TK_START_EXPR":o=false;z("EXPRESSION");if(!(b==="TK_END_EXPR"||b==="TK_START_EXPR"))if(b!=="TK_WORD"&&b!=="TK_OPERATOR")h();else if(k(r,t)&&r!=="function")h();f();break;case "TK_END_EXPR":f();F();break;case "TK_START_BLOCK":if(r==="do")z("DO_BLOCK");else z("BLOCK");if(b!=="TK_OPERATOR"&&b!=="TK_START_EXPR")if(b==="TK_START_BLOCK")g();else h();f();I();break;case "TK_END_BLOCK":if(b==="TK_START_BLOCK"){G();A()}else{A();g()}f();F();break;case "TK_WORD":if(w){h();f();h();break}if(d==="case"||d==="default"){if(i===":")L();else{A();g();I()}f();v=true;break}l="NONE";if(b==="TK_END_BLOCK")if(!k(d.toLowerCase(),["else","catch","finally"]))l="NEWLINE";else{l="SPACE";h()}else if(b==="TK_END_COMMAND"&&(j==="BLOCK"||j==="DO_BLOCK"))l="NEWLINE";else if(b==="TK_END_COMMAND"&&j==="EXPRESSION")l="SPACE";else if(b==="TK_WORD")l="SPACE";else if(b==="TK_START_BLOCK")l="NEWLINE";else if(b==="TK_END_EXPR"){h();l="NEWLINE"}if(b!=="TK_END_BLOCK"&&k(d.toLowerCase(),["else","catch","finally"]))g();else if(k(d,t)||l==="NEWLINE"){if(i==="else")h();else if(!((b==="TK_START_EXPR"||i==="=")&&d==="function"))if(b==="TK_WORD"&&(i==="return"||i==="throw"))h();else if(b!=="TK_END_EXPR"){if((b!=="TK_START_EXPR"||d!=="var")&&i!==":")if(d==="if"&&b==="TK_WORD"&&r==="else")h();else g()}else if(k(d,t)&&i!==")")g()}else if(l==="SPACE")h();f();r=d;if(d==="var"){o=true;s=false}break;case "TK_END_COMMAND":f();o=false;break;case "TK_STRING":if(b==="TK_START_BLOCK"||b==="TK_END_BLOCK")g();else if(b==="TK_WORD")h();f();break;case "TK_OPERATOR":var m=true,n=true;if(o&&d!==","){s=true;if(d===":")o=false}if(d===":"&&v){f();g();break}v=false;if(d===","){if(o)if(s){f();g();s=false}else{f();h()}else if(b==="TK_END_BLOCK"){f();g()}else if(j==="BLOCK"){f();g()}else{f();h()}break}else if(d==="--"||d==="++")if(i===";"){m=true;n=false}else{m=false;n=false}else if(d==="!"&&b==="TK_START_EXPR"){m=false;n=false}else if(b==="TK_OPERATOR"){m=false;n=false}else if(b==="TK_END_EXPR"){m=true;n=true}else if(d==="."){m=false;n=false}else if(d===":")if(i.match(/^\d+$/))m=true;else m=false;if(m)h();f();if(n)h();break;case "TK_BLOCK_COMMENT":g();f();g();break;case "TK_COMMENT":h();f();g();break;case "TK_UNKNOWN":f()}b=u;i=d}return e.join("")}