2022-01-16 23:28:17 +08:00
import { a6 as le } from "./vendor.59e47867.js" ; ( function ( ) { var w = "ace" , E = function ( ) { return this } ( ) ; ! E && typeof window != "undefined" && ( E = window ) ; var B = function ( n , e , i ) { if ( typeof n != "string" ) { B . original ? B . original . apply ( this , arguments ) : ( console . error ( "dropping module because define wasn't a string." ) , console . trace ( ) ) ; return } arguments . length == 2 && ( i = e ) , B . modules [ n ] || ( B . payloads [ n ] = i , B . modules [ n ] = null ) } ; B . modules = { } , B . payloads = { } ; var T = function ( n , e , i ) { if ( typeof e == "string" ) { var t = s ( n , e ) ; if ( t != null ) return i && i ( ) , t } else if ( Object . prototype . toString . call ( e ) === "[object Array]" ) { for ( var r = [ ] , o = 0 , u = e . length ; o < u ; ++ o ) { var h = s ( n , e [ o ] ) ; if ( h == null && b . original ) return ; r . push ( h ) } return i && i . apply ( null , r ) || ! 0 } } , b = function ( n , e ) { var i = T ( "" , n , e ) ; return i == null && b . original ? b . original . apply ( this , arguments ) : i } , f = function ( n , e ) { if ( e . indexOf ( "!" ) !== - 1 ) { var i = e . split ( "!" ) ; return f ( n , i [ 0 ] ) + "!" + f ( n , i [ 1 ] ) } if ( e . charAt ( 0 ) == "." ) { var t = n . split ( "/" ) . slice ( 0 , - 1 ) . join ( "/" ) ; for ( e = t + "/" + e ; e . indexOf ( "." ) !== - 1 && r != e ; ) { var r = e ; e = e . replace ( /\/\.\// , "/" ) . replace ( /[^\/]+\/\.\.\// , "" ) } } return e } , s = function ( n , e ) { e = f ( n , e ) ; var i = B . modules [ e ] ; if ( ! i ) { if ( i = B . payloads [ e ] , typeof i == "function" ) { var t = { } , r = { id : e , uri : "" , exports : t , packaged : ! 0 } , o = function ( h , d ) { return T ( e , h , d ) } , u = i ( o , t , r ) ; t = u || r . exports , B . modules [ e ] = t , delete B . payloads [ e ] } i = B . modules [ e ] = t || i } return i } ; function a ( n ) { var e = E ; n && ( E [ n ] || ( E [ n ] = { } ) , e = E [ n ] ) , ( ! e . define || ! e . define . packaged ) && ( B . original = e . define , e . define = B , e . define . packaged = ! 0 ) , ( ! e . acequire || ! e . acequire . packaged ) && ( b . original = e . acequire , e . acequire = b , e . acequire . packaged = ! 0 ) } a ( w ) } ) ( ) ; ace . define ( "ace/lib/regexp" , [ "require" , "exports" , "module" ] , function ( w , E , B ) { var T = { exec : RegExp . prototype . exec , test : RegExp . prototype . test , match : String . prototype . match , replace : String . prototype . replace , split : String . prototype . split } , b = T . exec . call ( /()??/ , "" ) [ 1 ] === void 0 , f = function ( ) { var n = /^/g ; return T . test . call ( n , "" ) , ! n . lastIndex } ( ) ; if ( f && b ) return ; RegExp . prototype . exec = function ( n ) { var e = T . exec . apply ( this , arguments ) , i , t ; if ( typeof n == "string" && e ) { if ( ! b && e . length > 1 && a ( e , "" ) > - 1 && ( t = RegExp ( this . source , T . replace . call ( s ( this ) , "g" , "" ) ) , T . replace . call ( n . slice ( e . index ) , t , function ( ) { for ( var o = 1 ; o < arguments . length - 2 ; o ++ ) arguments [ o ] === void 0 && ( e [ o ] = void 0 ) } ) ) , this . _xregexp && this . _xregexp . captureNames ) for ( var r = 1 ; r < e . length ; r ++ ) i = this . _xregexp . captureNames [ r - 1 ] , i && ( e [ i ] = e [ r ] ) ; ! f && this . global && ! e [ 0 ] . length && this . lastIndex > e . index && this . lastIndex -- } return e } , f || ( RegExp . prototype . test = function ( n ) { var e = T . exec . call ( this , n ) ; return e && this . global && ! e [ 0 ] . length && this . lastIndex > e . index && this . lastIndex -- , ! ! e } ) ; function s ( n ) { return ( n . global ? "g" : "" ) + ( n . ignoreCase ? "i" : "" ) + ( n . multiline ? "m" : "" ) + ( n . extended ? "x" : "" ) + ( n . sticky ? "y" : "" ) } function a ( n , e , i ) { if ( Array . prototype . indexOf ) return n . indexOf ( e , i ) ; for ( var t = i || 0 ; t < n . length ; t ++ ) if ( n [ t ] === e ) return t ; return - 1 } } ) ; ace . define ( "ace/lib/es5-shim" , [ "require" , "exports" , "module" ] , function ( w , E , B ) { function T ( ) { } Function . prototype . bind || ( Function . prototype . bind = function ( S ) { var R = this ; if ( typeof R != "function" ) throw new TypeError ( "Function.prototype.bind called on incompatible " + R ) ; var $ = a . call ( arguments , 1 ) , N = function ( ) { if ( this instanceof N ) { var P = R . apply ( this , $ . concat ( a . call ( arguments ) ) ) ; return Object ( P ) === P ? P : this } else return R . apply ( S , $ . concat ( a . call ( arguments ) ) ) } ; return R . prototype && ( T . prototype = R . prototype , N . prototype = new T , T . prototype = null ) , N } ) ; var b = Function . prototype . call , f = Array . prototype , s = Object . prototype , a = f . slice , n = b . bind ( s . toString ) , e = b . bind ( s . hasOwnProperty ) , i , t , r , o , u ; if ( ( u = e ( s , "__defineGetter__" ) ) && ( i = b . bind ( s . _ _defineGetter _ _ ) , t = b . bind ( s . _ _defineSetter _ _ ) , r = b . bind ( s . _ _lookupGetter _ _ ) , o = b . bind ( s . _ _lookupSetter _ _ ) ) , [ 1 , 2 ] . splice ( 0 ) . length != 2 ) if ( function ( ) { function D ( $ ) { var N = new Array ( $ + 2 ) ; return N [ 0 ] = N [ 1 ] = 0 , N } var S = [ ] , R ; if ( S . splice . apply ( S , D ( 20 ) ) , S . splice . apply ( S , D ( 26 ) ) , R = S . length , S . splice ( 5 , 0 , "XXX" ) , R + 1 == S . length , R + 1 == S . length ) return ! 0 } ( ) ) { var h = Array . prototype . splice ; Array . prototype . splice = function ( D , S ) { return arguments . length ? h . apply ( this , [ D === void 0 ? 0 : D , S === void 0 ? this . length - D : S ] . concat ( a . call ( arguments , 2 ) ) ) : [ ] } } else Array . prototype . splice = function ( D , S ) { var R = this .
2021-12-28 23:59:05 +08:00
\ v \ f \ r \ xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF ` ;if(!String.prototype.trim||O.trim()){O="["+O+"]";var I=new RegExp("^"+O+O+"*"),j=new RegExp(O+O+"* $ ");String.prototype.trim=function(){return String(this).replace(I,"").replace(j,"")}}function W(D){return D=+D,D!==D?D=0:D!==0&&D!==1/0&&D!==-(1/0)&&(D=(D>0||-1)*Math.floor(Math.abs(D))),D}var H=function(D){if(D==null)throw new TypeError("can't convert "+D+" to object");return Object(D)}});ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(w,E,B){w("./regexp"),w("./es5-shim")});ace.define("ace/lib/dom",["require","exports","module"],function(w,E,B){var T="http://www.w3.org/1999/xhtml";if(E.getDocumentHead=function(b){return b||(b=document),b.head||b.getElementsByTagName("head")[0]||b.documentElement},E.createElement=function(b,f){return document.createElementNS?document.createElementNS(f||T,b):document.createElement(b)},E.hasCssClass=function(b,f){var s=(b.className+"").split(/ \s +/g);return s.indexOf(f)!==-1},E.addCssClass=function(b,f){E.hasCssClass(b,f)||(b.className+=" "+f)},E.removeCssClass=function(b,f){for(var s=b.className.split(/ \s +/g);;){var a=s.indexOf(f);if(a==-1)break;s.splice(a,1)}b.className=s.join(" ")},E.toggleCssClass=function(b,f){for(var s=b.className.split(/ \s +/g),a=!0;;){var n=s.indexOf(f);if(n==-1)break;a=!1,s.splice(n,1)}return a&&s.push(f),b.className=s.join(" "),a},E.setCssClass=function(b,f,s){s?E.addCssClass(b,f):E.removeCssClass(b,f)},E.hasCssString=function(b,f){var s=0,a;if(f=f||document,f.createStyleSheet&&(a=f.styleSheets)){for(;s<a.length;)if(a[s++].owningElement.id===b)return!0}else if(a=f.getElementsByTagName("style")){for(;s<a.length;)if(a[s++].id===b)return!0}return!1},E.importCssString=function(f,s,a){if(a=a||document,s&&E.hasCssString(s,a))return null;var n;s&&(f+= `
/*# sourceURL=ace/css/`+s+" */ "),a.createStyleSheet?(n=a.createStyleSheet(),n.cssText=f,s&&(n.owningElement.id=s)):(n=E.createElement(" style "),n.appendChild(a.createTextNode(f)),s&&(n.id=s),E.getDocumentHead(a).appendChild(n))},E.importCssStylsheet=function(b,f){if(f.createStyleSheet)f.createStyleSheet(b);else{var s=E.createElement(" link ");s.rel=" stylesheet ",s.href=b,E.getDocumentHead(f).appendChild(s)}},E.getInnerWidth=function(b){return parseInt(E.computedStyle(b," paddingLeft "),10)+parseInt(E.computedStyle(b," paddingRight "),10)+b.clientWidth},E.getInnerHeight=function(b){return parseInt(E.computedStyle(b," paddingTop "),10)+parseInt(E.computedStyle(b," paddingBottom "),10)+b.clientHeight},E.scrollbarWidth=function(b){var f=E.createElement(" ace _inner ");f.style.width=" 100 % ",f.style.minWidth=" 0 px ",f.style.height=" 200 px ",f.style.display=" block ";var s=E.createElement(" ace _outer "),a=s.style;a.position=" absolute ",a.left=" - 10000 px ",a.overflow=" hidden ",a.width=" 200 px ",a.minWidth=" 0 px ",a.height=" 150 px ",a.display=" block ",s.appendChild(f);var n=b.documentElement;n.appendChild(s);var e=f.offsetWidth;a.overflow=" scroll ";var i=f.offsetWidth;return e==i&&(i=s.clientWidth),n.removeChild(s),e-i},typeof document==" undefined "){E.importCssString=function(){};return}window.pageYOffset!==void 0?(E.getPageScrollTop=function(){return window.pageYOffset},E.getPageScrollLeft=function(){return window.pageXOffset}):(E.getPageScrollTop=function(){return document.body.scrollTop},E.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?E.computedStyle=function(b,f){return f?(window.getComputedStyle(b," ")||{})[f]||" ":window.getComputedStyle(b," ")||{}}:E.computedStyle=function(b,f){return f?b.currentStyle[f]:b.currentStyle},E.setInnerHtml=function(b,f){var s=b.cloneNode(!1);return s.innerHTML=f,b.parentNode.replaceChild(s,b),s}," textContent "in document.documentElement?(E.setInnerText=function(b,f){b.textContent=f},E.getInnerText=function(b){return b.textContent}):(E.setInnerText=function(b,f){b.innerText=f},E.getInnerText=function(b){return b.innerText}),E.getParentWindow=function(b){return b.defaultView||b.parentWindow}});ace.define(" ace / lib / oop ",[" require "," exports "," module "],function(w,E,B){E.inherits=function(T,b){T.super_=b,T.prototype=Object.create(b.prototype,{constructor:{value:T,enumerable:!1,writable:!0,configurable:!0}})},E.mixin=function(T,b){for(var f in b)T[f]=b[f];return T},E.implement=function(T,b){E.mixin(T,b)}});ace.define(" ace / lib / keys ",[" require "," exports "," module "," ace / lib / fixoldbrowsers "," ace / lib / oop "],function(w,E,B){w(" . / fixoldbrowsers ");var T=w(" . / oop "),b=function(){var f={MODIFIER_KEYS:{16:" Shift ",17:" Ctrl ",18:" Alt ",224:" Meta "},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:" Backspace ",9:" Tab ",13:" Return ",19:" Pause ",27:" Esc ",32:" Space ",33:" PageUp ",34:" PageDown ",35:" End ",36:" Home ",37:" Left ",38:" Up ",39:" Right ",40:" Down ",44:" Print ",45:" Insert ",46:" Delete ",96:" Numpad0 ",97:" Numpad1 ",98:" Numpad2 ",99:" Numpad3 ",100:" Numpad4 ",101:" Numpad5 ",102:" Numpad6 ",103:" Numpad7 ",104:" Numpad8 ",105:" Numpad9 "," - 13 ":" NumpadEnter ",112:" F1 ",113:" F2 ",114:" F3 ",115:" F4 ",116:" F5 ",117:" F6 ",118:" F7 ",119:" F8 ",120:" F9 ",121:" F10 ",122:" F11 ",123:" F12 ",144:" Numlock ",145:" Scrolllock "},PRINTABLE_KEYS:{32:" ",48:" 0 ",49:" 1 ",50:" 2 ",51:" 3 ",52:" 4 ",53:" 5 ",54:" 6 ",55:" 7 ",56:" 8 ",57:" 9 ",59:" ; ",61:" = ",65:" a ",66:" b ",67:" c ",68:" d ",69:" e ",70:" f ",71:" g ",72:" h ",73:" i ",74:" j ",75:" k ",76:" l ",77:" m ",78:" n ",79:" o ",80:" p ",81:" q ",82:" r ",83:" s ",84:" t ",85:" u ",86:" v ",87:" w ",88:" x ",89:" y ",90:" z ",107:" + ",109:" - ",110:" . ",186:" ; ",187:" = ",188:" , ",189:" - ",190:" . ",191:" / ",192:" ` ",219:"[",220:" \\ ",221:"]",222:"'",111:"/",106:"*"}},s,a;for(a in f.FUNCTION_KEYS)s=f.FUNCTION_KEYS[a].toLowerCase(),f[s]=parseInt(a,10);for(a in f.PRINTABLE_KEYS)s=f.PRINTABLE_KEYS[a].toLowerCase(),f[s]=parseInt(a,10);return T.mixin(f,f.MODIFIER_KEYS),T.mixin(f,f.PRINTABLE_KEYS),T.mixin(f,f.FUNCTION_KEYS),f.enter=f.return,f.escape=f.esc,f.del=f.delete,f[173]="-",function(){for(var n=["cmd","ctrl","alt","shift"],e=Math.pow(2,n.length);e--;)f.KEY_MODS[e]=n.
aaaa a
` ,d=!1,v=!1,c=!1,g=!1,l="",m=!0;try{var y=document.activeElement===u}catch{}T.addListener(u,"blur",function(U){o.onBlur(U),y=!1}),T.addListener(u,"focus",function(U){y=!0,o.onFocus(U),k()}),this.focus=function(){if(l)return u.focus();u.style.position="fixed",u.focus()},this.blur=function(){u.blur()},this.isFocused=function(){return y};var x=s.delayedCall(function(){y&&k(m)}),p=s.delayedCall(function(){g||(u.value=h,y&&k())});function k(U){if(!g){if(g=!0,F)q=0,K=U?0:u.value.length-1;else var q=4,K=5;try{u.setSelectionRange(q,K)}catch{}g=!1}}function _(){g||(u.value=h,b.isWebKit&&p.schedule())}b.isWebKit||o.addEventListener("changeSelection",function(){o.selection.isEmpty()!=m&&(m=!m,x.schedule())}),_(),y&&o.onFocus();var C=function(U){return U.selectionStart===0&&U.selectionEnd===U.value.length},A=function(U){C(u)?(o.selectAll(),k()):F&&k(o.selection.isEmpty())},F=null;this.setInputHandler=function(U){F=U},this.getInputHandler=function(){return F};var L=!1,O=function(U){u.selectionStart===4&&u.selectionEnd===5||(F&&(U=F(U),F=null),c?(k(),U&&o.onPaste(U),c=!1):U==h.substr(0)&&u.selectionStart===4?L?o.execCommand("del",{source:"ace"}):o.execCommand("backspace",{source:"ace"}):d||(U.substring(0,9)==h&&U.length>h.length?U=U.substr(9):U.substr(0,4)==h.substr(0,4)?U=U.substr(4,U.length-h.length+1):U.charAt(U.length-1)==h.charAt(0)&&(U=U.slice(0,-1)),U==h.charAt(0)||U.charAt(U.length-1)==h.charAt(0)&&(U=U.slice(0,-1)),U&&o.onTextInput(U)),d&&(d=!1),L&&(L=!1))},I=function(U){if(!g){var q=u.value;O(q),_()}},j=function(U,q,K){var Q=U.clipboardData||window.clipboardData;if(!(!Q||e)){var J=i||K?"Text":"text/plain";try{return q?Q.setData(J,q)!==!1:Q.getData(J)}catch(Z){if(!K)return j(Z,q,!0)}}},W=function(U,q){var K=o.getCopyText();if(!K)return T.preventDefault(U);j(U,K)?(b.isIOS&&(v=q,u.value= `
aa ` +K+ ` a a
` ,u.setSelectionRange(4,4+K.length),d={value:K}),q?o.onCut():o.onCopy(),b.isIOS||T.preventDefault(U)):(d=!0,u.value=K,u.select(),setTimeout(function(){d=!1,_(),k(),q?o.onCut():o.onCopy()}))},H=function(U){W(U,!0)},D=function(U){W(U,!1)},S=function(U){var q=j(U);typeof q=="string"?(q&&o.onPaste(q,U),b.isIE&&setTimeout(k),T.preventDefault(U)):(u.value="",c=!0)};T.addCommandKeyListener(u,o.onCommandKey.bind(o)),T.addListener(u,"select",A),T.addListener(u,"input",I),T.addListener(u,"cut",H),T.addListener(u,"copy",D),T.addListener(u,"paste",S);var R=function(U){g||!o.onCompositionStart||o. $ readOnly||(g={},g.canUndo=o.session. $ undoManager,o.onCompositionStart(),setTimeout( $ ,0),o.on("mousedown",N),g.canUndo&&!o.selection.isEmpty()&&(o.insert(""),o.session.markUndoGroup(),o.selection.clearSelection()),o.session.markUndoGroup())}, $ =function(){if(!(!g||!o.onCompositionUpdate||o. $ readOnly)){var U=u.value.replace(/ \x 01/g,"");if(g.lastValue!==U&&(o.onCompositionUpdate(U),g.lastValue&&o.undo(),g.canUndo&&(g.lastValue=U),g.lastValue)){var q=o.selection.getRange();o.insert(g.lastValue),o.session.markUndoGroup(),g.range=o.selection.getRange(),o.selection.setRange(q),o.selection.clearSelection()}}},N=function(U){if(!(!o.onCompositionEnd||o. $ readOnly)){var q=g;g=!1;var K=setTimeout(function(){K=null;var J=u.value.replace(/ \x 01/g,"");g||(J==q.lastValue?_():!q.lastValue&&J&&(_(),O(J)))});F=function(Z){return K&&clearTimeout(K),Z=Z.replace(/ \x 01/g,""),Z==q.lastValue?"":(q.lastValue&&K&&o.undo(),Z)},o.onCompositionEnd(),o.removeListener("mousedown",N),U.type=="compositionend"&&q.range&&o.selection.setRange(q.range);var Q=!!b.isChrome&&b.isChrome>=53||!!b.isWebKit&&b.isWebKit>=603;Q&&I()}},P=s.delayedCall( $ ,50);T.addListener(u,"compositionstart",R),b.isGecko?T.addListener(u,"text",function(){P.schedule()}):(T.addListener(u,"keyup",function(){P.schedule()}),T.addListener(u,"keydown",function(){P.schedule()})),T.addListener(u,"compositionend",N),this.getElement=function(){return u},this.setReadOnly=function(U){u.readOnly=U},this.onContextMenu=function(U){L=!0,k(o.selection.isEmpty()),o._emit("nativecontextmenu",{target:o,domEvent:U}),this.moveToMouse(U,!0)},this.moveToMouse=function(U,q){l||(l=u.style.cssText),u.style.cssText=(q?"z-index:100000;":"")+"height:"+u.style.height+";"+(b.isIE?"opacity:0.1;":"");var K=o.container.getBoundingClientRect(),Q=f.computedStyle(o.container),J=K.top+(parseInt(Q.borderTopWidth)||0),Z=K.left+(parseInt(K.borderLeftWidth)||0),se=K.bottom-J-u.clientHeight-2,oe=function(ae){u.style.left=ae.clientX-Z-2+"px",u.style.top=Math.min(ae.clientY-J-2,se)+"px"};oe(U),U.type=="mousedown"&&(o.renderer. $ keepTextAreaAtCursor&&(o.renderer. $ keepTextAreaAtCursor=null),clearTimeout(z),b.isWin&&T.capture(o.container,oe,M))},this.onContextMenuClose=M;var z;function M(){clearTimeout(z),z=setTimeout(function(){l&&(u.style.cssText=l,l=""),o.renderer. $ keepTextAreaAtCursor==null&&(o.renderer. $ keepTextAreaAtCursor=!0,o.renderer. $ moveTextAreaToCursor())},0)}var V=function(U){o.textInput.onContextMenu(U),M()};if(T.addListener(u,"mouseup",V),T.addListener(u,"mousedown",function(U){U.preventDefault(),M()}),T.addListener(o.renderer.scroller,"contextmenu",V),T.addListener(u,"contextmenu",V),b.isIOS){var G=null,X=!1;r.addEventListener("keydown",function(U){G&&clearTimeout(G),X=!0}),r.addEventListener("keyup",function(U){G=setTimeout(function(){X=!1},100)});var Y=function(U){if(document.activeElement===u&&!X){if(v)return setTimeout(function(){v=!1},100);var q=u.selectionStart,K=u.selectionEnd;if(u.setSelectionRange(4,5),q==K)switch(q){case 0:o.onCommandKey(null,0,a.up);break;case 1:o.onCommandKey(null,0,a.home);break;case 2:o.onCommandKey(null,n.option,a.left);break;case 4:o.onCommandKey(null,0,a.left);break;case 5:o.onCommandKey(null,0,a.right);break;case 7:o.onCommandKey(null,n.option,a.right);break;case 8:o.onCommandKey(null,0,a.end);break;case 9:o.onCommandKey(null,0,a.down);break}else{switch(K){case 6:o.onCommandKey(null,n.shift,a.right);break;case 7:o.onCommandKey(null,n.shift|n.option,a.right);break;case 8:o.onCommandKey(null,n.shift,a.end);b
` ))&&(this.seenBidi=!0,this.currentRow=null)},this.getDocumentRow=function(){var n=0,e=this.session. $ screenRowCache;if(e.length){var i=this.session. $ getRowCacheIndex(e,this.currentRow);i>=0&&(n=this.session. $ docRowCache[i])}return n},this.getSplitIndex=function(){var n=0,e=this.session. $ screenRowCache;if(e.length)for(var i,t=this.session. $ getRowCacheIndex(e,this.currentRow);this.currentRow-n>0&&(i=this.session. $ getRowCacheIndex(e,this.currentRow-n-1),i===t);)t=i,n++;return n},this.updateRowLine=function(n,e){if(n===void 0&&(n=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=n===this.session.getLength()-1,this.line=this.session.getLine(n),this.session. $ useWrapMode){var i=this.session. $ wrapData[n];i&&(e===void 0&&(e=this.getSplitIndex()),e>0&&i.length?(this.wrapIndent=i.indent,this.line=e<i.length?this.line.substring(i[e-1],i[i.length-1]):this.line.substring(i[i.length-1])):this.line=this.line.substring(0,i[e]))}var t=this.session,r=0,o;this.line=this.line.replace(/ \t |[ \u 1100- \u 2029, \u 202F- \u FFE6]/g,function(u,h){return u===" "||t.isFullWidth(u.charCodeAt(0))?(o=u===" "?t.getScreenTabSize(h+r):2,r+=o-1,b.stringRepeat(T.DOT,o)):u})},this.updateBidiMap=function(){var n=[],e=this.isLastRow?this.EOF:this.EOL,i=this.line+(this.showInvisibles?e:T.DOT);T.hasBidiCharacters(i,n)?this.bidiMap=T.doBidiReorder(i,n,this.isRtlDir):this.bidiMap={}},this.markAsDirty=function(){this.currentRow=null},this.updateCharacterWidths=function(n){if(!!this.seenBidi&&this.characterWidth!==n. $ characterSize.width){var e=this.characterWidth=n. $ characterSize.width,i=n. $ measureCharWidth(" \u 05D4");this.charWidths[T.L]=this.charWidths[T.EN]=this.charWidths[T.ON_R]=e,this.charWidths[T.R]=this.charWidths[T.AN]=i,this.charWidths[T.R_H]=f.isChrome?i:i*.45,this.charWidths[T.B]=0,this.currentRow=null}},this.getShowInvisibles=function(){return this.showInvisibles},this.setShowInvisibles=function(n){this.showInvisibles=n,this.currentRow=null},this.setEolChar=function(n){this.EOL=n},this.setTextDir=function(n){this.isRtlDir=n},this.getPosLeft=function(n){n-=this.wrapIndent;var e=T.getVisualFromLogicalIdx(n>0?n-1:0,this.bidiMap),i=this.bidiMap.bidiLevels,t=0;n===0&&i[e]%2!=0&&e++;for(var r=0;r<e;r++)t+=this.charWidths[i[r]];return n!==0&&i[e]%2==0&&(t+=this.charWidths[i[e]]),this.wrapIndent&&(t+=this.wrapIndent*this.charWidths[T.L]),t},this.getSelections=function(n,e){for(var i=this.bidiMap,t=i.bidiLevels,r,o=this.wrapIndent*this.charWidths[T.L],u=[],h=Math.min(n,e)-this.wrapIndent,d=Math.max(n,e)-this.wrapIndent,v=!1,c=!1,g=0,l,m=0;m<t.length;m++)l=i.logicalFromVisual[m],r=t[m],v=l>=h&&l<d,v&&!c?g=o:!v&&c&&u.push({left:g,width:o-g}),o+=this.charWidths[r],c=v;return v&&m===t.length&&u.push({left:g,width:o-g}),u},this.offsetToCol=function(n){var e=0,n=Math.max(n,0),i=0,t=0,r=this.bidiMap.bidiLevels,o=this.charWidths[r[t]];for(this.wrapIndent&&(n-=this.wrapIndent*this.charWidths[T.L]);n>i+o/2;){if(i+=o,t===r.length-1){o=0;break}o=this.charWidths[r[++t]]}return t>0&&r[t-1]%2!=0&&r[t]%2==0?(n<i&&t--,e=this.bidiMap.logicalFromVisual[t]):t>0&&r[t-1]%2==0&&r[t]%2!=0?e=1+(n>i?this.bidiMap.logicalFromVisual[t]:this.bidiMap.logicalFromVisual[t-1]):this.isRtlDir&&t===r.length-1&&o===0&&r[t-1]%2==0||!this.isRtlDir&&t===0&&r[t]%2!=0?e=1+this.bidiMap.logicalFromVisual[t]:(t>0&&r[t-1]%2!=0&&o!==0&&t--,e=this.bidiMap.logicalFromVisual[t]),e+this.wrapIndent}}).call(a.prototype),E.BidiHandler=a});ace.define("ace/range",["require","exports","module"],function(w,E,B){var T=function(f,s){return f.row-s.row||f.column-s.column},b=function(f,s,a,n){this.start={row:f,column:s},this.end={row:a,column:n}};(function(){this.isEqual=function(f){return this.start.row===f.start.row&&this.end.row===f.end.row&&this.start.column===f.start.column&&this.end.column===f.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(f,s){return this.compare(f,s)==0},this.compareRange=function(f){var s,a=f.end,n=f.start;return s=this.compare(a.row,a.column),s==1?(s=this.compare(n.row,n.column),s==1?2:
` ||l== ` \ r
` ){r(c);var C="";u.isMaybeInsertedClosing(m,y)&&(C=s.stringRepeat("}",e.maybeInsertedBrackets),u.clearMaybeInsertedClosing());var k=y.substring(m.column,m.column+1);if(k==="}"){var A=g.findMatchingBracket({row:m.row,column:m.column+1},"}");if(!A)return null;var F=this. $ getIndent(g.getLine(A.row))}else if(C)var F=this. $ getIndent(y);else{u.clearMaybeInsertedClosing();return}var L=F+g.getTabString();return{text: `
` +L+ `
` +F+C,selection:[1,L.length,1,L.length]}}else u.clearMaybeInsertedClosing()}),this.add("braces","deletion",function(d,v,c,g,l){var m=g.doc.getTextRange(l);if(!l.isMultiLine()&&m=="{"){r(c);var y=g.doc.getLine(l.start.row),x=y.substring(l.end.column,l.end.column+1);if(x=="}")return l.end.column++,l;e.maybeInsertedBrackets--}}),this.add("parens","insertion",function(d,v,c,g,l){if(l=="("){r(c);var m=c.getSelectionRange(),y=g.doc.getTextRange(m);if(y!==""&&c.getWrapBehavioursEnabled())return o(m,y,"(",")");if(u.isSaneInsertion(c,g))return u.recordAutoInsert(c,g,")"),{text:"()",selection:[1,1]}}else if(l==")"){r(c);var x=c.getCursorPosition(),p=g.doc.getLine(x.row),k=p.substring(x.column,x.column+1);if(k==")"){var _=g. $ findOpeningBracket(")",{column:x.column+1,row:x.row});if(_!==null&&u.isAutoInsertedClosing(x,p,l))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(d,v,c,g,l){var m=g.doc.getTextRange(l);if(!l.isMultiLine()&&m=="("){r(c);var y=g.doc.getLine(l.start.row),x=y.substring(l.start.column+1,l.start.column+2);if(x==")")return l.end.column++,l}}),this.add("brackets","insertion",function(d,v,c,g,l){if(l=="["){r(c);var m=c.getSelectionRange(),y=g.doc.getTextRange(m);if(y!==""&&c.getWrapBehavioursEnabled())return o(m,y,"[","]");if(u.isSaneInsertion(c,g))return u.recordAutoInsert(c,g,"]"),{text:"[]",selection:[1,1]}}else if(l=="]"){r(c);var x=c.getCursorPosition(),p=g.doc.getLine(x.row),k=p.substring(x.column,x.column+1);if(k=="]"){var _=g. $ findOpeningBracket("]",{column:x.column+1,row:x.row});if(_!==null&&u.isAutoInsertedClosing(x,p,l))return u.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(d,v,c,g,l){var m=g.doc.getTextRange(l);if(!l.isMultiLine()&&m=="["){r(c);var y=g.doc.getLine(l.start.row),x=y.substring(l.start.column+1,l.start.column+2);if(x=="]")return l.end.column++,l}}),this.add("string_dquotes","insertion",function(d,v,c,g,l){var m=g. $ mode. $ quotes||t;if(l.length==1&&m[l]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(l)!=-1)return;r(c);var y=l,x=c.getSelectionRange(),p=g.doc.getTextRange(x);if(p!==""&&(p.length!=1||!m[p])&&c.getWrapBehavioursEnabled())return o(x,p,y,y);if(!p){var k=c.getCursorPosition(),_=g.doc.getLine(k.row),C=_.substring(k.column-1,k.column),A=_.substring(k.column,k.column+1),F=g.getTokenAt(k.row,k.column),L=g.getTokenAt(k.row,k.column+1);if(C==" \\ "&&F&&/escape/.test(F.type))return null;var O=F&&/string|escape/.test(F.type),I=!L||/string|escape/.test(L.type),j;if(A==y)j=O!==I,j&&/string \. end/.test(L.type)&&(j=!1);else{if(O&&!I||O&&I)return null;var W=g. $ mode.tokenRe;W.lastIndex=0;var H=W.test(C);W.lastIndex=0;var D=W.test(C);if(H||D||A&&!/[ \s ;,.}) \] \\ ]/.test(A))return null;j=!0}return{text:j?y+y:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(d,v,c,g,l){var m=g.doc.getTextRange(l);if(!l.isMultiLine()&&(m=='"'||m=="'")){r(c);var y=g.doc.getLine(l.start.row),x=y.substring(l.start.column+1,l.start.column+2);if(x==m)return l.end.column++,l}})};u.isSaneInsertion=function(h,d){var v=h.getCursorPosition(),c=new f(d,v.row,v.column);if(!this. $ matchTokenType(c.getCurrentToken()||"text",a)){var g=new f(d,v.row,v.column+1);if(!this. $ matchTokenType(g.getCurrentToken()||"text",a))return!1}return c.stepForward(),c.getCurrentTokenRow()!==v.row||this. $ matchTokenType(c.getCurrentToken()||"text",n)},u. $ matchTokenType=function(h,d){return d.indexOf(h.type||h)>-1},u.recordAutoInsert=function(h,d,v){var c=h.getCursorPosition(),g=d.doc.getLine(c.row);this.isAutoInsertedClosing(c,g,e.autoInsertedLineEnd[0])||(e.autoInsertedBrackets=0),e.autoInsertedRow=c.row,e.autoInsertedLineEnd=v+g.substr(c.column),e.autoInsertedBrackets++},u.recordMaybeInsert=function(h,d,v){var c=h.getCursorPosition(),g=d.doc.getLine(c.row);this.isMaybeInsertedClosing(c,g)||(e.maybeInsertedBrackets=0),e.maybeInsertedRow=c.row,e.maybeInsertedLineStart=g.substr(0,c.column)+v,e.maybeInsertedLineEnd=g.substr(c.column),e.maybeInsertedBrackets++},u.isAutoInsertedClosing=function(h,d,v){return e.autoInsertedBrackets>0&&h.ro
` ).split( `
` )}:this. $ split=function(e){return e.split(/ \r \n | \r | \n /)},this. $ detectNewLine=function(e){var i=e.match(/^.*?( \r \n | \r | \n )/m);this. $ autoNewLine=i?i[1]: `
` ,this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this. $ newLineMode){case"windows":return ` \ r
` ;case"unix":return `
` ;default:return this. $ autoNewLine|| `
` }},this. $ autoNewLine="",this. $ newLineMode="auto",this.setNewLineMode=function(e){this. $ newLineMode!==e&&(this. $ newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this. $ newLineMode},this.isNewLine=function(e){return e== ` \ r
` ||e==" \r "||e== `
` },this.getLine=function(e){return this. $ lines[e]||""},this.getLines=function(e,i){return this. $ lines.slice(e,i+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this. $ lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var i;if(e.start.row===e.end.row)i=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{i=this.getLines(e.start.row,e.end.row),i[0]=(i[0]||"").substring(e.start.column);var t=i.length-1;e.end.row-e.start.row==t&&(i[t]=i[t].substring(0,e.end.column))}return i},this.insertLines=function(e,i){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,i)},this.removeLines=function(e,i){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,i)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,i){return this.getLength()<=1&&this. $ detectNewLine(i),this.insertMergedLines(e,this. $ split(i))},this.insertInLine=function(e,i){var t=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+i.length);return this.applyDelta({start:t,end:r,action:"insert",lines:[i]},!0),this.clonePos(r)},this.clippedPos=function(e,i){var t=this.getLength();e===void 0?e=t:e<0?e=0:e>=t&&(e=t-1,i=void 0);var r=this.getLine(e);return i==null&&(i=r.length),i=Math.min(Math.max(i,0),r.length),{row:e,column:i}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,i){return{row:e,column:i}},this. $ clipPosition=function(e){var i=this.getLength();return e.row>=i?(e.row=Math.max(0,i-1),e.column=this.getLine(i-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,i){e=Math.min(Math.max(e,0),this.getLength());var t=0;e<this.getLength()?(i=i.concat([""]),t=0):(i=[""].concat(i),e--,t=this. $ lines[e].length),this.insertMergedLines({row:e,column:t},i)},this.insertMergedLines=function(e,i){var t=this.clippedPos(e.row,e.column),r={row:t.row+i.length-1,column:(i.length==1?t.column:0)+i[i.length-1].length};return this.applyDelta({start:t,end:r,action:"insert",lines:i}),this.clonePos(r)},this.remove=function(e){var i=this.clippedPos(e.start.row,e.start.column),t=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:i,end:t,action:"remove",lines:this.getLinesForRange({start:i,end:t})}),this.clonePos(i)},this.removeInLine=function(e,i,t){var r=this.clippedPos(e,i),o=this.clippedPos(e,t);return this.applyDelta({start:r,end:o,action:"remove",lines:this.getLinesForRange({start:r,end:o})},!0),this.clonePos(r)},this.removeFullLines=function(e,i){e=Math.min(Math.max(0,e),this.getLength()-1),i=Math.min(Math.max(0,i),this.getLength()-1);var t=i==this.getLength()-1&&e>0,r=i<this.getLength()-1,o=t?e-1:e,u=t?this.getLine(o).length:0,h=r?i+1:i,d=r?0:this.getLine(h).length,v=new s(o,u,h,d),c=this. $ lines.slice(e,i+1);return this.applyDelta({start:v.start,end:v.end,action:"remove",lines:this.getLinesForRange(v)}),c},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,i){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),i.length===0&&e.isEmpty())return e.start;if(i==this.getTextRange(e))return e.end;this.remove(e);var t;return i?t=this.insert(e.start,i):t=e.start,t},this.applyDeltas=function(e){for(var i=0;i<e.length;i++)this.applyDelta(e[i])},this.revertDeltas=function(e){for(var i=e.length-1;i>=0;i--)this.revertDelta(e[i])},this.applyDelta=function(e,i){var t=e.action=="insert";(t?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(t&&e.lines.length>2e4&&this. $ splitAndapplyLargeDelta(e,2e4),b(this. $ lines,e,i),this._signal("change",e))}
` )},this.idxToPosition=function(f){for(var s=0,a=0;a<this.folds.length;a++){var n=this.folds[a];if(f-=n.start.column-s,f<0)return{row:n.start.row,column:n.start.column+f};if(f-=n.placeholder.length,f<0)return n.start;s=n.end.column}return{row:this.end.row,column:this.end.column+f}}}).call(b.prototype),E.FoldLine=b});ace.define("ace/range_list",["require","exports","module","ace/range"],function(w,E,B){var T=w("./range").Range,b=T.comparePoints,f=function(){this.ranges=[]};(function(){this.comparePoints=b,this.pointIndex=function(s,a,n){for(var e=this.ranges,i=n||0;i<e.length;i++){var t=e[i],r=b(s,t.end);if(!(r>0)){var o=b(s,t.start);return r===0?a&&o!==0?-i-2:i:o>0||o===0&&!a?i:-i-1}}return-i-1},this.add=function(s){var a=!s.isEmpty(),n=this.pointIndex(s.start,a);n<0&&(n=-n-1);var e=this.pointIndex(s.end,a,n);return e<0?e=-e-1:e++,this.ranges.splice(n,e-n,s)},this.addList=function(s){for(var a=[],n=s.length;n--;)a.push.apply(a,this.add(s[n]));return a},this.substractPoint=function(s){var a=this.pointIndex(s);if(a>=0)return this.ranges.splice(a,1)},this.merge=function(){var s=[],a=this.ranges;a=a.sort(function(r,o){return b(r.start,o.start)});for(var n=a[0],e,i=1;i<a.length;i++){e=n,n=a[i];var t=b(e.end,n.start);t<0||t==0&&!e.isEmpty()&&!n.isEmpty()||(b(e.end,n.end)<0&&(e.end.row=n.end.row,e.end.column=n.end.column),a.splice(i,1),s.push(n),n=e,i--)}return this.ranges=a,s},this.contains=function(s,a){return this.pointIndex({row:s,column:a})>=0},this.containsPoint=function(s){return this.pointIndex(s)>=0},this.rangeAtPoint=function(s){var a=this.pointIndex(s);if(a>=0)return this.ranges[a]},this.clipRows=function(s,a){var n=this.ranges;if(n[0].start.row>a||n[n.length-1].start.row<s)return[];var e=this.pointIndex({row:s,column:0});e<0&&(e=-e-1);var i=this.pointIndex({row:a,column:0},e);i<0&&(i=-i-1);for(var t=[],r=e;r<i;r++)t.push(n[r]);return t},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(s){this.session&&this.detach(),this.session=s,this.onChange=this. $ onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){!this.session||(this.session.removeListener("change",this.onChange),this.session=null)},this. $ onChange=function(s){if(s.action=="insert")var a=s.start,n=s.end;else var n=s.start,a=s.end;for(var e=a.row,i=n.row,t=i-e,r=-a.column+n.column,o=this.ranges,u=0,h=o.length;u<h;u++){var d=o[u];if(!(d.end.row<e)){if(d.start.row>e)break;if(d.start.row==e&&d.start.column>=a.column&&(d.start.column==a.column&&this. $ insertRight||(d.start.column+=r,d.start.row+=t)),d.end.row==e&&d.end.column>=a.column){if(d.end.column==a.column&&this. $ insertRight)continue;d.end.column==a.column&&r>0&&u<h-1&&d.end.column>d.start.column&&d.end.column==o[u+1].start.column&&(d.end.column-=r),d.end.column+=r,d.end.row+=t}}}if(t!=0&&u<h)for(;u<h;u++){var d=o[u];d.start.row+=t,d.end.row+=t}}}).call(f.prototype),E.RangeList=f});ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(w,E,B){w("../range").Range;var T=w("../range_list").RangeList,b=w("../lib/oop"),f=E.Fold=function(i,t){this.foldLine=null,this.placeholder=t,this.range=i,this.start=i.start,this.end=i.end,this.sameRow=i.start.row==i.end.row,this.subFolds=this.ranges=[]};b.inherits(f,T),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(i){this.foldLine=i,this.subFolds.forEach(function(t){t.setFoldLine(i)})},this.clone=function(){var i=this.range.clone(),t=new f(i,this.placeholder);return this.subFolds.forEach(function(r){t.subFolds.push(r.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(i){if(!this.range.isEqual(i)){if(!this.range.containsRange(i))throw new Error("A fold can't intersect already existing fold"+i.range+this.range);a(i,this.start);for(var t=i.start.row,r=i.start.column,o=0,u=-1;o<this.subFolds.length&&(u=this.subFolds[o].range.compare(t,r),u==1);o++);var h=this.subFolds[o];if(u==0)return h.addSubFold(i);for(var t=i.range.end.row,r=i.range.end.column
` )},this.on("changeFold",this.onChangeFold.bind(this)),this. $ onChange=this.onChange.bind(this),(typeof h!="object"||!h.getLine)&&(h=new t(h)),this. $ bidiHandler=new f(this),this.setDocument(h),this.selection=new n(this),s.resetOptions(this),this.setMode(d),s._signal("session",this)};u. $ uid=0,function(){T.implement(this,a),this.setDocument=function(p){this.doc&&this.doc.removeListener("change",this. $ onChange),this.doc=p,p.on("change",this. $ onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this. $ resetRowCache=function(p){if(!p){this. $ docRowCache=[],this. $ screenRowCache=[];return}var k=this. $ docRowCache.length,_=this. $ getRowCacheIndex(this. $ docRowCache,p)+1;k>_&&(this. $ docRowCache.splice(_,k),this. $ screenRowCache.splice(_,k))},this. $ getRowCacheIndex=function(p,k){for(var _=0,C=p.length-1;_<=C;){var A=_+C>>1,F=p[A];if(k>F)_=A+1;else if(k<F)C=A-1;else return A}return _-1},this.resetCaches=function(){this. $ modified=!0,this. $ wrapData=[],this. $ rowLengthCache=[],this. $ resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(p){var k=p.data;this. $ resetRowCache(k.start.row)},this.onChange=function(p){this. $ modified=!0,this. $ bidiHandler.onChange(p),this. $ resetRowCache(p.start.row);var k=this. $ updateInternalDataOnChange(p);!this. $ fromUndo&&this. $ undoManager&&!p.ignore&&(this. $ deltasDoc.push(p),k&&k.length!=0&&this. $ deltasFold.push({action:"removeFolds",folds:k}),this. $ informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer. $ updateOnChange(p),this._signal("change",p)},this.setValue=function(p){this.doc.setValue(p),this.selection.moveTo(0,0),this. $ resetRowCache(0),this. $ deltas=[],this. $ deltasDoc=[],this. $ deltasFold=[],this.setUndoManager(this. $ undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(p){return this.bgTokenizer.getState(p)},this.getTokens=function(p){return this.bgTokenizer.getTokens(p)},this.getTokenAt=function(p,k){var _=this.bgTokenizer.getTokens(p),C,A=0;if(k==null){var F=_.length-1;A=this.getLine(p).length}else for(var F=0;F<_.length&&(A+=_[F].value.length,!(A>=k));F++);return C=_[F],C?(C.index=F,C.start=A-C.value.length,C):null},this.setUndoManager=function(p){if(this. $ undoManager=p,this. $ deltas=[],this. $ deltasDoc=[],this. $ deltasFold=[],this. $ informUndoManager&&this. $ informUndoManager.cancel(),p){var k=this;this. $ syncInformUndoManager=function(){k. $ informUndoManager.cancel(),k. $ deltasFold.length&&(k. $ deltas.push({group:"fold",deltas:k. $ deltasFold}),k. $ deltasFold=[]),k. $ deltasDoc.length&&(k. $ deltas.push({group:"doc",deltas:k. $ deltasDoc}),k. $ deltasDoc=[]),k. $ deltas.length>0&&p.execute({action:"aceupdate",args:[k. $ deltas,k],merge:k.mergeUndoDeltas}),k.mergeUndoDeltas=!1,k. $ deltas=[]},this. $ informUndoManager=b.delayedCall(this. $ syncInformUndoManager)}},this.markUndoGroup=function(){this. $ syncInformUndoManager&&this. $ syncInformUndoManager()},this. $ defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this. $ undoManager||this. $ defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?b.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(p){this.setOption("useSoftTabs",p)},this.getUseSoftTabs=function(){return this. $ useSoftTabs&&!this. $ mode. $ indentWithTabs},this.setTabSize=function(p){this.setOption("tabSize",p)},this.getTabSize=function(){return this. $ tabSize},this.isTabStop=function(p){return this. $ useSoftTabs&&p.column%this. $ tabSize==0},this.setNavigateWithinSoftTabs=function(p){this.setOption("navigateWithinSoftTabs",p)},this.getNavigateWithinSoftTabs=function(){return this. $ navigateWithinSoftTabs},this. $ overwrite=!1,this.setOverwrite=function(p){this.setOption("overwrite",p)},this.getOverwrite=function(){return this. $ overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this. $ overwrite)},this.addGutterDecoration=function(p,k){this. $ decorations[p]||(this. $ de
` },this.getWordRange=function(p,k){var _=this.getLine(p),C=!1;if(k>0&&(C=!!_.charAt(k-1).match(this.tokenRe)),C||(C=!!_.charAt(k).match(this.tokenRe)),C)var A=this.tokenRe;else if(/^ \s + $ /.test(_.slice(k-1,k+1)))var A=/ \s /;else var A=this.nonTokenRe;var F=k;if(F>0){do F--;while(F>=0&&_.charAt(F).match(A));F++}for(var L=k;L<_.length&&_.charAt(L).match(A);)L++;return new i(p,F,p,L)},this.getAWordRange=function(p,k){for(var _=this.getWordRange(p,k),C=this.getLine(_.end.row);C.charAt(_.end.column).match(/[ \t ]/);)_.end.column+=1;return _},this.setNewLineMode=function(p){this.doc.setNewLineMode(p)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(p){this.setOption("useWorker",p)},this.getUseWorker=function(){return this. $ useWorker},this.onReloadTokenizer=function(p){var k=p.data;this.bgTokenizer.start(k.first),this._signal("tokenizerUpdate",p)},this. $ modes={},this. $ mode=null,this. $ modeId=null,this.setMode=function(p,k){if(p&&typeof p=="object"){if(p.getTokenizer)return this. $ onChangeMode(p);var _=p,C=_.path}else C=p||"ace/mode/text";if(this. $ modes["ace/mode/text"]||(this. $ modes["ace/mode/text"]=new e),this. $ modes[C]&&!_){this. $ onChangeMode(this. $ modes[C]),k&&k();return}this. $ modeId=C,s.loadModule(["mode",C],function(A){if(this. $ modeId!==C)return k&&k();this. $ modes[C]&&!_?this. $ onChangeMode(this. $ modes[C]):A&&A.Mode&&(A=new A.Mode(_),_||(this. $ modes[C]=A,A. $ id=C),this. $ onChangeMode(A)),k&&k()}.bind(this)),this. $ mode||this. $ onChangeMode(this. $ modes["ace/mode/text"],!0)},this. $ onChangeMode=function(p,k){if(k||(this. $ modeId=p. $ id),this. $ mode!==p){this. $ mode=p,this. $ stopWorker(),this. $ useWorker&&this. $ startWorker();var _=p.getTokenizer();if(_.addEventListener!==void 0){var C=this.onReloadTokenizer.bind(this);_.addEventListener("update",C)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(_);else{this.bgTokenizer=new r(_);var A=this;this.bgTokenizer.addEventListener("update",function(F){A._signal("tokenizerUpdate",F)})}this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=p.tokenRe,this.nonTokenRe=p.nonTokenRe,k||(p.attachToSession&&p.attachToSession(this),this. $ options.wrapMethod.set.call(this,this. $ wrapMethod),this. $ setFolding(p.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode"))}},this. $ stopWorker=function(){this. $ worker&&(this. $ worker.terminate(),this. $ worker=null)},this. $ startWorker=function(){try{this. $ worker=this. $ mode.createWorker(this)}catch(p){s.warn("Could not load worker",p),this. $ worker=null}},this.getMode=function(){return this. $ mode},this. $ scrollTop=0,this.setScrollTop=function(p){this. $ scrollTop===p||isNaN(p)||(this. $ scrollTop=p,this._signal("changeScrollTop",p))},this.getScrollTop=function(){return this. $ scrollTop},this. $ scrollLeft=0,this.setScrollLeft=function(p){this. $ scrollLeft===p||isNaN(p)||(this. $ scrollLeft=p,this._signal("changeScrollLeft",p))},this.getScrollLeft=function(){return this. $ scrollLeft},this.getScreenWidth=function(){return this. $ computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null)return this.lineWidgetsWidth;var p=0;return this.lineWidgets.forEach(function(k){k&&k.screenWidth>p&&(p=k.screenWidth)}),this.lineWidgetWidth=p},this. $ computeWidth=function(p){if(this. $ modified||p){if(this. $ modified=!1,this. $ useWrapMode)return this.screenWidth=this. $ wrapLimit;for(var k=this.doc.getAllLines(),_=this. $ rowLengthCache,C=0,A=0,F=this. $ foldData[A],L=F?F.start.row:1/0,O=k.length,I=0;I<O;I++){if(I>L){if(I=F.end.row+1,I>=O)break;F=this. $ foldData[A++],L=F?F.start.row:1/0}_[I]==null&&(_[I]=this. $ getStringScreenWidth(k[I])[0]),_[I]>C&&(C=_[I])}this.screenWidth=C}},this.getLine=function(p){return this.doc.getLine(p)},this.getLines=function(p,k){return this.doc.getLines(p,k)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(p){return this.doc.getTextRange(p||this.selection.getRange())},this.insert=function(p,k){return this.doc.insert(p,k)},this.remove=function(p){return this.doc.remove(p)},this.remov
^ ` ).split( `
` ),t=[],r=0;r<i.length;r++)try{t.push(new RegExp(i[r],e))}catch{return!1}return t},this. $ matchIterator=function(n,e){var i=this. $ assembleRegExp(e);if(!i)return!1;var t=e.backwards==!0,r=e.skipCurrent!=!1,o=e.range,u=e.start;u||(u=o?o[t?"end":"start"]:n.selection.getRange()),u.start&&(u=u[r!=t?"end":"start"]);var h=o?o.start.row:0,d=o?o.end.row:n.getLength()-1;if(t)var v=function(l){var m=u.row;if(!g(m,u.column,l)){for(m--;m>=h;m--)if(g(m,Number.MAX_VALUE,l))return;if(e.wrap!=!1){for(m=d,h=u.row;m>=h;m--)if(g(m,Number.MAX_VALUE,l))return}}};else var v=function(m){var y=u.row;if(!g(y,u.column,m)){for(y=y+1;y<=d;y++)if(g(y,0,m))return;if(e.wrap!=!1){for(y=h,d=u.row;y<=d;y++)if(g(y,0,m))return}}};if(e. $ isMultiLine)var c=i.length,g=function(l,m,y){var x=t?l-c+1:l;if(!(x<0)){var p=n.getLine(x),k=p.search(i[0]);if(!(!t&&k<m||k===-1)){for(var _=1;_<c;_++)if(p=n.getLine(x+_),p.search(i[_])==-1)return;var C=p.match(i[c-1])[0].length;if(!(t&&C>m)&&y(x,k,x+c-1,C))return!0}}};else if(t)var g=function(m,y,x){var p=n.getLine(m),k=[],_,C=0;for(i.lastIndex=0;_=i.exec(p);){var A=_[0].length;if(C=_.index,!A){if(C>=p.length)break;i.lastIndex=C+=1}if(_.index+A>y)break;k.push(_.index,A)}for(var F=k.length-1;F>=0;F-=2){var L=k[F-1],A=k[F];if(x(m,L,m,L+A))return!0}};else var g=function(m,y,x){var p=n.getLine(m),k,_=y;for(i.lastIndex=y;k=i.exec(p);){var C=k[0].length;if(_=k.index,x(m,_,m,_+C))return!0;if(!C&&(i.lastIndex=_+=1,_>=p.length))return!1}};return{forEach:v}}}).call(s.prototype);function a(n,e){function i(t){return/ \w /.test(t)||e.regExp?" \\ b":""}return i(n[0])+n+i(n[n.length-1])}E.Search=s});ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(w,E,B){var T=w("../lib/keys"),b=w("../lib/useragent"),f=T.KEY_MODS;function s(n,e){this.platform=e||(b.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(n),this. $ singleCommand=!0}function a(n,e){s.call(this,n,e),this. $ singleCommand=!1}a.prototype=s.prototype,function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,i){var t=e&&(typeof e=="string"?e:e.name);e=this.commands[t],i||delete this.commands[t];var r=this.commandKeyBinding;for(var o in r){var u=r[o];if(u==e)delete r[o];else if(Array.isArray(u)){var h=u.indexOf(e);h!=-1&&(u.splice(h,1),u.length==1&&(r[o]=u[0]))}}},this.bindKey=function(e,i,t){if(typeof e=="object"&&e&&(t==null&&(t=e.position),e=e[this.platform]),!!e){if(typeof i=="function")return this.addCommand({exec:i,bindKey:e,name:i.name||e});e.split("|").forEach(function(r){var o="";if(r.indexOf(" ")!=-1){var u=r.split(/ \s +/);r=u.pop(),u.forEach(function(v){var c=this.parseKeys(v),g=f[c.hashId]+c.key;o+=(o?" ":"")+g,this._addCommandToBinding(o,"chainKeys")},this),o+=" "}var h=this.parseKeys(r),d=f[h.hashId]+h.key;this._addCommandToBinding(o+d,i,t)},this)}};function n(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this._addCommandToBinding=function(e,i,t){var r=this.commandKeyBinding,o;if(!i)delete r[e];else if(!r[e]||this. $ singleCommand)r[e]=i;else{Array.isArray(r[e])?(o=r[e].indexOf(i))!=-1&&r[e].splice(o,1):r[e]=[r[e]],typeof t!="number"&&(t=n(i));var u=r[e];for(o=0;o<u.length;o++){var h=u[o],d=n(h);if(d>t)break}u.splice(o,0,i)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(i){var t=e[i];if(!!t){if(typeof t=="string")return this.bindKey(t,i);typeof t=="function"&&(t={exec:t}),typeof t=="object"&&(t.name||(t.name=i),this.addCommand(t))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(i){this.removeCommand(e[i])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(i){this.bindKey(i,e[i])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var i=e.toLowerCase().split(/[ \- \+ ]([ \- \+ ])?/).filter(function(d){return d}),t=i.pop(),r=T[t];if(T.FUNCTION_KEYS[r])t=T.FUNCTION_KEYS[r].toLowerCase();else if(i.length){if(i.length==1&&i[0]=="shift")return{key:t.toUpperC
` )==-1){var _=new o.fromPoints(p,p);_.end.column+=l.length,this.session.remove(_)}}else{var _=this.getSelectionRange();p=this.session.remove(_),this.clearSelection()}if(l== `
` ||l== ` \ r
` ){var L=y.getLine(p.row);if(p.column>L.search(/ \S | $ /)){var C=L.substr(p.column).search(/ \S | $ /);y.doc.removeInLine(p.row,p.column,p.column+C)}}this.clearSelection();var A=p.column,F=y.getState(p.row),L=y.getLine(p.row),O=x.checkOutdent(F,L,l);if(y.insert(p,l),k&&k.selection&&(k.selection.length==2?this.selection.setSelectionRange(new o(p.row,A+k.selection[0],p.row,A+k.selection[1])):this.selection.setSelectionRange(new o(p.row+k.selection[0],k.selection[1],p.row+k.selection[2],k.selection[3]))),y.getDocument().isNewLine(l)){var I=x.getNextLineIndent(F,L.slice(0,p.column),y.getTabString());y.insert({row:p.row+1,column:0},I)}O&&x.autoOutdent(F,y,p.row)},this.onTextInput=function(l){this.keyBinding.onTextInput(l)},this.onCommandKey=function(l,m,y){this.keyBinding.onCommandKey(l,m,y)},this.setOverwrite=function(l){this.session.setOverwrite(l)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(l){this.setOption("scrollSpeed",l)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(l){this.setOption("dragDelay",l)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(l){this.setOption("selectionStyle",l)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(l){this.setOption("highlightActiveLine",l)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(l){this.setOption("highlightGutterLine",l)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(l){this.setOption("highlightSelectedWord",l)},this.getHighlightSelectedWord=function(){return this. $ highlightSelectedWord},this.setAnimatedScroll=function(l){this.renderer.setAnimatedScroll(l)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(l){this.renderer.setShowInvisibles(l)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(l){this.renderer.setDisplayIndentGuides(l)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(l){this.renderer.setShowPrintMargin(l)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(l){this.renderer.setPrintMarginColumn(l)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(l){this.setOption("readOnly",l)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(l){this.setOption("behavioursEnabled",l)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(l){this.setOption("wrapBehavioursEnabled",l)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(l){this.setOption("showFoldWidgets",l)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(l){this.setOption("fadeFoldWidgets",l)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(l){this.selection.isEmpty()&&(l=="left"?this.selection.selectLeft():this.selection.selectRight());var m=this.getSelectionRange();if(this.getBehavioursEnabled()){var y=this.session,x=y.getState(m.start.row),p=y.getMode().transformAction(x,"deletion",this,y,m);if(m.end.column===0){var k=y.getTextRange(m);if(k[k.length-1]== `
` ){var _=y.getLine(m.end.row);/^ \s + $ /.test(_)&&(m.end.column=_.length)}}p&&(m=p)}this.session.remove(m),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var l=this.getSelectionRange();l.start.column==l.end.column&&l.start.row==l.end.row&&(l.end.column=0,l.end.row++),this.session.remove(l),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var l=this.getCursorPosition();this.insert( `
` ),this.moveCursorToPosition(l)},this.transposeLetters=function(){if(!!this.selection.isEmpty()){var l=this.getCursorPosition(),m=l.column;if(m!==0){var y=this.session.getLine(l.row),x,p;m<y.length?(x=y.charAt(m)+y.charAt(m-1),p=new o(l.row,m-1,l.row,m+1)):(x=y.charAt(m-1)+y.charAt(m-2),p=new o(l.row,m-2,l.row,m)),this.session.replace(p,x),this.session.selection.moveToPosition(p.end)}}},this.toLowerCase=function(){var l=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var m=this.getSelectionRange(),y=this.session.getTextRange(m);this.session.replace(m,y.toLowerCase()),this.selection.setSelectionRange(l)},this.toUpperCase=function(){var l=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var m=this.getSelectionRange(),y=this.session.getTextRange(m);this.session.replace(m,y.toUpperCase()),this.selection.setSelectionRange(l)},this.indent=function(){var l=this.session,m=this.getSelectionRange();if(m.start.row<m.end.row){var y=this. $ getSelectedRows();l.indentRows(y.first,y.last," ");return}else if(m.start.column<m.end.column){var x=l.getTextRange(m);if(!/^ \s + $ /.test(x)){var y=this. $ getSelectedRows();l.indentRows(y.first,y.last," ");return}}var p=l.getLine(m.start.row),k=m.start,_=l.getTabSize(),C=l.documentToScreenColumn(k.row,k.column);if(this.session.getUseSoftTabs())var A=_-C%_,F=f.stringRepeat(" ",A);else{for(var A=C%_;p[m.start.column-1]==" "&&A;)m.start.column--,A--;this.selection.setSelectionRange(m),F=" "}return this.insert(F)},this.blockIndent=function(){var l=this. $ getSelectedRows();this.session.indentRows(l.first,l.last," ")},this.blockOutdent=function(){var l=this.session.getSelection();this.session.outdentRows(l.getRange())},this.sortLines=function(){for(var l=this. $ getSelectedRows(),m=this.session,y=[],x=l.first;x<=l.last;x++)y.push(m.getLine(x));y.sort(function(_,C){return _.toLowerCase()<C.toLowerCase()?-1:_.toLowerCase()>C.toLowerCase()?1:0});for(var p=new o(0,0,0,0),x=l.first;x<=l.last;x++){var k=m.getLine(x);p.start.row=x,p.end.row=x,p.end.column=k.length,m.replace(p,y[x-l.first])}},this.toggleCommentLines=function(){var l=this.session.getState(this.getCursorPosition().row),m=this. $ getSelectedRows();this.session.getMode().toggleCommentLines(l,this.session,m.first,m.last)},this.toggleBlockComment=function(){var l=this.getCursorPosition(),m=this.session.getState(l.row),y=this.getSelectionRange();this.session.getMode().toggleBlockComment(m,this.session,y,l)},this.getNumberAt=function(l,m){var y=/[ \- ]?[0-9]+(?: \. [0-9]+)?/g;y.lastIndex=0;for(var x=this.session.getLine(l);y.lastIndex<m;){var p=y.exec(x);if(p.index<=m&&p.index+p[0].length>=m){var k={value:p[0],start:p.index,end:p.index+p[0].length};return k}}return null},this.modifyNumber=function(l){var m=this.selection.getCursor().row,y=this.selection.getCursor().column,x=new o(m,y-1,m,y),p=this.session.getTextRange(x);if(!isNaN(parseFloat(p))&&isFinite(p)){var k=this.getNumberAt(m,y);if(k){var _=k.value.indexOf(".")>=0?k.start+k.value.indexOf(".")+1:k.end,C=k.start+k.value.length-_,A=parseFloat(k.value);A*=Math.pow(10,C),_!==k.end&&y<_?l*=Math.pow(10,k.end-y-1):l*=Math.pow(10,k.end-y),A+=l,A/=Math.pow(10,C);var F=A.toFixed(C),L=new o(m,k.start,m,k.end);this.session.replace(L,F),this.moveCursorTo(m,Math.max(k.start+1,y+F.length-k.value.length))}}},this.removeLines=function(){var l=this. $ getSelectedRows();this.session.removeFullLines(l.first,l.last),this.clearSelection()},this.duplicateSelection=function(){var l=this.selection,m=this.session,y=l.getRange(),x=l.isBackwards();if(y.isEmpty()){var p=y.start.row;m.duplicateLines(p,p)}else{var k=x?y.start:y.end,_=m.insert(k,m.getTextRange(y),!1);y.start=k,y.end=_,l.setSelectionRange(y,x)}},this.moveLinesDown=function(){this. $ moveLines(1,!1)},this.moveLinesUp=function(){this. $ moveLines(-1,!1)},this.moveText=function(l,m,y){return this.session.moveText(l,m,y)},this.copyLinesUp=function(){this. $ moveLines(-1,!0)},this.copyLinesDown=function(){this. $ moveLines(1,!0)},this. $ moveLines=function(l,m){var y,x,p=this.selection;if(!p.inMultiSelectMode||this.inVirtualSelect
` ?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=n)return this.EOL_CHAR=n,!0},this.setPadding=function(n){this. $ padding=n,this.element.style.padding="0 "+n+"px"},this.getLineHeight=function(){return this. $ fontMetrics. $ characterSize.height||0},this.getCharacterWidth=function(){return this. $ fontMetrics. $ characterSize.width||0},this. $ setFontMetrics=function(n){this. $ fontMetrics=n,this. $ fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this. $ pollSizeChanges()},this.checkForSizeChanges=function(){this. $ fontMetrics.checkForSizeChanges()},this. $ pollSizeChanges=function(){return this. $ pollSizeChangesTimer=this. $ fontMetrics. $ pollSizeChanges()},this.setSession=function(n){this.session=n,n&&this. $ computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(n){return this.showInvisibles==n?!1:(this.showInvisibles=n,this. $ computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(n){return this.displayIndentGuides==n?!1:(this.displayIndentGuides=n,this. $ computeTabString(),!0)},this. $ tabStrings=[],this.onChangeTabSize=this. $ computeTabString=function(){var n=this.session.getTabSize();this.tabSize=n;for(var e=this. $ tabStrings=[0],i=1;i<n+1;i++)this.showInvisibles?e.push("<span class='ace_invisible ace_invisible_tab'>"+f.stringRepeat(this.TAB_CHAR,i)+"</span>"):e.push(f.stringRepeat(" ",i));if(this.displayIndentGuides){this. $ indentGuideRe=/ \s \S | \t | \t | \s $ /;var t="ace_indent-guide",r="",o="";if(this.showInvisibles){t+=" ace_invisible",r=" ace_invisible_space",o=" ace_invisible_tab";var u=f.stringRepeat(this.SPACE_CHAR,this.tabSize),h=f.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=f.stringRepeat(" ",this.tabSize),h=u;this. $ tabStrings[" "]="<span class='"+t+r+"'>"+u+"</span>",this. $ tabStrings[" "]="<span class='"+t+o+"'>"+h+"</span>"}},this.updateLines=function(n,e,i){(this.config.lastRow!=n.lastRow||this.config.firstRow!=n.firstRow)&&this.scrollLines(n),this.config=n;for(var t=Math.max(e,n.firstRow),r=Math.min(i,n.lastRow),o=this.element.childNodes,u=0,h=n.firstRow;h<t;h++){var d=this.session.getFoldLine(h);if(d)if(d.containsRow(t)){t=d.start.row;break}else h=d.end.row;u++}for(var h=t,d=this.session.getNextFoldLine(h),v=d?d.start.row:1/0;h>v&&(h=d.end.row+1,d=this.session.getNextFoldLine(h,d),v=d?d.start.row:1/0),!(h>r);){var c=o[u++];if(c){var g=[];this. $ renderLine(g,h,!this. $ useLineGroups(),h==v?d:!1),c.style.height=n.lineHeight*this.session.getRowLength(h)+"px",c.innerHTML=g.join("")}h++}},this.scrollLines=function(n){var e=this.config;if(this.config=n,!e||e.lastRow<n.firstRow)return this.update(n);if(n.lastRow<e.firstRow)return this.update(n);var i=this.element;if(e.firstRow<n.firstRow)for(var t=this.session.getFoldedRowCount(e.firstRow,n.firstRow-1);t>0;t--)i.removeChild(i.firstChild);if(e.lastRow>n.lastRow)for(var t=this.session.getFoldedRowCount(n.lastRow+1,e.lastRow);t>0;t--)i.removeChild(i.lastChild);if(n.firstRow<e.firstRow){var r=this. $ renderLinesFragment(n,n.firstRow,e.firstRow-1);i.firstChild?i.insertBefore(r,i.firstChild):i.appendChild(r)}if(n.lastRow>e.lastRow){var r=this. $ renderLinesFragment(n,e.lastRow+1,n.lastRow);i.appendChild(r)}},this. $ renderLinesFragment=function(n,e,i){for(var t=this.element.ownerDocument.createDocumentFragment(),r=e,o=this.session.getNextFoldLine(r),u=o?o.start.row:1/0;r>u&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),u=o?o.start.row:1/0),!(r>i);){var h=b.createElement("div"),d=[];if(this. $ renderLine(d,r,!1,r==u?o:!1),h.innerHTML=d.join(""),this. $ useLineGroups())h.className="ace_line_group",t.appendChild(h),h.style.height=n.lineHeight*this.session.getRowLength(r)+"px";else for(;h.firstChild;)t.appendChild(h.firstChild);r++}return t},this.update=function(n){this.config=n;for(var e=[],i=n.firstRow,t=n.lastRow,r=i,o=this.session.getNextFoldLine(r),u=o?o.start.row:1/0;r>u&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),u=o?o.start.row:1/0),!(r>t);)this. $ useLineGroups()&&e.push("<div class='ace_line_group' style='height:",n.lineHeight*this.session.getRowLength(r),"px'>"),this. $ renderLin
` )+ `
` ),_||(x.start.column=0,x.end.column=F[F.length-1].length),this.selection.setRange(x)}else{y.forEach(function(j){g.substractPoint(j.cursor)});var L=0,O=1/0,I=l.map(function(j){var W=j.cursor,H=c.getLine(W.row),D=H.substr(W.column).search(/ \S /g);return D==-1&&(D=0),W.column>L&&(L=W.column),D<O&&(O=D),D});l.forEach(function(j,W){var H=j.cursor,D=L-H.column,S=I[W]-O;D>S?c.insert(H,n.stringRepeat(" ",D-S)):c.remove(new b(H.row,H.column,H.row,H.column-D+S)),j.start.column=j.end.column=L,j.start.row=j.end.row=H.row,j.cursor=j.end}),g.fromOrientedRange(l[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this. $ reAlignText=function(c,g){var l=!0,m=!0,y,x,p;return c.map(function(F){var L=F.match(/( \s *)(.*?)( \s *)([=:].*)/);return L?y==null?(y=L[1].length,x=L[2].length,p=L[3].length,L):(y+x+p!=L[1].length+L[2].length+L[3].length&&(m=!1),y!=L[1].length&&(l=!1),y>L[1].length&&(y=L[1].length),x<L[2].length&&(x=L[2].length),p>L[3].length&&(p=L[3].length),L):[F]}).map(g?_:l?m?C:_:A);function k(F){return n.stringRepeat(" ",F)}function _(F){return F[2]?k(y)+F[2]+k(x-F[2].length+p)+F[4].replace(/^([=:]) \s +/," $ 1 "):F[0]}function C(F){return F[2]?k(y+x-F[2].length)+F[2]+k(p)+F[4].replace(/^([=:]) \s +/," $ 1 "):F[0]}function A(F){return F[2]?k(y)+F[2]+k(p)+F[4].replace(/^([=:]) \s +/," $ 1 "):F[0]}}}).call(u.prototype);function h(c,g){return c.row==g.row&&c.column==g.column}E.onSessionChange=function(c){var g=c.session;g&&!g.multiSelect&&(g. $ selectionMarkers=[],g.selection. $ initRangeList(),g.multiSelect=g.selection),this.multiSelect=g&&g.multiSelect;var l=c.oldSession;l&&(l.multiSelect.off("addRange",this. $ onAddRange),l.multiSelect.off("removeRange",this. $ onRemoveRange),l.multiSelect.off("multiSelect",this. $ onMultiSelect),l.multiSelect.off("singleSelect",this. $ onSingleSelect),l.multiSelect.lead.off("change",this. $ checkMultiselectChange),l.multiSelect.anchor.off("change",this. $ checkMultiselectChange)),g&&(g.multiSelect.on("addRange",this. $ onAddRange),g.multiSelect.on("removeRange",this. $ onRemoveRange),g.multiSelect.on("multiSelect",this. $ onMultiSelect),g.multiSelect.on("singleSelect",this. $ onSingleSelect),g.multiSelect.lead.on("change",this. $ checkMultiselectChange),g.multiSelect.anchor.on("change",this. $ checkMultiselectChange)),g&&this.inMultiSelectMode!=g.selection.inMultiSelectMode&&(g.selection.inMultiSelectMode?this. $ onMultiSelect():this. $ onSingleSelect())};function d(c){c. $ multiselectOnSessionChange||(c. $ onAddRange=c. $ onAddRange.bind(c),c. $ onRemoveRange=c. $ onRemoveRange.bind(c),c. $ onMultiSelect=c. $ onMultiSelect.bind(c),c. $ onSingleSelect=c. $ onSingleSelect.bind(c),c. $ multiselectOnSessionChange=E.onSessionChange.bind(c),c. $ checkMultiselectChange=c. $ checkMultiselectChange.bind(c),c. $ multiselectOnSessionChange(c),c.on("changeSession",c. $ multiselectOnSessionChange),c.on("mousedown",s),c.commands.addCommands(e.defaultCommands),v(c))}function v(c){var g=c.textInput.getElement(),l=!1;a.addListener(g,"keydown",function(y){var x=y.keyCode==18&&!(y.ctrlKey||y.shiftKey||y.metaKey);c. $ blockSelectEnabled&&x?l||(c.renderer.setMouseCursor("crosshair"),l=!0):l&&m()}),a.addListener(g,"keyup",m),a.addListener(g,"blur",m);function m(y){l&&(c.renderer.setMouseCursor(""),l=!1)}}E.MultiSelect=d,w("./config").defineOptions(u.prototype,"editor",{enableMultiselect:{set:function(c){d(this),c?(this.on("changeSession",this. $ multiselectOnSessionChange),this.on("mousedown",s)):(this.off("changeSession",this. $ multiselectOnSessionChange),this.off("mousedown",s))},value:!0},enableBlockSelect:{set:function(c){this. $ blockSelectEnabled=c},value:!0}})});ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(w,E,B){var T=w("../../range").Range,b=E.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(f,s,a){var n=f.getLine(a);return this.foldingStartMarker.test(n)?"start":s=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(f,s,a){return null},this.indentationBlock=function(f,s,a){var n=/ \S /,e=f.getLine
` :"ulULE".indexOf(m)!=-1&&(c={changeCase:m,local:m>"a"})),[c]}},{regex:/}/,onMatch:function(c,g,l){return[l.length?l.shift():c]}},{regex:/ \$ (?: \d +| \w +)/,onMatch:d},{regex:/ \$ \{ [ \d A-Z_a-z]+/,onMatch:function(c,g,l){var m=d(c.substr(1),g,l);return l.unshift(m[0]),m},next:"snippetVar"},{regex:/ \n /,token:"newline",merge:!1}],snippetVar:[{regex:" \\ |"+v(" \\ |")+"* \\ |",onMatch:function(c,g,l){l[0].choices=c.slice(1,-1).split(",")},next:"start"},{regex:"/("+v("/")+"+)/(?:("+v("/")+"*)/)( \\ w*):?",onMatch:function(c,g,l){var m=l[0];return m.fmtString=c,c=this.splitRegex.exec(c),m.guard=c[1],m.fmt=c[2],m.flag=c[3],""},next:"start"},{regex:" ` "+v(" ` ")+"* ` ",onMatch:function(c,g,l){return l[0].code=c.splice(1,-1)," "},next:" start "},{regex:" \ \ ? ",onMatch:function(c,g,l){l[0]&&(l[0].expectIf=!0)},next:" start "},{regex:" ( [ ^ : } \ \ \ \ ] | \ \ \ \ . ) * : ? ",token:" ",next:" start "}],formatString:[{regex:" / ( "+v(" / ")+" + ) / ",token:" regex "},{regex:" ",onMatch:function(c,g,l){l.inFormatString=!0},next:" start "}]}),t.prototype.getTokenizer=function(){return t.$tokenizer},t.$tokenizer},this.tokenizeTmSnippet=function(d,v){return this.getTokenizer().getLineTokens(d,v).tokens.map(function(c){return c.value||c})},this.$getDefaultValue=function(d,v){if(/^[A-Z]\d+$/.test(v)){var c=v.substr(1);return(this.variables[v[0]+" _ _ "]||{})[c]}if(/^\d+$/.test(v))return(this.variables.__||{})[v];if(v=v.replace(/^TM_/," "),!!d){var g=d.session;switch(v){case" CURRENT _WORD ":var l=g.getWordRange();case" SELECTION ":case" SELECTED _TEXT ":return g.getTextRange(l);case" CURRENT _LINE ":return g.getLine(d.getCursorPosition().row);case" PREV _LINE ":return g.getLine(d.getCursorPosition().row-1);case" LINE _INDEX ":return d.getCursorPosition().column;case" LINE _NUMBER ":return d.getCursorPosition().row+1;case" SOFT _TABS ":return g.getUseSoftTabs()?" YES ":" NO ";case" TAB _SIZE ":return g.getTabSize();case" FILENAME ":case" FILEPATH ":return" ";case" FULLNAME ":return" Ace "}}},this.variables={},this.getVariableValue=function(d,v){return this.variables.hasOwnProperty(v)?this.variables[v](d,v)||" ":this.$getDefaultValue(d,v)||" "},this.tmStrFormat=function(d,v,c){var g=v.flag||" ",l=v.guard;l=new RegExp(l,g.replace(/[^gi]/," "));var m=this.tokenizeTmSnippet(v.fmt," formatString "),y=this,x=d.replace(l,function(){y.variables.__=arguments;for(var p=y.resolveVariables(m,c),k=" E ",_=0;_<p.length;_++){var C=p[_];if(typeof C==" object ")if(p[_]=" ",C.changeCase&&C.local){var A=p[_+1];A&&typeof A==" string "&&(C.changeCase==" u "?p[_]=A[0].toUpperCase():p[_]=A[0].toLowerCase(),p[_+1]=A.substr(1))}else C.changeCase&&(k=C.changeCase);else k==" U "?p[_]=C.toUpperCase():k==" L "&&(p[_]=C.toLowerCase())}return p.join(" ")});return this.variables.__=null,x},this.resolveVariables=function(d,v){for(var c=[],g=0;g<d.length;g++){var l=d[g];if(typeof l==" string ")c.push(l);else{if(typeof l!=" object ")continue;if(l.skip)y(l);else{if(l.processed<g)continue;if(l.text){var m=this.getVariableValue(v,l.text);m&&l.fmtString&&(m=this.tmStrFormat(m,l)),l.processed=g,l.expectIf==null?m&&(c.push(m),y(l)):m?l.skip=l.elseBranch:y(l)}else(l.tabstopId!=null||l.changeCase!=null)&&c.push(l)}}}function y(x){var p=d.indexOf(x,g+1);p!=-1&&(g=p)}return c},this.insertSnippetForSelection=function(d,v){var c=d.getCursorPosition(),g=d.session.getLine(c.row),l=d.session.getTabString(),m=g.match(/^\s*/)[0];c.column<m.length&&(m=m.slice(0,c.column)),v=v.replace(/\r/g," " ) ; var y = this . tokenizeTmSnippet ( v ) ; y = this . resolveVariables ( y , d ) , y = y . map ( function ( $ ) { return $ == `
` ? $ +m:typeof $ =="string"? $ .replace(/ \t /g,l): $ });var x=[];y.forEach(function( $ ,N){if(typeof $ =="object"){var P= $ .tabstopId,z=x[P];if(z||(z=x[P]=[],z.index=P,z.value=""),z.indexOf( $ )===-1){z.push( $ );var M=y.indexOf( $ ,N+1);if(M!==-1){var V=y.slice(N+1,M),G=V.some(function(X){return typeof X=="object"});G&&!z.value?z.value=V:V.length&&(!z.value||typeof z.value!="string")&&(z.value=V.join(""))}}}}),x.forEach(function( $ ){ $ .length=0});var p={};function k( $ ){for(var N=[],P=0;P< $ .length;P++){var z= $ [P];if(typeof z=="object"){if(p[z.tabstopId])continue;var M= $ .lastIndexOf(z,P-1);z=N[M]||{tabstopId:z.tabstopId}}N[P]=z}return N}for(var _=0;_<y.length;_++){var C=y[_];if(typeof C=="object"){var A=C.tabstopId,F=y.indexOf(C,_+1);if(p[A]){p[A]===C&&(p[A]=null);continue}var L=x[A],O=typeof L.value=="string"?[L.value]:k(L.value);O.unshift(_+1,Math.max(0,F-_)),O.push(C),p[A]=C,y.splice.apply(y,O),L.indexOf(C)===-1&&L.push(C)}}var I=0,j=0,W="";y.forEach(function( $ ){if(typeof $ =="string"){var N= $ .split( `
` );N.length>1?(j=N[N.length-1].length,I+=N.length-1):j+= $ .length,W+= $ }else $ .start? $ .end={row:I,column:j}: $ .start={row:I,column:j}});var H=d.getSelectionRange(),D=d.session.replace(H,W),S=new r(d),R=d.inVirtualSelectionMode&&d.selection.index;S.addTabstops(x,H.start,D,R)},this.insertSnippet=function(d,v){var c=this;if(d.inVirtualSelectionMode)return c.insertSnippetForSelection(d,v);d.forEachSelection(function(){c.insertSnippetForSelection(d,v)},null,{keepOrder:!0}),d.tabstopManager&&d.tabstopManager.tabNext()},this. $ getScope=function(d){var v=d.session. $ mode. $ id||"";if(v=v.split("/").pop(),v==="html"||v==="php"){v==="php"&&!d.session. $ mode.inlinePhp&&(v="html");var c=d.getCursorPosition(),g=d.session.getState(c.row);typeof g=="object"&&(g=g[0]),g.substring&&(g.substring(0,3)=="js-"?v="javascript":g.substring(0,4)=="css-"?v="css":g.substring(0,4)=="php-"&&(v="php"))}return v},this.getActiveScopes=function(d){var v=this. $ getScope(d),c=[v],g=this.snippetMap;return g[v]&&g[v].includeScopes&&c.push.apply(c,g[v].includeScopes),c.push("_"),c},this.expandWithTab=function(d,v){var c=this,g=d.forEachSelection(function(){return c.expandSnippetForSelection(d,v)},null,{keepOrder:!0});return g&&d.tabstopManager&&d.tabstopManager.tabNext(),g},this.expandSnippetForSelection=function(d,v){var c=d.getCursorPosition(),g=d.session.getLine(c.row),l=g.substring(0,c.column),m=g.substr(c.column),y=this.snippetMap,x;return this.getActiveScopes(d).some(function(p){var k=y[p];return k&&(x=this.findMatchingSnippet(k,l,m)),!!x},this),x?(v&&v.dryRun||(d.session.doc.removeInLine(c.row,c.column-x.replaceBefore.length,c.column+x.replaceAfter.length),this.variables.M__=x.matchBefore,this.variables.T__=x.matchAfter,this.insertSnippetForSelection(d,x.content),this.variables.M__=this.variables.T__=null),!0):!1},this.findMatchingSnippet=function(d,v,c){for(var g=d.length;g--;){var l=d[g];if(!(l.startRe&&!l.startRe.test(v))&&!(l.endRe&&!l.endRe.test(c))&&!(!l.startRe&&!l.endRe))return l.matchBefore=l.startRe?l.startRe.exec(v):[""],l.matchAfter=l.endRe?l.endRe.exec(c):[""],l.replaceBefore=l.triggerRe?l.triggerRe.exec(v)[0]:"",l.replaceAfter=l.endTriggerRe?l.endTriggerRe.exec(c)[0]:"",l}},this.snippetMap={},this.snippetNameMap={},this.register=function(d,v){var c=this.snippetMap,g=this.snippetNameMap,l=this;d||(d=[]);function m(p){return p&&!/^ \^ ? \( .* \) \$ ? $ |^ \\ b $ /.test(p)&&(p="(?:"+p+")"),p||""}function y(p,k,_){return p=m(p),k=m(k),_?(p=k+p,p&&p[p.length-1]!=" $ "&&(p=p+" $ ")):(p=p+k,p&&p[0]!="^"&&(p="^"+p)),new RegExp(p)}function x(p){p.scope||(p.scope=v||"_"),v=p.scope,c[v]||(c[v]=[],g[v]={});var k=g[v];if(p.name){var _=k[p.name];_&&l.unregister(_),k[p.name]=p}c[v].push(p),p.tabTrigger&&!p.trigger&&(!p.guard&&/^ \w /.test(p.tabTrigger)&&(p.guard=" \\ b"),p.trigger=f.escapeRegExp(p.tabTrigger)),!(!p.trigger&&!p.guard&&!p.endTrigger&&!p.endGuard)&&(p.startRe=y(p.trigger,p.guard,!0),p.triggerRe=new RegExp(p.trigger,"",!0),p.endRe=y(p.endTrigger,p.endGuard,!0),p.endTriggerRe=new RegExp(p.endTrigger,"",!0))}d&&d.content?x(d):Array.isArray(d)&&d.forEach(x),this._signal("registerSnippets",{scope:v})},this.unregister=function(d,v){var c=this.snippetMap,g=this.snippetNameMap;function l(m){var y=g[m.scope||v];if(y&&y[m.name]){delete y[m.name];var x=c[m.scope||v],p=x&&x.indexOf(m);p>=0&&x.splice(p,1)}}d.content?l(d):Array.isArray(d)&&d.forEach(l)},this.parseSnippetFile=function(d){d=d.replace(/ \r /g,"");for(var v=[],c={},g=/^#.*|^({[ \s \S ]*}) \s * $ |^( \S +) (.*) $ |^((?: \n * \t .*)+)/gm,l;l=g.exec(d);){if(l[1])try{c=JSON.parse(l[1]),v.push(c)}catch{}if(l[4])c.content=l[4].replace(/^ \t /gm,""),v.push(c),c={};else{var m=l[2],y=l[3];if(m=="regex"){var x=/ \/ ((?:[^ \/ \\ ]| \\ .)*)| $ /g;c.guard=x.exec(y)[1],c.trigger=x.exec(y)[1],c.endTrigger=x.exec(y)[1],c.endGuard=x.exec(y)[1]}else m=="snippet"?(c.tabTrigger=y.match(/^ \S */)[0],c.name||(c.name=y)):c[m]=y}}return v},this.getSnippetByName=function(d,v){var c=this.snippetNameMap,g;return this.getActiveScopes(v).some(function(l){var m=c[l];return m&&(g=m[d]),!!g},this),g}}).call(t.prototype);var r=function(d){if(d.tabstopManager)return d.tabstopManag
` ,m.length),-1),o.data=m||[],o.setRow(0)},o.getData=function(m){return o.data[m]},o.getRow=function(){return v.start.row},o.setRow=function(m){m=Math.max(this.autoSelect?0:-1,Math.min(this.data.length,m)),v.start.row!=m&&(o.selection.clearSelection(),v.start.row=v.end.row=m||0,o.session._emit("changeBackMarker"),o.moveCursorTo(m||0,0),o.isOpen&&o._signal("select"))},o.on("changeSelection",function(){o.isOpen&&o.setRow(o.selection.lead.row),o.renderer.scrollCursorIntoView()}),o.hide=function(){this.container.style.display="none",this._signal("hide"),o.isOpen=!1},o.show=function(m,y,x){var p=this.container,k=window.innerHeight,_=window.innerWidth,C=this.renderer,A=C. $ maxLines*y*1.4,F=m.top+this. $ borderSize,L=F>k/2&&!x;L&&F+y+A>k?(C. $ maxPixelHeight=F-2*this. $ borderSize,p.style.top="",p.style.bottom=k-F+"px",o.isTopdown=!1):(F+=y,C. $ maxPixelHeight=k-F-.2*y,p.style.top=F+"px",p.style.bottom="",o.isTopdown=!0),p.style.display="",this.renderer. $ textLayer.checkForSizeChanges();var O=m.left;O+p.offsetWidth>_&&(O=_-p.offsetWidth),p.style.left=O+"px",this._signal("show"),h=null,o.isOpen=!0},o.getTextLeftOffset=function(){return this. $ borderSize+this.renderer. $ padding+this. $ imageSize},o. $ imageSize=0,o. $ borderSize=1,o};n.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_editor.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_editor.ace_autocomplete .ace_scroller { background: none; border: none; box-shadow: none;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_editor.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),E.AcePopup=i});ace.define("ace/autocomplete/util",["require","exports","module"],function(w,E,B){E.parForEach=function(b,f,s){var a=0,n=b.length;n===0&&s();for(var e=0;e<n;e++)f(b[e],function(i,t){a++,a===n&&s(i,t)})};var T=/[a-zA-Z_0-9 \$ \- \u 00A2- \u FFFF]/;E.retrievePrecedingIdentifier=function(b,f,s){s=s||T;for(var a=[],n=f-1;n>=0&&s.test(b[n]);n--)a.push(b[n]);return a.reverse().join("")},E.retrieveFollowingIdentifier=function(b,f,s){s=s||T;for(var a=[],n=f;n<b.length&&s.test(b[n]);n++)a.push(b[n]);return a},E.getCompletionPrefix=function(b){var f=b.getCursorPosition(),s=b.session.getLine(f.row),a;return b.completers.forEach(function(n){n.identifierRegexps&&n.identifierRegexps.forEach(function(e){!a&&e&&(a=this.retrievePrecedingIdentifier(s,f.column,e))}.bind(this))}.bind(this)),a||this.retrievePrecedingIdentifier(s,f.column)}});ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"],function(w,E,B){var T=w("./keyboard/hash_handler").HashHandler,b=w("./autocomplete/popup").AcePopup,f=w("./autocomplete/util");w("./lib/event");var s=w("./lib/lang"),a=w("./lib/dom"),n=w("./snippets").snippetManager,e=function(){this.autoInsert=!1,this.autoSelect=!0,this.exactMatch=!1,this.gatherCompletionsId=0,this.keyboardHandler=new T,this.keyboardHandler.bindKeys(this.commands),this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.mousedownListener=this.mousedownListener.bind(this),this.mousewheelListener=this.mousewheelListener.bind(this),this.changeTimer=s.delayedCall(function(){this.updateCompletions(!0)}.bind(this)),this.tooltipTimer=s.delayedCall(this.updateDocTooltip.bind(this),50)};(function(){this. $ init=function(){return this.popup=new b(document.body||document.documentElement),this.popup.on("click",function(t){this.insertMatch(),t.sto
} ( ) ) { var array _splice = Array . prototype . splice ; Array . prototype . splice = function ( start , deleteCount ) { return arguments . length ? array _splice . apply ( this , [ void 0 === start ? 0 : start , void 0 === deleteCount ? this . length - start : deleteCount ] . concat ( slice . call ( arguments , 2 ) ) ) : [ ] } } else Array . prototype . splice = function ( pos , removeCount ) { var length = this . length ; pos > 0 ? pos > length && ( pos = length ) : void 0 == pos ? pos = 0 : 0 > pos && ( pos = Math . max ( length + pos , 0 ) ) , length > pos + removeCount || ( removeCount = length - pos ) ; var removed = this . slice ( pos , pos + removeCount ) , insert = slice . call ( arguments , 2 ) , add = insert . length ; if ( pos === length ) add && this . push . apply ( this , insert ) ; else { var remove = Math . min ( removeCount , length - pos ) , tailOldPos = pos + remove , tailNewPos = tailOldPos + add - remove , tailCount = length - tailOldPos , lengthAfterRemove = length - remove ; if ( tailOldPos > tailNewPos ) for ( var i = 0 ; tailCount > i ; ++ i ) this [ tailNewPos + i ] = this [ tailOldPos + i ] ; else if ( tailNewPos > tailOldPos ) for ( i = tailCount ; i -- ; ) this [ tailNewPos + i ] = this [ tailOldPos + i ] ; if ( add && pos === lengthAfterRemove ) this . length = lengthAfterRemove , this . push . apply ( this , insert ) ; else for ( this . length = lengthAfterRemove + add , i = 0 ; add > i ; ++ i ) this [ pos + i ] = insert [ i ] } return removed } ; Array . isArray || ( Array . isArray = function ( obj ) { return "[object Array]" == _toString ( obj ) } ) ; var boxedString = Object ( "a" ) , splitString = "a" != boxedString [ 0 ] || ! ( 0 in boxedString ) ; if ( Array . prototype . forEach || ( Array . prototype . forEach = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , thisp = arguments [ 1 ] , i = - 1 , length = self . length >>> 0 ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ; for ( ; length > ++ i ; ) i in self && fun . call ( thisp , self [ i ] , i , object ) } ) , Array . prototype . map || ( Array . prototype . map = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 , result = Array ( length ) , thisp = arguments [ 1 ] ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; for ( var i = 0 ; length > i ; i ++ ) i in self && ( result [ i ] = fun . call ( thisp , self [ i ] , i , object ) ) ; return result } ) , Array . prototype . filter || ( Array . prototype . filter = function ( fun ) { var value , object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 , result = [ ] , thisp = arguments [ 1 ] ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; for ( var i = 0 ; length > i ; i ++ ) i in self && ( value = self [ i ] , fun . call ( thisp , value , i , object ) && result . push ( value ) ) ; return result } ) , Array . prototype . every || ( Array . prototype . every = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 , thisp = arguments [ 1 ] ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; for ( var i = 0 ; length > i ; i ++ ) if ( i in self && ! fun . call ( thisp , self [ i ] , i , object ) ) return ! 1 ; return ! 0 } ) , Array . prototype . some || ( Array . prototype . some = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 , thisp = arguments [ 1 ] ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; for ( var i = 0 ; length > i ; i ++ ) if ( i in self && fun . call ( thisp , self [ i ] , i , object ) ) return ! 0 ; return ! 1 } ) , Array . prototype . reduce || ( Array . prototype . reduce = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; if ( ! length && 1 == arguments . length ) throw new TypeError ( "reduce of empty array with no initial value" ) ; var result , i = 0 ; if ( arguments . length >= 2 ) result = arguments [ 1 ] ; else for ( ; ; ) { if ( i in self ) { result = self [ i ++ ] ; break } if ( ++ i >= length ) throw new TypeError ( "reduce of empty array with no initial value" ) } for ( ; length > i ; i ++ ) i in self && ( result = fun . call ( void 0 , result , self [ i ] , i , object ) ) ; return result } ) , Array . prototype . reduceRight || ( Array . prototype . reduceRight = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 ; if ( " [ object Fu
break ; case S _E : errorHandler . warning ( 'attribute space is acequired"' + attrName + '"!!' ) ; case S _S : s = S _ATTR , start = p ; break ; case S _EQ : s = S _V , start = p ; break ; case S _C : throw Error ( "elements closed character '/' and '>' must be connected to" ) } } p ++ } } function appendElement ( el , domBuilder , parseStack ) { for ( var tagName = el . tagName , localNSMap = null , currentNSMap = parseStack [ parseStack . length - 1 ] . currentNSMap , i = el . length ; i -- ; ) { var a = el [ i ] , qName = a . qName , value = a . value , nsp = qName . indexOf ( ":" ) ; if ( nsp > 0 ) var prefix = a . prefix = qName . slice ( 0 , nsp ) , localName = qName . slice ( nsp + 1 ) , nsPrefix = "xmlns" === prefix && localName ; else localName = qName , prefix = null , nsPrefix = "xmlns" === qName && "" ; a . localName = localName , nsPrefix !== ! 1 && ( null == localNSMap && ( localNSMap = { } , _copy ( currentNSMap , currentNSMap = { } ) ) , currentNSMap [ nsPrefix ] = localNSMap [ nsPrefix ] = value , a . uri = "http://www.w3.org/2000/xmlns/" , domBuilder . startPrefixMapping ( nsPrefix , value ) ) } for ( var i = el . length ; i -- ; ) { a = el [ i ] ; var prefix = a . prefix ; prefix && ( "xml" === prefix && ( a . uri = "http://www.w3.org/XML/1998/namespace" ) , "xmlns" !== prefix && ( a . uri = currentNSMap [ prefix ] ) ) } var nsp = tagName . indexOf ( ":" ) ; nsp > 0 ? ( prefix = el . prefix = tagName . slice ( 0 , nsp ) , localName = el . localName = tagName . slice ( nsp + 1 ) ) : ( prefix = null , localName = el . localName = tagName ) ; var ns = el . uri = currentNSMap [ prefix || "" ] ; if ( domBuilder . startElement ( ns , localName , tagName , el ) , el . closed ) { if ( domBuilder . endElement ( ns , localName , tagName ) , localNSMap ) for ( prefix in localNSMap ) domBuilder . endPrefixMapping ( prefix ) } else el . currentNSMap = currentNSMap , el . localNSMap = localNSMap , parseStack . push ( el ) } function parseHtmlSpecialContent ( source , elStartEnd , tagName , entityReplacer , domBuilder ) { if ( /^(?:script|textarea)$/i . test ( tagName ) ) { var elEndStart = source . indexOf ( "</" + tagName + ">" , elStartEnd ) , text = source . substring ( elStartEnd + 1 , elEndStart ) ; if ( /[&<]/ . test ( text ) ) return /^script$/i . test ( tagName ) ? ( domBuilder . characters ( text , 0 , text . length ) , elEndStart ) : ( text = text . replace ( /&#?\\w+;/g , entityReplacer ) , domBuilder . characters ( text , 0 , text . length ) , elEndStart ) } return elStartEnd + 1 } function fixSelfClosed ( source , elStartEnd , tagName , closeMap ) { var pos = closeMap [ tagName ] ; return null == pos && ( pos = closeMap [ tagName ] = source . lastIndexOf ( "</" + tagName + ">" ) ) , elStartEnd > pos } function _copy ( source , target ) { for ( var n in source ) target [ n ] = source [ n ] } function parseDCC ( source , start , domBuilder , errorHandler ) { var next = source . charAt ( start + 2 ) ; switch ( next ) { case "-" : if ( "-" === source . charAt ( start + 3 ) ) { var end = source . indexOf ( "-->" , start + 4 ) ; return end > start ? ( domBuilder . comment ( source , start + 4 , end - start - 4 ) , end + 3 ) : ( errorHandler . error ( "Unclosed comment" ) , - 1 ) } return - 1 ; default : if ( "CDATA[" == source . substr ( start + 3 , 6 ) ) { var end = source . indexOf ( "]]>" , start + 9 ) ; return domBuilder . startCDATA ( ) , domBuilder . characters ( source , start + 9 , end - start - 9 ) , domBuilder . endCDATA ( ) , end + 3 } var matchs = split ( source , start ) , len = matchs . length ; if ( len > 1 && /!doctype/i . test ( matchs [ 0 ] [ 0 ] ) ) { var name = matchs [ 1 ] [ 0 ] , pubid = len > 3 && /^public$/i . test ( matchs [ 2 ] [ 0 ] ) && matchs [ 3 ] [ 0 ] , sysid = len > 4 && matchs [ 4 ] [ 0 ] , lastMatch = matchs [ len - 1 ] ; return domBuilder . startDTD ( name , pubid && pubid . replace ( /^(['"])(.*?)\\1$/ , "$2" ) , sysid && sysid . replace ( /^(['"])(.*?)\\1$/ , "$2" ) ) , domBuilder . endDTD ( ) , lastMatch . index + lastMatch [ 0 ] . length } } return - 1 } function parseInstruction ( source , start , domBuilder ) { var end = source . indexOf ( "?>" , start ) ; if ( end ) { var match = source . substring ( start , end ) . match ( /^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/ ) ; return match ? ( match [ 0 ] . length , domBuilder . processingInstruction ( match [ 1 ] , match [ 2 ] ) , end + 2 ) : - 1 } return - 1 } function ElementAttributes ( ) { } function _set _proto _ ( thiz , parent ) { return thiz . _ _proto _ _ = parent , thiz } function split ( source , start ) { var match , buf = [ ] , reg = /'[^']+'|"[^"]+"|[^\\s<>\\/=]+=?|(\\/ ? \ \ s * > | < ) / g ; for ( reg . lastIndex = start , reg . exec ( source ) ; match = reg . exec ( source ) ; ) if ( buf . push ( match ) , match [ 1 ] ) return buf } var nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/ , nameChar = RegExp ( "[\\\\-\\\\.0-9" + nameStartChar . source . slice ( 1 , - 1 ) + "\xB7\u0300-\u036F\\\\ux203F-\u2040]" ) , tagNamePattern = RegExp ( "^" + nameStartChar . source + nameChar . source + "*(?::" + nameStart
} catch ( exception ) { } } function toInteger ( n ) { return n = + n , n !== n ? n = 0 : 0 !== n && n !== 1 / 0 && n !== - ( 1 / 0 ) && ( n = ( n > 0 || - 1 ) * Math . floor ( Math . abs ( n ) ) ) , n } Function . prototype . bind || ( Function . prototype . bind = function ( that ) { var target = this ; if ( "function" != typeof target ) throw new TypeError ( "Function.prototype.bind called on incompatible " + target ) ; var args = slice . call ( arguments , 1 ) , bound = function ( ) { if ( this instanceof bound ) { var result = target . apply ( this , args . concat ( slice . call ( arguments ) ) ) ; return Object ( result ) === result ? result : this } return target . apply ( that , args . concat ( slice . call ( arguments ) ) ) } ; return target . prototype && ( Empty . prototype = target . prototype , bound . prototype = new Empty , Empty . prototype = null ) , bound } ) ; var defineGetter , defineSetter , lookupGetter , lookupSetter , supportsAccessors , call = Function . prototype . call , prototypeOfArray = Array . prototype , prototypeOfObject = Object . prototype , slice = prototypeOfArray . slice , _toString = call . bind ( prototypeOfObject . toString ) , owns = call . bind ( prototypeOfObject . hasOwnProperty ) ; if ( ( supportsAccessors = owns ( prototypeOfObject , "__defineGetter__" ) ) && ( defineGetter = call . bind ( prototypeOfObject . _ _defineGetter _ _ ) , defineSetter = call . bind ( prototypeOfObject . _ _defineSetter _ _ ) , lookupGetter = call . bind ( prototypeOfObject . _ _lookupGetter _ _ ) , lookupSetter = call . bind ( prototypeOfObject . _ _lookupSetter _ _ ) ) , 2 != [ 1 , 2 ] . splice ( 0 ) . length ) if ( function ( ) { function makeArray ( l ) { var a = Array ( l + 2 ) ; return a [ 0 ] = a [ 1 ] = 0 , a } var lengthBefore , array = [ ] ; return array . splice . apply ( array , makeArray ( 20 ) ) , array . splice . apply ( array , makeArray ( 26 ) ) , lengthBefore = array . length , array . splice ( 5 , 0 , "XXX" ) , lengthBefore + 1 == array . length , lengthBefore + 1 == array . length ? ! 0 : void 0 } ( ) ) { var array _splice = Array . prototype . splice ; Array . prototype . splice = function ( start , deleteCount ) { return arguments . length ? array _splice . apply ( this , [ void 0 === start ? 0 : start , void 0 === deleteCount ? this . length - start : deleteCount ] . concat ( slice . call ( arguments , 2 ) ) ) : [ ] } } else Array . prototype . splice = function ( pos , removeCount ) { var length = this . length ; pos > 0 ? pos > length && ( pos = length ) : void 0 == pos ? pos = 0 : 0 > pos && ( pos = Math . max ( length + pos , 0 ) ) , length > pos + removeCount || ( removeCount = length - pos ) ; var removed = this . slice ( pos , pos + removeCount ) , insert = slice . call ( arguments , 2 ) , add = insert . length ; if ( pos === length ) add && this . push . apply ( this , insert ) ; else { var remove = Math . min ( removeCount , length - pos ) , tailOldPos = pos + remove , tailNewPos = tailOldPos + add - remove , tailCount = length - tailOldPos , lengthAfterRemove = length - remove ; if ( tailOldPos > tailNewPos ) for ( var i = 0 ; tailCount > i ; ++ i ) this [ tailNewPos + i ] = this [ tailOldPos + i ] ; else if ( tailNewPos > tailOldPos ) for ( i = tailCount ; i -- ; ) this [ tailNewPos + i ] = this [ tailOldPos + i ] ; if ( add && pos === lengthAfterRemove ) this . length = lengthAfterRemove , this . push . apply ( this , insert ) ; else for ( this . length = lengthAfterRemove + add , i = 0 ; add > i ; ++ i ) this [ pos + i ] = insert [ i ] } return removed } ; Array . isArray || ( Array . isArray = function ( obj ) { return "[object Array]" == _toString ( obj ) } ) ; var boxedString = Object ( "a" ) , splitString = "a" != boxedString [ 0 ] || ! ( 0 in boxedString ) ; if ( Array . prototype . forEach || ( Array . prototype . forEach = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , thisp = arguments [ 1 ] , i = - 1 , length = self . length >>> 0 ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ; for ( ; length > ++ i ; ) i in self && fun . call ( thisp , self [ i ] , i , object ) } ) , Array . prototype . map || ( Array . prototype . map = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 , result = Array ( length ) , thisp = arguments [ 1 ] ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; for ( var i = 0 ; length > i ; i ++ ) i in self && ( result [ i ] = fun . call ( thisp , self [ i ] , i , object ) ) ; return result } ) , Array . prototype . filter || ( Array . prototype . filter = function ( fun ) { var value , object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , length = self . length >>> 0 , result = [ ] , thisp = arguments [ 1 ] ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ( fun + " is not a function" ) ; for ( var i = 0 ; length > i ; i ++ ) i in self && ( value = self [ i ] , fun . call ( thisp , value , i , object ) && result . push ( value ) ) ; return result } ) , Array . proto
` ){var o=i.getCursorPosition(),u=t.getLine(o.row),h=new f(t,o.row,o.column),d=h.getCurrentToken();if(d&&d.type.indexOf("tag-close")!==-1){if(d.value=="/>")return;for(;d&&d.type.indexOf("tag-name")===-1;)d=h.stepBackward();if(!d)return;var v=d.value,c=h.getCurrentTokenRow();if(d=h.stepBackward(),!d||d.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[v]){var g=t.getTokenAt(o.row,o.column+1),u=t.getLine(c),l=this. $ getIndent(u),m=l+t.getTabString();return g&&g.value==="</"?{text: `
` +m+ `
` +l,selection:[1,m.length,1,m.length]}:{text: `
` +m}}}}})};T.inherits(a,b),E.XmlBehaviour=a});ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(w,E,B){var T=w("../../lib/oop");w("../../lib/lang");var b=w("../../range").Range,f=w("./fold_mode").FoldMode,s=w("../../token_iterator").TokenIterator,a=E.FoldMode=function(i,t){f.call(this),this.voidElements=i||{},this.optionalEndTags=T.mixin({},this.voidElements),t&&T.mixin(this.optionalEndTags,t)};T.inherits(a,f);var n=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};function e(i,t){return i.type.lastIndexOf(t+".xml")>-1}(function(){this.getFoldWidget=function(i,t,r){var o=this._getFirstTagInLine(i,r);return o?o.closing||!o.tagName&&o.selfClosing?t=="markbeginend"?"end":"":!o.tagName||o.selfClosing||this.voidElements.hasOwnProperty(o.tagName.toLowerCase())||this._findEndTagInLine(i,r,o.tagName,o.end.column)?"":"start":this.getCommentFoldWidget(i,r)},this.getCommentFoldWidget=function(i,t){return/comment/.test(i.getState(t))&&/<!-/.test(i.getLine(t))?"start":""},this._getFirstTagInLine=function(i,t){for(var r=i.getTokens(t),o=new n,u=0;u<r.length;u++){var h=r[u];if(e(h,"tag-open")){if(o.end.column=o.start.column+h.value.length,o.closing=e(h,"end-tag-open"),h=r[++u],!h)return null;for(o.tagName=h.value,o.end.column+=h.value.length,u++;u<r.length;u++)if(h=r[u],o.end.column+=h.value.length,e(h,"tag-close")){o.selfClosing=h.value=="/>";break}return o}else if(e(h,"tag-close"))return o.selfClosing=h.value=="/>",o;o.start.column+=h.value.length}return null},this._findEndTagInLine=function(i,t,r,o){for(var u=i.getTokens(t),h=0,d=0;d<u.length;d++){var v=u[d];if(h+=v.value.length,!(h<o)&&e(v,"end-tag-open")&&(v=u[d+1],v&&v.value==r))return!0}return!1},this._readTagForward=function(i){var t=i.getCurrentToken();if(!t)return null;var r=new n;do if(e(t,"tag-open"))r.closing=e(t,"end-tag-open"),r.start.row=i.getCurrentTokenRow(),r.start.column=i.getCurrentTokenColumn();else if(e(t,"tag-name"))r.tagName=t.value;else if(e(t,"tag-close"))return r.selfClosing=t.value=="/>",r.end.row=i.getCurrentTokenRow(),r.end.column=i.getCurrentTokenColumn()+t.value.length,i.stepForward(),r;while(t=i.stepForward());return null},this._readTagBackward=function(i){var t=i.getCurrentToken();if(!t)return null;var r=new n;do{if(e(t,"tag-open"))return r.closing=e(t,"end-tag-open"),r.start.row=i.getCurrentTokenRow(),r.start.column=i.getCurrentTokenColumn(),i.stepBackward(),r;e(t,"tag-name")?r.tagName=t.value:e(t,"tag-close")&&(r.selfClosing=t.value=="/>",r.end.row=i.getCurrentTokenRow(),r.end.column=i.getCurrentTokenColumn()+t.value.length)}while(t=i.stepBackward());return null},this._pop=function(i,t){for(;i.length;){var r=i[i.length-1];if(!t||r.tagName==t.tagName)return i.pop();if(this.optionalEndTags.hasOwnProperty(r.tagName)){i.pop();continue}else return null}},this.getFoldWidgetRange=function(i,t,r){var o=this._getFirstTagInLine(i,r);if(!o)return this.getCommentFoldWidget(i,r)&&i.getCommentFoldRange(r,i.getLine(r).length);var u=o.closing||o.selfClosing,h=[],d;if(u)for(var v=new s(i,r,o.end.column),g={row:r,column:o.start.column};d=this._readTagBackward(v);){if(d.selfClosing){if(h.length)continue;return d.start.column+=d.tagName.length+2,d.end.column-=2,b.fromPoints(d.start,d.end)}if(d.closing)h.push(d);else if(this._pop(h,d),h.length==0)return d.start.column+=d.tagName.length+2,d.start.row==d.end.row&&d.start.column<d.end.column&&(d.start.column=d.end.column),b.fromPoints(d.start,g)}else{var v=new s(i,r,o.start.column),c={row:r,column:o.start.column+o.tagName.length+2};for(o.start.row==o.end.row&&(c.column=o.end.column);d=this._readTagForward(v);){if(d.selfClosing){if(h.length)continue;return d.start.column+=d.tagName.length+2,d.end.column-=2,b.fromPoints(d.start,d.end)}if(d.closing){if(this._pop(h,d),h.length==0)return b.fromPoints(c,d.start)}else h.push(d)}}}}).call(a.prototype)});ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/tex
} if ( listeners = this . _events [ type ] , isFunction ( listeners ) ) this . removeListener ( type , listeners ) ; else for ( ; listeners . length ; ) this . removeListener ( type , listeners [ listeners . length - 1 ] ) ; return delete this . _events [ type ] , this } , EventEmitter . prototype . listeners = function ( type ) { var ret ; return ret = this . _events && this . _events [ type ] ? isFunction ( this . _events [ type ] ) ? [ this . _events [ type ] ] : this . _events [ type ] . slice ( ) : [ ] } , EventEmitter . listenerCount = function ( emitter , type ) { var ret ; return ret = emitter . _events && emitter . _events [ type ] ? isFunction ( emitter . _events [ type ] ) ? 1 : emitter . _events [ type ] . length : 0 } } , { } ] , "/node_modules/jshint/data/ascii-identifier-data.js" : [ function ( _dereq _ , module ) { for ( var identifierStartTable = [ ] , i = 0 ; 128 > i ; i ++ ) identifierStartTable [ i ] = 36 === i || i >= 65 && 90 >= i || 95 === i || i >= 97 && 122 >= i ; for ( var identifierPartTable = [ ] , i = 0 ; 128 > i ; i ++ ) identifierPartTable [ i ] = identifierStartTable [ i ] || i >= 48 && 57 >= i ; module . exports = { asciiIdentifierStartTable : identifierStartTable , asciiIdentifierPartTable : identifierPartTable } } , { } ] , "/node_modules/jshint/lodash.js" : [ function ( _dereq _ , module , exports ) { ( function ( global ) { ( function ( ) { function baseFindIndex ( array , predicate , fromRight ) { for ( var length = array . length , index = fromRight ? length : - 1 ; fromRight ? index -- : length > ++ index ; ) if ( predicate ( array [ index ] , index , array ) ) return index ; return - 1 } function baseIndexOf ( array , value , fromIndex ) { if ( value !== value ) return indexOfNaN ( array , fromIndex ) ; for ( var index = fromIndex - 1 , length = array . length ; length > ++ index ; ) if ( array [ index ] === value ) return index ; return - 1 } function baseIsFunction ( value ) { return "function" == typeof value || ! 1 } function baseToString ( value ) { return "string" == typeof value ? value : null == value ? "" : value + "" } function indexOfNaN ( array , fromIndex , fromRight ) { for ( var length = array . length , index = fromIndex + ( fromRight ? 0 : - 1 ) ; fromRight ? index -- : length > ++ index ; ) { var other = array [ index ] ; if ( other !== other ) return index } return - 1 } function isObjectLike ( value ) { return ! ! value && "object" == typeof value } function lodash ( ) { } function arrayCopy ( source , array ) { var index = - 1 , length = source . length ; for ( array || ( array = Array ( length ) ) ; length > ++ index ; ) array [ index ] = source [ index ] ; return array } function arrayEach ( array , iteratee ) { for ( var index = - 1 , length = array . length ; length > ++ index && iteratee ( array [ index ] , index , array ) !== ! 1 ; ) ; return array } function arrayFilter ( array , predicate ) { for ( var index = - 1 , length = array . length , resIndex = - 1 , result = [ ] ; length > ++ index ; ) { var value = array [ index ] ; predicate ( value , index , array ) && ( result [ ++ resIndex ] = value ) } return result } function arrayMap ( array , iteratee ) { for ( var index = - 1 , length = array . length , result = Array ( length ) ; length > ++ index ; ) result [ index ] = iteratee ( array [ index ] , index , array ) ; return result } function arrayMax ( array ) { for ( var index = - 1 , length = array . length , result = NEGATIVE _INFINITY ; length > ++ index ; ) { var value = array [ index ] ; value > result && ( result = value ) } return result } function arraySome ( array , predicate ) { for ( var index = - 1 , length = array . length ; length > ++ index ; ) if ( predicate ( array [ index ] , index , array ) ) return ! 0 ; return ! 1 } function assignWith ( object , source , customizer ) { var props = keys ( source ) ; push . apply ( props , getSymbols ( source ) ) ; for ( var index = - 1 , length = props . length ; length > ++ index ; ) { var key = props [ index ] , value = object [ key ] , result = customizer ( value , source [ key ] , key , object , source ) ; ( result === result ? result === value : value !== value ) && ( value !== undefined || key in object ) || ( object [ key ] = result ) } return object } function baseCopy ( source , props , object ) { object || ( object = { } ) ; for ( var index = - 1 , length = props . length ; length > ++ index ; ) { var key = props [ index ] ; object [ key ] = source [ key ] } return object } function baseCallback ( func , thisArg , argCount ) { var type = typeof func ; return "function" == type ? thisArg === undefined ? func : bindCallback ( func , thisArg , argCount ) : null == func ? identity : "object" == type ? baseMatches ( func ) : thisArg === undefined ? property ( func ) : baseMatchesProperty ( func , thisArg ) } function baseClone ( value , isDeep , customizer , key , object , stackA , stackB ) { var result ; if ( customizer && ( result = object ? customizer ( value , key , object ) : customizer ( value ) ) , result !== undefined ) return result ; if ( ! isObject ( value ) ) return value ; var isArr = isArray ( value ) ; if ( isArr ) { if ( result = initCloneArray ( value ) , ! isDeep ) return arrayCopy ( value , result ) } else { var tag = objTo
} ) . call ( this ) } ) . call ( this , "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } ) } , { } ] , "/node_modules/jshint/src/jshint.js" : [ function ( _dereq _ , module , exports ) { var _ = _dereq _ ( "../lodash" ) , events = _dereq _ ( "events" ) , vars = _dereq _ ( "./vars.js" ) , messages = _dereq _ ( "./messages.js" ) , Lexer = _dereq _ ( "./lex.js" ) . Lexer , reg = _dereq _ ( "./reg.js" ) , state = _dereq _ ( "./state.js" ) . state , style = _dereq _ ( "./style.js" ) , options = _dereq _ ( "./options.js" ) , scopeManager = _dereq _ ( "./scope-manager.js" ) , JSHINT = function ( ) { "use strict" ; function checkOption ( name , t ) { return name = name . trim ( ) , /^[+-]W\\d{3}$/g . test ( name ) ? ! 0 : - 1 !== options . validNames . indexOf ( name ) || "jslint" === t . type || _ . has ( options . removed , name ) ? ! 0 : ( error ( "E001" , t , name ) , ! 1 ) } function isString ( obj ) { return "[object String]" === Object . prototype . toString . call ( obj ) } function isIdentifier ( tkn , value ) { return tkn ? tkn . identifier && tkn . value === value ? ! 0 : ! 1 : ! 1 } function isReserved ( token ) { if ( ! token . reserved ) return ! 1 ; var meta = token . meta ; if ( meta && meta . isFutureReservedWord && state . inES5 ( ) ) { if ( ! meta . es5 ) return ! 1 ; if ( meta . strictOnly && ! state . option . strict && ! state . isStrict ( ) ) return ! 1 ; if ( token . isProperty ) return ! 1 } return ! 0 } function supplant ( str , data ) { return str . replace ( /\\{([^{}]*)\\}/g , function ( a , b ) { var r = data [ b ] ; return "string" == typeof r || "number" == typeof r ? r : a } ) } function combine ( dest , src ) { Object . keys ( src ) . forEach ( function ( name ) { _ . has ( JSHINT . blacklist , name ) || ( dest [ name ] = src [ name ] ) } ) } function processenforceall ( ) { if ( state . option . enforceall ) { for ( var enforceopt in options . bool . enforcing ) void 0 !== state . option [ enforceopt ] || options . noenforceall [ enforceopt ] || ( state . option [ enforceopt ] = ! 0 ) ; for ( var relaxopt in options . bool . relaxing ) void 0 === state . option [ relaxopt ] && ( state . option [ relaxopt ] = ! 1 ) } } function assume ( ) { processenforceall ( ) , state . option . esversion || state . option . moz || ( state . option . esversion = state . option . es3 ? 3 : state . option . esnext ? 6 : 5 ) , state . inES5 ( ) && combine ( predefined , vars . ecmaIdentifiers [ 5 ] ) , state . inES6 ( ) && combine ( predefined , vars . ecmaIdentifiers [ 6 ] ) , state . option . module && ( state . option . strict === ! 0 && ( state . option . strict = "global" ) , state . inES6 ( ) || warning ( "W134" , state . tokens . next , "module" , 6 ) ) , state . option . couch && combine ( predefined , vars . couch ) , state . option . qunit && combine ( predefined , vars . qunit ) , state . option . rhino && combine ( predefined , vars . rhino ) , state . option . shelljs && ( combine ( predefined , vars . shelljs ) , combine ( predefined , vars . node ) ) , state . option . typed && combine ( predefined , vars . typed ) , state . option . phantom && ( combine ( predefined , vars . phantom ) , state . option . strict === ! 0 && ( state . option . strict = "global" ) ) , state . option . prototypejs && combine ( predefined , vars . prototypejs ) , state . option . node && ( combine ( predefined , vars . node ) , combine ( predefined , vars . typed ) , state . option . strict === ! 0 && ( state . option . strict = "global" ) ) , state . option . devel && combine ( predefined , vars . devel ) , state . option . dojo && combine ( predefined , vars . dojo ) , state . option . browser && ( combine ( predefined , vars . browser ) , combine ( predefined , vars . typed ) ) , state . option . browserify && ( combine ( predefined , vars . browser ) , combine ( predefined , vars . typed ) , combine ( predefined , vars . browserify ) , state . option . strict === ! 0 && ( state . option . strict = "global" ) ) , state . option . nonstandard && combine ( predefined , vars . nonstandard ) , state . option . jasmine && combine ( predefined , vars . jasmine ) , state . option . jquery && combine ( predefined , vars . jquery ) , state . option . mootools && combine ( predefined , vars . mootools ) , state . option . worker && combine ( predefined , vars . worker ) , state . option . wsh && combine ( predefined , vars . wsh ) , state . option . globalstrict && state . option . strict !== ! 1 && ( state . option . strict = "global" ) , state . option . yui && combine ( predefined , vars . yui ) , state . option . mocha && combine ( predefined , vars . mocha ) } function quit ( code , line , chr ) { var percentage = Math . floor ( 100 * ( line / state . lines . length ) ) , message = messages . errors [ code ] . desc ; throw { name : "JSHintError" , line : line , character : chr , message : message + " (" + percentage + "% scanned)." , raw : message , code : code } } function removeIgnoredMessages ( ) { var ignored = state . ignoredLines ; _ . isEmpty ( ignored ) || ( JSHINT . errors = _ . reject ( JSHINT . errors , function ( err ) { return ignored [ err . line ] } ) ) } function warning ( code , t , a , b , c , d ) { var ch , l , w , msg ; if ( / ^ W \ \ d { 3 }
} , verifyMaxParametersPerFunction : function ( ) { _ . isNumber ( state . option . maxparams ) && this . arity > state . option . maxparams && warning ( "W072" , functionStartToken , this . arity ) } , verifyMaxNestedBlockDepthPerFunction : function ( ) { state . option . maxdepth && this . nestedBlockDepth > 0 && this . nestedBlockDepth === state . option . maxdepth + 1 && warning ( "W073" , null , this . nestedBlockDepth ) } , verifyMaxComplexityPerFunction : function ( ) { var max = state . option . maxcomplexity , cc = this . ComplexityCount ; max && cc > max && warning ( "W074" , functionStartToken , cc ) } } } function increaseComplexityCount ( ) { state . funct [ "(metrics)" ] . ComplexityCount += 1 } function checkCondAssignment ( expr ) { var id , paren ; switch ( expr && ( id = expr . id , paren = expr . paren , "," === id && ( expr = expr . exprs [ expr . exprs . length - 1 ] ) && ( id = expr . id , paren = paren || expr . paren ) ) , id ) { case "=" : case "+=" : case "-=" : case "*=" : case "%=" : case "&=" : case "|=" : case "^=" : case "/=" : paren || state . option . boss || warning ( "W084" ) } } function checkProperties ( props ) { if ( state . inES5 ( ) ) for ( var name in props ) props [ name ] && props [ name ] . setterToken && ! props [ name ] . getterToken && warning ( "W078" , props [ name ] . setterToken ) } function metaProperty ( name , c ) { if ( checkPunctuator ( state . tokens . next , "." ) ) { var left = state . tokens . curr . id ; advance ( "." ) ; var id = identifier ( ) ; return state . tokens . curr . isMetaProperty = ! 0 , name !== id ? error ( "E057" , state . tokens . prev , left , id ) : c ( ) , state . tokens . curr } } function destructuringPattern ( options ) { var isAssignment = options && options . assignment ; return state . inES6 ( ) || warning ( "W104" , state . tokens . curr , isAssignment ? "destructuring assignment" : "destructuring binding" , "6" ) , destructuringPatternRecursive ( options ) } function destructuringPatternRecursive ( options ) { var ids , identifiers = [ ] , openingParsed = options && options . openingParsed , isAssignment = options && options . assignment , recursiveOptions = isAssignment ? { assignment : isAssignment } : null , firstToken = openingParsed ? state . tokens . curr : state . tokens . next , nextInnerDE = function ( ) { var ident ; if ( checkPunctuators ( state . tokens . next , [ "[" , "{" ] ) ) { ids = destructuringPatternRecursive ( recursiveOptions ) ; for ( var id in ids ) id = ids [ id ] , identifiers . push ( { id : id . id , token : id . token } ) } else if ( checkPunctuator ( state . tokens . next , "," ) ) identifiers . push ( { id : null , token : state . tokens . curr } ) ; else { if ( ! checkPunctuator ( state . tokens . next , "(" ) ) { var is _rest = checkPunctuator ( state . tokens . next , "..." ) ; if ( isAssignment ) { var identifierToken = is _rest ? peek ( 0 ) : state . tokens . next ; identifierToken . identifier || warning ( "E030" , identifierToken , identifierToken . value ) ; var assignTarget = expression ( 155 ) ; assignTarget && ( checkLeftSideAssign ( assignTarget ) , assignTarget . identifier && ( ident = assignTarget . value ) ) } else ident = identifier ( ) ; return ident && identifiers . push ( { id : ident , token : state . tokens . curr } ) , is _rest } advance ( "(" ) , nextInnerDE ( ) , advance ( ")" ) } return ! 1 } , assignmentProperty = function ( ) { var id ; checkPunctuator ( state . tokens . next , "[" ) ? ( advance ( "[" ) , expression ( 10 ) , advance ( "]" ) , advance ( ":" ) , nextInnerDE ( ) ) : "(string)" === state . tokens . next . id || "(number)" === state . tokens . next . id ? ( advance ( ) , advance ( ":" ) , nextInnerDE ( ) ) : ( id = identifier ( ) , checkPunctuator ( state . tokens . next , ":" ) ? ( advance ( ":" ) , nextInnerDE ( ) ) : id && ( isAssignment && checkLeftSideAssign ( state . tokens . curr ) , identifiers . push ( { id : id , token : state . tokens . curr } ) ) ) } ; if ( checkPunctuator ( firstToken , "[" ) ) { openingParsed || advance ( "[" ) , checkPunctuator ( state . tokens . next , "]" ) && warning ( "W137" , state . tokens . curr ) ; for ( var element _after _rest = ! 1 ; ! checkPunctuator ( state . tokens . next , "]" ) ; ) nextInnerDE ( ) && ! element _after _rest && checkPunctuator ( state . tokens . next , "," ) && ( warning ( "W130" , state . tokens . next ) , element _after _rest = ! 0 ) , checkPunctuator ( state . tokens . next , "=" ) && ( checkPunctuator ( state . tokens . prev , "..." ) ? advance ( "]" ) : advance ( "=" ) , "undefined" === state . tokens . next . id && warning ( "W080" , state . tokens . prev , state . tokens . prev . value ) , expression ( 10 ) ) , checkPunctuator ( state . tokens . next , "]" ) || advance ( "," ) ; advance ( "]" ) } else if ( checkPunctuator ( firstToken , "{" ) ) { for ( openingParsed || advance ( "{" ) , checkPunctuator ( state . tokens . next , "}" ) && warning ( "W137" , state . tokens . curr ) ; ! checkPunctuator ( state . tokens . next , "}" ) && ( assignmentProperty ( ) , checkPunctuator ( state . tokens . next , "=" ) && ( advance ( "=" ) , "undefined" === state . tokens . next . id && warning ( "W080" , state . tokens . pr
for ( state . funct [ "(breakage)" ] += 1 , advance ( "(" ) , checkCondAssignment ( expression ( 0 ) ) , advance ( ")" , t ) , t = state . tokens . next , advance ( "{" ) , state . tokens . next . from === indent && ( noindent = ! 0 ) , noindent || ( indent += state . option . indent ) , this . cases = [ ] ; ; ) switch ( state . tokens . next . id ) { case "case" : switch ( state . funct [ "(verb)" ] ) { case "yield" : case "break" : case "case" : case "continue" : case "return" : case "switch" : case "throw" : break ; default : state . tokens . curr . caseFallsThrough || warning ( "W086" , state . tokens . curr , "case" ) } advance ( "case" ) , this . cases . push ( expression ( 0 ) ) , increaseComplexityCount ( ) , g = ! 0 , advance ( ":" ) , state . funct [ "(verb)" ] = "case" ; break ; case "default" : switch ( state . funct [ "(verb)" ] ) { case "yield" : case "break" : case "continue" : case "return" : case "throw" : break ; default : this . cases . length && ( state . tokens . curr . caseFallsThrough || warning ( "W086" , state . tokens . curr , "default" ) ) } advance ( "default" ) , g = ! 0 , advance ( ":" ) ; break ; case "}" : return noindent || ( indent -= state . option . indent ) , advance ( "}" , t ) , state . funct [ "(breakage)" ] -= 1 , state . funct [ "(verb)" ] = void 0 , void 0 ; case "(end)" : return error ( "E023" , state . tokens . next , "}" ) , void 0 ; default : if ( indent += state . option . indent , g ) switch ( state . tokens . curr . id ) { case "," : return error ( "E040" ) , void 0 ; case ":" : g = ! 1 , statements ( ) ; break ; default : return error ( "E025" , state . tokens . curr ) , void 0 } else { if ( ":" !== state . tokens . curr . id ) return error ( "E021" , state . tokens . next , "case" , state . tokens . next . value ) , void 0 ; advance ( ":" ) , error ( "E024" , state . tokens . curr , ":" ) , statements ( ) } indent -= state . option . indent } return this } ) . labelled = ! 0 , stmt ( "debugger" , function ( ) { return state . option . debug || warning ( "W087" , this ) , this } ) . exps = ! 0 , function ( ) { var x = stmt ( "do" , function ( ) { state . funct [ "(breakage)" ] += 1 , state . funct [ "(loopage)" ] += 1 , increaseComplexityCount ( ) , this . first = block ( ! 0 , ! 0 ) , advance ( "while" ) ; var t = state . tokens . next ; return advance ( "(" ) , checkCondAssignment ( expression ( 0 ) ) , advance ( ")" , t ) , state . funct [ "(breakage)" ] -= 1 , state . funct [ "(loopage)" ] -= 1 , this } ) ; x . labelled = ! 0 , x . exps = ! 0 } ( ) , blockstmt ( "for" , function ( ) { var s , t = state . tokens . next , letscope = ! 1 , foreachtok = null ; "each" === t . value && ( foreachtok = t , advance ( "each" ) , state . inMoz ( ) || warning ( "W118" , state . tokens . curr , "for each" ) ) , increaseComplexityCount ( ) , advance ( "(" ) ; var nextop , comma , initializer , i = 0 , inof = [ "in" , "of" ] , level = 0 ; checkPunctuators ( state . tokens . next , [ "{" , "[" ] ) && ++ level ; do { if ( nextop = peek ( i ) , ++ i , checkPunctuators ( nextop , [ "{" , "[" ] ) ? ++ level : checkPunctuators ( nextop , [ "}" , "]" ] ) && -- level , 0 > level ) break ; 0 === level && ( ! comma && checkPunctuator ( nextop , "," ) ? comma = nextop : ! initializer && checkPunctuator ( nextop , "=" ) && ( initializer = nextop ) ) } while ( level > 0 || ! _ . contains ( inof , nextop . value ) && ";" !== nextop . value && "(end)" !== nextop . type ) ; if ( _ . contains ( inof , nextop . value ) ) { state . inES6 ( ) || "of" !== nextop . value || warning ( "W104" , nextop , "for of" , "6" ) ; var ok = ! ( initializer || comma ) ; if ( initializer && error ( "W133" , comma , nextop . value , "initializer is forbidden" ) , comma && error ( "W133" , comma , nextop . value , "more than one ForBinding" ) , "var" === state . tokens . next . id ? ( advance ( "var" ) , state . tokens . curr . fud ( { prefix : ! 0 } ) ) : "let" === state . tokens . next . id || "const" === state . tokens . next . id ? ( advance ( state . tokens . next . id ) , letscope = ! 0 , state . funct [ "(scope)" ] . stack ( ) , state . tokens . curr . fud ( { prefix : ! 0 } ) ) : Object . create ( varstatement ) . fud ( { prefix : ! 0 , implied : "for" , ignore : ! ok } ) , advance ( nextop . value ) , expression ( 20 ) , advance ( ")" , t ) , "in" === nextop . value && state . option . forin && ( state . forinifcheckneeded = ! 0 , void 0 === state . forinifchecks && ( state . forinifchecks = [ ] ) , state . forinifchecks . push ( { type : "(none)" } ) ) , state . funct [ "(breakage)" ] += 1 , state . funct [ "(loopage)" ] += 1 , s = block ( ! 0 , ! 0 ) , "in" === nextop . value && state . option . forin ) { if ( state . forinifchecks && state . forinifchecks . length > 0 ) { var check = state . forinifchecks . pop ( ) ; ( s && s . length > 0 && ( "object" != typeof s [ 0 ] || "if" !== s [ 0 ] . value ) || "(positive)" === check . type && s . length > 1 || "(negative)" === check . type ) && warning ( "W089" , this ) } state . forinifcheckneeded = ! 1 } state . funct [ "(breakage)" ] -= 1 , state . funct [ "(loopage)" ] -= 1 } else { if ( foreachtok && error ( "E045" , foreachtok ) , ";" !== state . tokens . next . id ) if ( "var" === state . tokens . next . id ) advance ( "var" ) , state . tokens . curr . fud ( ) ; else if ( "let" === state . tokens . next . id ) advance ( "let" ) , letscope = ! 0 , state . funct [ "(scope)"
if ( "\\\\" === ch ) { var escape = this . scanEscapeSequence ( checks ) ; value += escape . char , this . skip ( escape . jump ) } else "\`" !== ch && ( value += ch , this . skip ( 1 ) ) } return tokenType = tokenType === Token . TemplateHead ? Token . NoSubstTemplate : Token . TemplateTail , this . skip ( 1 ) , this . templateStarts . pop ( ) , { type : tokenType , value : value , startLine : startLine , startChar : startChar , isUnclosed : ! 1 , depth : depth , context : this . popContext ( ) } } , scanStringLiteral : function ( checks ) { var quote = this . peek ( ) ; if ( '"' !== quote && "'" !== quote ) return null ; this . triggerAsync ( "warning" , { code : "W108" , line : this . line , character : this . char } , checks , function ( ) { return state . jsonMode && '"' !== quote } ) ; var value = "" , startLine = this . line , startChar = this . char , allowNewLine = ! 1 ; for ( this . skip ( ) ; this . peek ( ) !== quote ; ) if ( "" === this . peek ( ) ) { if ( allowNewLine ? ( allowNewLine = ! 1 , this . triggerAsync ( "warning" , { code : "W043" , line : this . line , character : this . char } , checks , function ( ) { return ! state . option . multistr } ) , this . triggerAsync ( "warning" , { code : "W042" , line : this . line , character : this . char } , checks , function ( ) { return state . jsonMode && state . option . multistr } ) ) : this . trigger ( "warning" , { code : "W112" , line : this . line , character : this . char } ) , ! this . nextLine ( ) ) return this . trigger ( "error" , { code : "E029" , line : startLine , character : startChar } ) , { type : Token . StringLiteral , value : value , startLine : startLine , startChar : startChar , isUnclosed : ! 0 , quote : quote } } else { allowNewLine = ! 1 ; var char = this . peek ( ) , jump = 1 ; if ( " " > char && this . trigger ( "warning" , { code : "W113" , line : this . line , character : this . char , data : [ "<non-printable>" ] } ) , "\\\\" === char ) { var parsed = this . scanEscapeSequence ( checks ) ; char = parsed . char , jump = parsed . jump , allowNewLine = parsed . allowNewLine } value += char , this . skip ( jump ) } return this . skip ( ) , { type : Token . StringLiteral , value : value , startLine : startLine , startChar : startChar , isUnclosed : ! 1 , quote : quote } } , scanRegExp : function ( ) { var terminated , index = 0 , length = this . input . length , char = this . peek ( ) , value = char , body = "" , flags = [ ] , malformed = ! 1 , isCharSet = ! 1 , scanUnexpectedChars = function ( ) { " " > char && ( malformed = ! 0 , this . trigger ( "warning" , { code : "W048" , line : this . line , character : this . char } ) ) , "<" === char && ( malformed = ! 0 , this . trigger ( "warning" , { code : "W049" , line : this . line , character : this . char , data : [ char ] } ) ) } . bind ( this ) ; if ( ! this . prereg || "/" !== char ) return null ; for ( index += 1 , terminated = ! 1 ; length > index ; ) if ( char = this . peek ( index ) , value += char , body += char , isCharSet ) "]" === char && ( "\\\\" !== this . peek ( index - 1 ) || "\\\\" === this . peek ( index - 2 ) ) && ( isCharSet = ! 1 ) , "\\\\" === char && ( index += 1 , char = this . peek ( index ) , body += char , value += char , scanUnexpectedChars ( ) ) , index += 1 ; else { if ( "\\\\" === char ) { if ( index += 1 , char = this . peek ( index ) , body += char , value += char , scanUnexpectedChars ( ) , "/" === char ) { index += 1 ; continue } if ( "[" === char ) { index += 1 ; continue } } if ( "[" !== char ) { if ( "/" === char ) { body = body . substr ( 0 , body . length - 1 ) , terminated = ! 0 , index += 1 ; break } index += 1 } else isCharSet = ! 0 , index += 1 } if ( ! terminated ) return this . trigger ( "error" , { code : "E015" , line : this . line , character : this . from } ) , void this . trigger ( "fatal" , { line : this . line , from : this . from } ) ; for ( ; length > index && ( char = this . peek ( index ) , /[gim]/ . test ( char ) ) ; ) flags . push ( char ) , value += char , index += 1 ; try { RegExp ( body , flags . join ( "" ) ) } catch ( err ) { malformed = ! 0 , this . trigger ( "error" , { code : "E016" , line : this . line , character : this . char , data : [ err . message ] } ) } return { type : Token . RegExp , value : value , flags : flags , isMalformed : malformed } } , scanNonBreakingSpaces : function ( ) { return state . option . nonbsp ? this . input . search ( /(\\u00A0)/ ) : - 1 } , scanUnsafeChars : function ( ) { return this . input . search ( reg . unsafeChars ) } , next : function ( checks ) { this . from = this . char ; var start ; if ( /\\s/ . test ( this . peek ( ) ) ) for ( start = this . char ; /\\s/ . test ( this . peek ( ) ) ; ) this . from += 1 , this . skip ( ) ; var match = this . scanComments ( ) || this . scanStringLiteral ( checks ) || this . scanTemplateLiteral ( checks ) ; return match ? match : ( match = this . scanRegExp ( ) || this . scanPunctuator ( ) || this . scanKeyword ( ) || this . scanIdentifier ( ) || this . scanNumericLiteral ( ) , match ? ( this . skip ( match . tokenLength || match . value . length ) , match ) : null ) } , nextLine : function ( ) { var char ; if ( this . line >= this . getLines ( ) . length ) return ! 1 ; this . input = this . getLines ( ) [ this . line ] , this . line += 1 , this . char = 1 , this . from = 1 ; var inputTrimmed = this . input . trim ( ) , startsWith = function ( ) { return _ . some ( argument
} , addlabel : function ( labelName , opts ) { var type = opts . type , token = opts . token , isblockscoped = "let" === type || "const" === type || "class" === type , isexported = "global" === ( isblockscoped ? _current : _currentFunctBody ) [ "(type)" ] && _ . has ( exported , labelName ) ; if ( _checkOuterShadow ( labelName , token , type ) , isblockscoped ) { var declaredInCurrentScope = _current [ "(labels)" ] [ labelName ] ; if ( declaredInCurrentScope || _current !== _currentFunctBody || "global" === _current [ "(type)" ] || ( declaredInCurrentScope = ! ! _currentFunctBody [ "(parent)" ] [ "(labels)" ] [ labelName ] ) , ! declaredInCurrentScope && _current [ "(usages)" ] [ labelName ] ) { var usage = _current [ "(usages)" ] [ labelName ] ; usage [ "(onlyUsedSubFunction)" ] ? _latedefWarning ( type , labelName , token ) : warning ( "E056" , token , labelName , type ) } declaredInCurrentScope ? warning ( "E011" , token , labelName ) : "outer" === state . option . shadow && scopeManagerInst . funct . has ( labelName ) && warning ( "W004" , token , labelName ) , scopeManagerInst . block . add ( labelName , type , token , ! isexported ) } else { var declaredInCurrentFunctionScope = scopeManagerInst . funct . has ( labelName ) ; ! declaredInCurrentFunctionScope && usedSoFarInCurrentFunction ( labelName ) && _latedefWarning ( type , labelName , token ) , scopeManagerInst . funct . has ( labelName , { onlyBlockscoped : ! 0 } ) ? warning ( "E011" , token , labelName ) : state . option . shadow !== ! 0 && declaredInCurrentFunctionScope && "__proto__" !== labelName && "global" !== _currentFunctBody [ "(type)" ] && warning ( "W004" , token , labelName ) , scopeManagerInst . funct . add ( labelName , type , token , ! isexported ) , "global" === _currentFunctBody [ "(type)" ] && ( usedPredefinedAndGlobals [ labelName ] = marker ) } } , funct : { labeltype : function ( labelName , options ) { for ( var onlyBlockscoped = options && options . onlyBlockscoped , excludeParams = options && options . excludeParams , currentScopeIndex = _scopeStack . length - ( options && options . excludeCurrent ? 2 : 1 ) , i = currentScopeIndex ; i >= 0 ; i -- ) { var current = _scopeStack [ i ] ; if ( current [ "(labels)" ] [ labelName ] && ( ! onlyBlockscoped || current [ "(labels)" ] [ labelName ] [ "(blockscoped)" ] ) ) return current [ "(labels)" ] [ labelName ] [ "(type)" ] ; var scopeCheck = excludeParams ? _scopeStack [ i - 1 ] : current ; if ( scopeCheck && "functionparams" === scopeCheck [ "(type)" ] ) return null } return null } , hasBreakLabel : function ( labelName ) { for ( var i = _scopeStack . length - 1 ; i >= 0 ; i -- ) { var current = _scopeStack [ i ] ; if ( current [ "(breakLabels)" ] [ labelName ] ) return ! 0 ; if ( "functionparams" === current [ "(type)" ] ) return ! 1 } return ! 1 } , has : function ( labelName , options ) { return Boolean ( this . labeltype ( labelName , options ) ) } , add : function ( labelName , type , tok , unused ) { _current [ "(labels)" ] [ labelName ] = { "(type)" : type , "(token)" : tok , "(blockscoped)" : ! 1 , "(function)" : _currentFunctBody , "(unused)" : unused } } } , block : { isGlobal : function ( ) { return "global" === _current [ "(type)" ] } , use : function ( labelName , token ) { var paramScope = _currentFunctBody [ "(parent)" ] ; paramScope && paramScope [ "(labels)" ] [ labelName ] && "param" === paramScope [ "(labels)" ] [ labelName ] [ "(type)" ] && ( scopeManagerInst . funct . has ( labelName , { excludeParams : ! 0 , onlyBlockscoped : ! 0 } ) || ( paramScope [ "(labels)" ] [ labelName ] [ "(unused)" ] = ! 1 ) ) , token && ( state . ignored . W117 || state . option . undef === ! 1 ) && ( token . ignoreUndef = ! 0 ) , _setupUsages ( labelName ) , token && ( token [ "(function)" ] = _currentFunctBody , _current [ "(usages)" ] [ labelName ] [ "(tokens)" ] . push ( token ) ) } , reassign : function ( labelName , token ) { this . modify ( labelName , token ) , _current [ "(usages)" ] [ labelName ] [ "(reassigned)" ] . push ( token ) } , modify : function ( labelName , token ) { _setupUsages ( labelName ) , _current [ "(usages)" ] [ labelName ] [ "(modified)" ] . push ( token ) } , add : function ( labelName , type , tok , unused ) { _current [ "(labels)" ] [ labelName ] = { "(type)" : type , "(token)" : tok , "(blockscoped)" : ! 0 , "(unused)" : unused } } , addBreakLabel : function ( labelName , opts ) { var token = opts . token ; scopeManagerInst . funct . hasBreakLabel ( labelName ) ? warning ( "E011" , token , labelName ) : "outer" === state . option . shadow && ( scopeManagerInst . funct . has ( labelName ) ? warning ( "W004" , token , labelName ) : _checkOuterShadow ( labelName , token ) ) , _current [ "(breakLabels)" ] [ labelName ] = token } } } ; return scopeManagerInst } ; module . exports = scopeManager } , { "../lodash" : "/node_modules/jshint/lodash.js" , events : "/node_modules/browserify/node_modules/events/events.js" } ] , "/node_modules/jshint/src/state.js" : [ function ( _dereq _ , module , exports ) { "use strict" ; var NameStack
for ( var tt = this . get ( channel ) , i = 0 , len = tokenTypes . length ; len > i ; ) if ( tt == tokenTypes [ i ++ ] ) return ! 0 ; return this . unget ( ) , ! 1 } , mustMatch : function ( tokenTypes ) { var token ; if ( tokenTypes instanceof Array || ( tokenTypes = [ tokenTypes ] ) , ! this . match . apply ( this , arguments ) ) throw token = this . LT ( 1 ) , new SyntaxError ( "Expected " + this . _tokenData [ tokenTypes [ 0 ] ] . name + " at line " + token . startLine + ", col " + token . startCol + "." , token . startLine , token . startCol ) } , advance : function ( tokenTypes , channel ) { for ( ; 0 !== this . LA ( 0 ) && ! this . match ( tokenTypes , channel ) ; ) this . get ( ) ; return this . LA ( 0 ) } , get : function ( channel ) { var token , info , tokenInfo = this . _tokenData , i = ( this . _reader , 0 ) ; if ( tokenInfo . length , this . _lt . length && this . _ltIndex >= 0 && this . _ltIndex < this . _lt . length ) { for ( i ++ , this . _token = this . _lt [ this . _ltIndex ++ ] , info = tokenInfo [ this . _token . type ] ; void 0 !== info . channel && channel !== info . channel && this . _ltIndex < this . _lt . length ; ) this . _token = this . _lt [ this . _ltIndex ++ ] , info = tokenInfo [ this . _token . type ] , i ++ ; if ( ( void 0 === info . channel || channel === info . channel ) && this . _ltIndex <= this . _lt . length ) return this . _ltIndexCache . push ( i ) , this . _token . type } return token = this . _getToken ( ) , token . type > - 1 && ! tokenInfo [ token . type ] . hide && ( token . channel = tokenInfo [ token . type ] . channel , this . _token = token , this . _lt . push ( token ) , this . _ltIndexCache . push ( this . _lt . length - this . _ltIndex + i ) , this . _lt . length > 5 && this . _lt . shift ( ) , this . _ltIndexCache . length > 5 && this . _ltIndexCache . shift ( ) , this . _ltIndex = this . _lt . length ) , info = tokenInfo [ token . type ] , info && ( info . hide || void 0 !== info . channel && channel !== info . channel ) ? this . get ( channel ) : token . type } , LA : function ( index ) { var tt , total = index ; if ( index > 0 ) { if ( index > 5 ) throw Error ( "Too much lookahead." ) ; for ( ; total ; ) tt = this . get ( ) , total -- ; for ( ; index > total ; ) this . unget ( ) , total ++ } else if ( 0 > index ) { if ( ! this . _lt [ this . _ltIndex + index ] ) throw Error ( "Too much lookbehind." ) ; tt = this . _lt [ this . _ltIndex + index ] . type } else tt = this . _token . type ; return tt } , LT : function ( index ) { return this . LA ( index ) , this . _lt [ this . _ltIndex + index - 1 ] } , peek : function ( ) { return this . LA ( 1 ) } , token : function ( ) { return this . _token } , tokenName : function ( tokenType ) { return 0 > tokenType || tokenType > this . _tokenData . length ? "UNKNOWN_TOKEN" : this . _tokenData [ tokenType ] . name } , tokenType : function ( tokenName ) { return this . _tokenData [ tokenName ] || - 1 } , unget : function ( ) { if ( ! this . _ltIndexCache . length ) throw Error ( "Too much lookahead." ) ; this . _ltIndex -= this . _ltIndexCache . pop ( ) , this . _token = this . _lt [ this . _ltIndex - 1 ] } } , parserlib . util = { StringReader : StringReader , SyntaxError : SyntaxError , SyntaxUnit : SyntaxUnit , EventTarget : EventTarget , TokenStreamBase : TokenStreamBase } } ) ( ) , function ( ) { function Combinator ( text , line , col ) { SyntaxUnit . call ( this , text , line , col , Parser . COMBINATOR _TYPE ) , this . type = "unknown" , /^\\s+$/ . test ( text ) ? this . type = "descendant" : ">" == text ? this . type = "child" : "+" == text ? this . type = "adjacent-sibling" : "~" == text && ( this . type = "sibling" ) } function MediaFeature ( name , value ) { SyntaxUnit . call ( this , "(" + name + ( null !== value ? ":" + value : "" ) + ")" , name . startLine , name . startCol , Parser . MEDIA _FEATURE _TYPE ) , this . name = name , this . value = value } function MediaQuery ( modifier , mediaType , features , line , col ) { SyntaxUnit . call ( this , ( modifier ? modifier + " " : "" ) + ( mediaType ? mediaType : "" ) + ( mediaType && features . length > 0 ? " and " : "" ) + features . join ( " and " ) , line , col , Parser . MEDIA _QUERY _TYPE ) , this . modifier = modifier , this . mediaType = mediaType , this . features = features } function Parser ( options ) { EventTarget . call ( this ) , this . options = options || { } , this . _tokenStream = null } function PropertyName ( text , hack , line , col ) { SyntaxUnit . call ( this , text , line , col , Parser . PROPERTY _NAME _TYPE ) , this . hack = hack } function PropertyValue ( parts , line , col ) { SyntaxUnit . call ( this , parts . join ( " " ) , line , col , Parser . PROPERTY _VALUE _TYPE ) , this . parts = parts } function PropertyValueIterator ( value ) { this . _i = 0 , this . _parts = value . parts , this . _marks = [ ] , this . value = value } function PropertyValuePart ( text , line , col ) { SyntaxUnit . call ( this , text , line , col , Parser . PROPERTY _VALUE _PART _TYPE ) , this . type = "unknown" ; var temp ; if ( /^([+\\-]?[\\d\\.]+)([a-z]+)$/i . test ( text ) ) switch ( this . type = "dimension" , this . value = + RegExp . $1 , this . units = RegExp . $2 , this . units . toLowerCase ( ) ) { case "em" : case "rem" : case "ex" : case "px" : case "cm" : case "mm" : case "in" : case "pt" : case " pc
values . push ( value ) } return values . length > 0 ? new PropertyValue ( values , values [ 0 ] . line , values [ 0 ] . col ) : null } , _term : function ( inFunction ) { var token , line , col , tokenStream = this . _tokenStream , unary = null , value = null , endChar = null ; return unary = this . _unary _operator ( ) , null !== unary && ( line = tokenStream . token ( ) . startLine , col = tokenStream . token ( ) . startCol ) , tokenStream . peek ( ) == Tokens . IE _FUNCTION && this . options . ieFilters ? ( value = this . _ie _function ( ) , null === unary && ( line = tokenStream . token ( ) . startLine , col = tokenStream . token ( ) . startCol ) ) : inFunction && tokenStream . match ( [ Tokens . LPAREN , Tokens . LBRACE , Tokens . LBRACKET ] ) ? ( token = tokenStream . token ( ) , endChar = token . endChar , value = token . value + this . _expr ( inFunction ) . text , null === unary && ( line = tokenStream . token ( ) . startLine , col = tokenStream . token ( ) . startCol ) , tokenStream . mustMatch ( Tokens . type ( endChar ) ) , value += endChar , this . _readWhitespace ( ) ) : tokenStream . match ( [ Tokens . NUMBER , Tokens . PERCENTAGE , Tokens . LENGTH , Tokens . ANGLE , Tokens . TIME , Tokens . FREQ , Tokens . STRING , Tokens . IDENT , Tokens . URI , Tokens . UNICODE _RANGE ] ) ? ( value = tokenStream . token ( ) . value , null === unary && ( line = tokenStream . token ( ) . startLine , col = tokenStream . token ( ) . startCol ) , this . _readWhitespace ( ) ) : ( token = this . _hexcolor ( ) , null === token ? ( null === unary && ( line = tokenStream . LT ( 1 ) . startLine , col = tokenStream . LT ( 1 ) . startCol ) , null === value && ( value = tokenStream . LA ( 3 ) == Tokens . EQUALS && this . options . ieFilters ? this . _ie _function ( ) : this . _function ( ) ) ) : ( value = token . value , null === unary && ( line = token . startLine , col = token . startCol ) ) ) , null !== value ? new PropertyValuePart ( null !== unary ? unary + value : value , line , col ) : null } , _function : function ( ) { var lt , tokenStream = this . _tokenStream , functionText = null , expr = null ; if ( tokenStream . match ( Tokens . FUNCTION ) ) { if ( functionText = tokenStream . token ( ) . value , this . _readWhitespace ( ) , expr = this . _expr ( ! 0 ) , functionText += expr , this . options . ieFilters && tokenStream . peek ( ) == Tokens . EQUALS ) do for ( this . _readWhitespace ( ) && ( functionText += tokenStream . token ( ) . value ) , tokenStream . LA ( 0 ) == Tokens . COMMA && ( functionText += tokenStream . token ( ) . value ) , tokenStream . match ( Tokens . IDENT ) , functionText += tokenStream . token ( ) . value , tokenStream . match ( Tokens . EQUALS ) , functionText += tokenStream . token ( ) . value , lt = tokenStream . peek ( ) ; lt != Tokens . COMMA && lt != Tokens . S && lt != Tokens . RPAREN ; ) tokenStream . get ( ) , functionText += tokenStream . token ( ) . value , lt = tokenStream . peek ( ) ; while ( tokenStream . match ( [ Tokens . COMMA , Tokens . S ] ) ) ; tokenStream . match ( Tokens . RPAREN ) , functionText += ")" , this . _readWhitespace ( ) } return functionText } , _ie _function : function ( ) { var lt , tokenStream = this . _tokenStream , functionText = null ; if ( tokenStream . match ( [ Tokens . IE _FUNCTION , Tokens . FUNCTION ] ) ) { functionText = tokenStream . token ( ) . value ; do for ( this . _readWhitespace ( ) && ( functionText += tokenStream . token ( ) . value ) , tokenStream . LA ( 0 ) == Tokens . COMMA && ( functionText += tokenStream . token ( ) . value ) , tokenStream . match ( Tokens . IDENT ) , functionText += tokenStream . token ( ) . value , tokenStream . match ( Tokens . EQUALS ) , functionText += tokenStream . token ( ) . value , lt = tokenStream . peek ( ) ; lt != Tokens . COMMA && lt != Tokens . S && lt != Tokens . RPAREN ; ) tokenStream . get ( ) , functionText += tokenStream . token ( ) . value , lt = tokenStream . peek ( ) ; while ( tokenStream . match ( [ Tokens . COMMA , Tokens . S ] ) ) ; tokenStream . match ( Tokens . RPAREN ) , functionText += ")" , this . _readWhitespace ( ) } return functionText } , _hexcolor : function ( ) { var color , tokenStream = this . _tokenStream , token = null ; if ( tokenStream . match ( Tokens . HASH ) ) { if ( token = tokenStream . token ( ) , color = token . value , ! /#[a-f0-9]{3,6}/i . test ( color ) ) throw new SyntaxError ( "Expected a hex color but found '" + color + "' at line " + token . startLine + ", col " + token . startCol + "." , token . startLine , token . startCol ) ; this . _readWhitespace ( ) } return token } , _keyframes : function ( ) { var token , tt , name , tokenStream = this . _tokenStream , prefix = "" ; for ( tokenStream . mustMatch ( Tokens . KEYFRAMES _SYM ) , token = tokenStream . token ( ) , /^@\\-([^\\-]+)\\-/ . test ( token . value ) && ( prefix = RegExp . $1 ) , this . _readWhitespace ( ) , name = this . _keyframe _name ( ) , this . _readWhitespace ( ) , tokenStream . mustMatch ( Tokens . LBRACE ) , this . fire ( { type : "startkeyframes" , name : name , prefix : prefix , line : token . startLine , col : token . startCol } ) , this . _readWhitespace ( ) , tt = tokenStream . peek ( ) ; tt == Tokens . IDENT || tt == Tokens . PERCENTAGE ; ) this . _keyframe _rule ( )
} , hashToken : function ( first , startLine , startCol ) { var name = ( this . _reader , this . readName ( first ) ) ; return this . createToken ( Tokens . HASH , name , startLine , startCol ) } , htmlCommentStartToken : function ( first , startLine , startCol ) { var reader = this . _reader , text = first ; return reader . mark ( ) , text += reader . readCount ( 3 ) , "<!--" == text ? this . createToken ( Tokens . CDO , text , startLine , startCol ) : ( reader . reset ( ) , this . charToken ( first , startLine , startCol ) ) } , htmlCommentEndToken : function ( first , startLine , startCol ) { var reader = this . _reader , text = first ; return reader . mark ( ) , text += reader . readCount ( 2 ) , "-->" == text ? this . createToken ( Tokens . CDC , text , startLine , startCol ) : ( reader . reset ( ) , this . charToken ( first , startLine , startCol ) ) } , identOrFunctionToken : function ( first , startLine , startCol ) { var reader = this . _reader , ident = this . readName ( first ) , tt = Tokens . IDENT ; return "(" == reader . peek ( ) ? ( ident += reader . read ( ) , "url(" == ident . toLowerCase ( ) ? ( tt = Tokens . URI , ident = this . readURI ( ident ) , "url(" == ident . toLowerCase ( ) && ( tt = Tokens . FUNCTION ) ) : tt = Tokens . FUNCTION ) : ":" == reader . peek ( ) && "progid" == ident . toLowerCase ( ) && ( ident += reader . readTo ( "(" ) , tt = Tokens . IE _FUNCTION ) , this . createToken ( tt , ident , startLine , startCol ) } , importantToken : function ( first , startLine , startCol ) { var temp , c , reader = this . _reader , important = first , tt = Tokens . CHAR ; for ( reader . mark ( ) , c = reader . read ( ) ; c ; ) { if ( "/" == c ) { if ( "*" != reader . peek ( ) ) break ; if ( temp = this . readComment ( c ) , "" === temp ) break } else { if ( ! isWhitespace ( c ) ) { if ( /i/i . test ( c ) ) { temp = reader . readCount ( 8 ) , /mportant/i . test ( temp ) && ( important += c + temp , tt = Tokens . IMPORTANT _SYM ) ; break } break } important += c + this . readWhitespace ( ) } c = reader . read ( ) } return tt == Tokens . CHAR ? ( reader . reset ( ) , this . charToken ( first , startLine , startCol ) ) : this . createToken ( tt , important , startLine , startCol ) } , notToken : function ( first , startLine , startCol ) { var reader = this . _reader , text = first ; return reader . mark ( ) , text += reader . readCount ( 4 ) , ":not(" == text . toLowerCase ( ) ? this . createToken ( Tokens . NOT , text , startLine , startCol ) : ( reader . reset ( ) , this . charToken ( first , startLine , startCol ) ) } , numberToken : function ( first , startLine , startCol ) { var ident , reader = this . _reader , value = this . readNumber ( first ) , tt = Tokens . NUMBER , c = reader . peek ( ) ; return isIdentStart ( c ) ? ( ident = this . readName ( reader . read ( ) ) , value += ident , tt = /^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vmax$|^vmin$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i . test ( ident ) ? Tokens . LENGTH : /^deg|^rad$|^grad$/i . test ( ident ) ? Tokens . ANGLE : /^ms$|^s$/i . test ( ident ) ? Tokens . TIME : /^hz$|^khz$/i . test ( ident ) ? Tokens . FREQ : /^dpi$|^dpcm$/i . test ( ident ) ? Tokens . RESOLUTION : Tokens . DIMENSION ) : "%" == c && ( value += reader . read ( ) , tt = Tokens . PERCENTAGE ) , this . createToken ( tt , value , startLine , startCol ) } , stringToken : function ( first , startLine , startCol ) { for ( var delim = first , string = first , reader = this . _reader , prev = first , tt = Tokens . STRING , c = reader . read ( ) ; c && ( string += c , c != delim || "\\\\" == prev ) ; ) { if ( isNewLine ( reader . peek ( ) ) && "\\\\" != c ) { tt = Tokens . INVALID ; break } prev = c , c = reader . read ( ) } return null === c && ( tt = Tokens . INVALID ) , this . createToken ( tt , string , startLine , startCol ) } , unicodeRangeToken : function ( first , startLine , startCol ) { var temp , reader = this . _reader , value = first , tt = Tokens . CHAR ; return "+" == reader . peek ( ) && ( reader . mark ( ) , value += reader . read ( ) , value += this . readUnicodeRangePart ( ! 0 ) , 2 == value . length ? reader . reset ( ) : ( tt = Tokens . UNICODE _RANGE , - 1 == value . indexOf ( "?" ) && "-" == reader . peek ( ) && ( reader . mark ( ) , temp = reader . read ( ) , temp += this . readUnicodeRangePart ( ! 1 ) , 1 == temp . length ? reader . reset ( ) : value += temp ) ) ) , this . createToken ( tt , value , startLine , startCol ) } , whitespaceToken : function ( first , startLine , startCol ) { var value = ( this . _reader , first + this . readWhitespace ( ) ) ; return this . createToken ( Tokens . S , value , startLine , startCol ) } , readUnicodeRangePart : function ( allowQuestionMark ) { for ( var reader = this . _reader , part = "" , c = reader . peek ( ) ; isHexDigit ( c ) && 6 > part . length ; ) reader . read ( ) , part += c , c = reader . peek ( ) ; if ( allowQuestionMark ) for ( ; "?" == c && 6 > part . length ; ) reader . read ( ) , part += c , c = reader . peek ( ) ; return part } , readWhitespace : function ( ) { for ( var reader = this . _reader , whitespace = "" , c = reader . peek ( ) ; isWhitespace ( c ) ; ) reader . read ( ) , whitespace += c , c = reader . peek ( ) ; return whitespace } , readNumber : function ( first ) { for ( var reader = this . _reader , number = first , hasDot = "." == first , c = reader . peek
break ; case "inline-block" : reportProperty ( "float" , display ) ; break ; default : 0 === display . indexOf ( "table-" ) && ( reportProperty ( "margin" , display ) , reportProperty ( "margin-left" , display ) , reportProperty ( "margin-right" , display ) , reportProperty ( "margin-top" , display ) , reportProperty ( "margin-bottom" , display ) , reportProperty ( "float" , display ) ) } } var properties , rule = this , propertiesToCheck = { display : 1 , "float" : "none" , height : 1 , width : 1 , margin : 1 , "margin-left" : 1 , "margin-right" : 1 , "margin-bottom" : 1 , "margin-top" : 1 , padding : 1 , "padding-left" : 1 , "padding-right" : 1 , "padding-bottom" : 1 , "padding-top" : 1 , "vertical-align" : 1 } ; parser . addListener ( "startrule" , startRule ) , parser . addListener ( "startfontface" , startRule ) , parser . addListener ( "startkeyframerule" , startRule ) , parser . addListener ( "startpagemargin" , startRule ) , parser . addListener ( "startpage" , startRule ) , parser . addListener ( "property" , function ( event ) { var name = event . property . text . toLowerCase ( ) ; propertiesToCheck [ name ] && ( properties [ name ] = { value : event . value . text , line : event . property . line , col : event . property . col } ) } ) , parser . addListener ( "endrule" , endRule ) , parser . addListener ( "endfontface" , endRule ) , parser . addListener ( "endkeyframerule" , endRule ) , parser . addListener ( "endpagemargin" , endRule ) , parser . addListener ( "endpage" , endRule ) } } ) , CSSLint . addRule ( { id : "duplicate-background-images" , name : "Disallow duplicate background images" , desc : "Every background-image should be unique. Use a common class for e.g. sprites." , browsers : "All" , init : function ( parser , reporter ) { var rule = this , stack = { } ; parser . addListener ( "property" , function ( event ) { var i , len , name = event . property . text , value = event . value ; if ( name . match ( /background/i ) ) for ( i = 0 , len = value . parts . length ; len > i ; i ++ ) "uri" === value . parts [ i ] . type && ( stack [ value . parts [ i ] . uri ] === void 0 ? stack [ value . parts [ i ] . uri ] = event : reporter . report ( "Background image '" + value . parts [ i ] . uri + "' was used multiple times, first declared at line " + stack [ value . parts [ i ] . uri ] . line + ", col " + stack [ value . parts [ i ] . uri ] . col + "." , event . line , event . col , rule ) ) } ) } } ) , CSSLint . addRule ( { id : "duplicate-properties" , name : "Disallow duplicate properties" , desc : "Duplicate properties must appear one after the other." , browsers : "All" , init : function ( parser , reporter ) { function startRule ( ) { properties = { } } var properties , lastProperty , rule = this ; parser . addListener ( "startrule" , startRule ) , parser . addListener ( "startfontface" , startRule ) , parser . addListener ( "startpage" , startRule ) , parser . addListener ( "startpagemargin" , startRule ) , parser . addListener ( "startkeyframerule" , startRule ) , parser . addListener ( "property" , function ( event ) { var property = event . property , name = property . text . toLowerCase ( ) ; ! properties [ name ] || lastProperty === name && properties [ name ] !== event . value . text || reporter . report ( "Duplicate property '" + event . property + "' found." , event . line , event . col , rule ) , properties [ name ] = event . value . text , lastProperty = name } ) } } ) , CSSLint . addRule ( { id : "empty-rules" , name : "Disallow empty rules" , desc : "Rules without any properties specified should be removed." , browsers : "All" , init : function ( parser , reporter ) { var rule = this , count = 0 ; parser . addListener ( "startrule" , function ( ) { count = 0 } ) , parser . addListener ( "property" , function ( ) { count ++ } ) , parser . addListener ( "endrule" , function ( event ) { var selectors = event . selectors ; 0 === count && reporter . report ( "Rule is empty." , selectors [ 0 ] . line , selectors [ 0 ] . col , rule ) } ) } } ) , CSSLint . addRule ( { id : "errors" , name : "Parsing Errors" , desc : "This rule looks for recoverable syntax errors." , browsers : "All" , init : function ( parser , reporter ) { var rule = this ; parser . addListener ( "error" , function ( event ) { reporter . error ( event . message , event . line , event . col , rule ) } ) } } ) , CSSLint . addRule ( { id : "fallback-colors" , name : "Require fallback colors" , desc : "For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color." , browsers : "IE6,IE7,IE8" , init : function ( parser , reporter ) { function startRule ( ) { properties = { } , lastProperty = null } var lastProperty , properties , rule = this , propertiesToCheck = { color : 1 , background : 1 , "border-color" : 1 , "border-top-color" : 1 , "border-right-color" : 1 , "border-bottom-color" : 1 , "border-left-color" : 1 , border : 1 , "border-top" : 1 , "border-right" : 1 , "border-bottom" : 1 , "border-left" : 1 , "background-color" : 1 } ; parser . addListener ( "startrule" ,
var all = { } ; CSSLint . getRules ( ) . forEach ( function ( x ) { all [ x . id ] = ! 0 } ) , ruleNames . forEach ( function ( x ) { delete all [ x ] } ) , this . ruleset = all } else this . ruleset = null ; this . doc . getValue ( ) && this . deferredUpdate . schedule ( 100 ) } , this . onUpdate = function ( ) { var value = this . doc . getValue ( ) ; if ( ! value ) return this . sender . emit ( "annotate" , [ ] ) ; var infoRules = this . infoRules , result = CSSLint . verify ( value , this . ruleset ) ; this . sender . emit ( "annotate" , result . messages . map ( function ( msg ) { return { row : msg . line - 1 , column : msg . col - 1 , text : msg . message , type : infoRules [ msg . rule . id ] ? "info" : msg . type , rule : msg . rule . name } } ) ) } } . call ( Worker . prototype ) } ) , ace . define ( "ace/lib/es5-shim" , [ "require" , "exports" , "module" ] , function ( ) { function Empty ( ) { } function doesDefinePropertyWork ( object ) { try { return Object . defineProperty ( object , "sentinel" , { } ) , "sentinel" in object } catch ( exception ) { } } function toInteger ( n ) { return n = + n , n !== n ? n = 0 : 0 !== n && n !== 1 / 0 && n !== - ( 1 / 0 ) && ( n = ( n > 0 || - 1 ) * Math . floor ( Math . abs ( n ) ) ) , n } Function . prototype . bind || ( Function . prototype . bind = function ( that ) { var target = this ; if ( "function" != typeof target ) throw new TypeError ( "Function.prototype.bind called on incompatible " + target ) ; var args = slice . call ( arguments , 1 ) , bound = function ( ) { if ( this instanceof bound ) { var result = target . apply ( this , args . concat ( slice . call ( arguments ) ) ) ; return Object ( result ) === result ? result : this } return target . apply ( that , args . concat ( slice . call ( arguments ) ) ) } ; return target . prototype && ( Empty . prototype = target . prototype , bound . prototype = new Empty , Empty . prototype = null ) , bound } ) ; var defineGetter , defineSetter , lookupGetter , lookupSetter , supportsAccessors , call = Function . prototype . call , prototypeOfArray = Array . prototype , prototypeOfObject = Object . prototype , slice = prototypeOfArray . slice , _toString = call . bind ( prototypeOfObject . toString ) , owns = call . bind ( prototypeOfObject . hasOwnProperty ) ; if ( ( supportsAccessors = owns ( prototypeOfObject , "__defineGetter__" ) ) && ( defineGetter = call . bind ( prototypeOfObject . _ _defineGetter _ _ ) , defineSetter = call . bind ( prototypeOfObject . _ _defineSetter _ _ ) , lookupGetter = call . bind ( prototypeOfObject . _ _lookupGetter _ _ ) , lookupSetter = call . bind ( prototypeOfObject . _ _lookupSetter _ _ ) ) , 2 != [ 1 , 2 ] . splice ( 0 ) . length ) if ( function ( ) { function makeArray ( l ) { var a = Array ( l + 2 ) ; return a [ 0 ] = a [ 1 ] = 0 , a } var lengthBefore , array = [ ] ; return array . splice . apply ( array , makeArray ( 20 ) ) , array . splice . apply ( array , makeArray ( 26 ) ) , lengthBefore = array . length , array . splice ( 5 , 0 , "XXX" ) , lengthBefore + 1 == array . length , lengthBefore + 1 == array . length ? ! 0 : void 0 } ( ) ) { var array _splice = Array . prototype . splice ; Array . prototype . splice = function ( start , deleteCount ) { return arguments . length ? array _splice . apply ( this , [ void 0 === start ? 0 : start , void 0 === deleteCount ? this . length - start : deleteCount ] . concat ( slice . call ( arguments , 2 ) ) ) : [ ] } } else Array . prototype . splice = function ( pos , removeCount ) { var length = this . length ; pos > 0 ? pos > length && ( pos = length ) : void 0 == pos ? pos = 0 : 0 > pos && ( pos = Math . max ( length + pos , 0 ) ) , length > pos + removeCount || ( removeCount = length - pos ) ; var removed = this . slice ( pos , pos + removeCount ) , insert = slice . call ( arguments , 2 ) , add = insert . length ; if ( pos === length ) add && this . push . apply ( this , insert ) ; else { var remove = Math . min ( removeCount , length - pos ) , tailOldPos = pos + remove , tailNewPos = tailOldPos + add - remove , tailCount = length - tailOldPos , lengthAfterRemove = length - remove ; if ( tailOldPos > tailNewPos ) for ( var i = 0 ; tailCount > i ; ++ i ) this [ tailNewPos + i ] = this [ tailOldPos + i ] ; else if ( tailNewPos > tailOldPos ) for ( i = tailCount ; i -- ; ) this [ tailNewPos + i ] = this [ tailOldPos + i ] ; if ( add && pos === lengthAfterRemove ) this . length = lengthAfterRemove , this . push . apply ( this , insert ) ; else for ( this . length = lengthAfterRemove + add , i = 0 ; add > i ; ++ i ) this [ pos + i ] = insert [ i ] } return removed } ; Array . isArray || ( Array . isArray = function ( obj ) { return "[object Array]" == _toString ( obj ) } ) ; var boxedString = Object ( "a" ) , splitString = "a" != boxedString [ 0 ] || ! ( 0 in boxedString ) ; if ( Array . prototype . forEach || ( Array . prototype . forEach = function ( fun ) { var object = toObject ( this ) , self = splitString && "[object String]" == _toString ( this ) ? this . split ( "" ) : object , thisp = arguments [ 1 ] , i = - 1 , length = self . length >>> 0 ; if ( "[object Function]" != _toString ( fun ) ) throw new TypeError ; for ( ; length > ++ i ; ) i in self && fun . call ( thisp , self [ i ] , i , object ) } ) , Array . prototype . map || ( Array . prototype . ma
if ( node . node === element ) break ; node . isSpecial ( ) && ( furthestBlock = node ) } return furthestBlock } , ElementStack . prototype . findIndex = function ( localName ) { for ( var i = this . elements . length - 1 ; i >= 0 ; i -- ) if ( this . elements [ i ] . localName == localName ) return i ; return - 1 } , ElementStack . prototype . remove _openElements _until = function ( callback ) { for ( var element , finished = ! 1 ; ! finished ; ) element = this . elements . pop ( ) , finished = callback ( element ) ; return element } , Object . defineProperty ( ElementStack . prototype , "top" , { get : function ( ) { return this . elements [ this . elements . length - 1 ] } } ) , Object . defineProperty ( ElementStack . prototype , "length" , { get : function ( ) { return this . elements . length } } ) , exports . ElementStack = ElementStack } , { } ] , 2 : [ function ( _dereq _ , module , exports ) { function isAlphaNumeric ( c ) { return c >= "0" && "9" >= c || c >= "a" && "z" >= c || c >= "A" && "Z" >= c } function isHexDigit ( c ) { return c >= "0" && "9" >= c || c >= "a" && "f" >= c || c >= "A" && "F" >= c } function isDecimalDigit ( c ) { return c >= "0" && "9" >= c } var entities = _dereq _ ( "html5-entities" ) , InputStream = _dereq _ ( "./InputStream" ) . InputStream , namedEntityPrefixes = { } ; Object . keys ( entities ) . forEach ( function ( entityKey ) { for ( var i = 0 ; entityKey . length > i ; i ++ ) namedEntityPrefixes [ entityKey . substring ( 0 , i + 1 ) ] = ! 0 } ) ; var EntityParser = { } ; EntityParser . consumeEntity = function ( buffer , tokenizer , additionalAllowedCharacter ) { var decodedCharacter = "" , consumedCharacters = "" , ch = buffer . char ( ) ; if ( ch === InputStream . EOF ) return ! 1 ; if ( consumedCharacters += ch , " " == ch || "\\n" == ch || "\v" == ch || " " == ch || "<" == ch || "&" == ch ) return buffer . unget ( consumedCharacters ) , ! 1 ; if ( additionalAllowedCharacter === ch ) return buffer . unget ( consumedCharacters ) , ! 1 ; if ( "#" == ch ) { if ( ch = buffer . shift ( 1 ) , ch === InputStream . EOF ) return tokenizer . _parseError ( "expected-numeric-entity-but-got-eof" ) , buffer . unget ( consumedCharacters ) , ! 1 ; consumedCharacters += ch ; var radix = 10 , isDigit = isDecimalDigit ; if ( "x" == ch || "X" == ch ) { if ( radix = 16 , isDigit = isHexDigit , ch = buffer . shift ( 1 ) , ch === InputStream . EOF ) return tokenizer . _parseError ( "expected-numeric-entity-but-got-eof" ) , buffer . unget ( consumedCharacters ) , ! 1 ; consumedCharacters += ch } if ( isDigit ( ch ) ) { for ( var code = "" ; ch !== InputStream . EOF && isDigit ( ch ) ; ) code += ch , ch = buffer . char ( ) ; code = parseInt ( code , radix ) ; var replacement = this . replaceEntityNumbers ( code ) ; if ( replacement && ( tokenizer . _parseError ( "invalid-numeric-entity-replaced" ) , code = replacement ) , code > 65535 && 1114111 >= code ) { code -= 65536 ; var first = ( ( 1047552 & code ) >> 10 ) + 55296 , second = ( 1023 & code ) + 56320 ; decodedCharacter = String . fromCharCode ( first , second ) } else decodedCharacter = String . fromCharCode ( code ) ; return ";" !== ch && ( tokenizer . _parseError ( "numeric-entity-without-semicolon" ) , buffer . unget ( ch ) ) , decodedCharacter } return buffer . unget ( consumedCharacters ) , tokenizer . _parseError ( "expected-numeric-entity" ) , ! 1 } if ( ch >= "a" && "z" >= ch || ch >= "A" && "Z" >= ch ) { for ( var mostRecentMatch = "" ; namedEntityPrefixes [ consumedCharacters ] && ( entities [ consumedCharacters ] && ( mostRecentMatch = consumedCharacters ) , ";" != ch ) && ( ch = buffer . char ( ) , ch !== InputStream . EOF ) ; ) consumedCharacters += ch ; return mostRecentMatch ? ( decodedCharacter = entities [ mostRecentMatch ] , ";" === ch || ! additionalAllowedCharacter || ! isAlphaNumeric ( ch ) && "=" !== ch ? ( consumedCharacters . length > mostRecentMatch . length && buffer . unget ( consumedCharacters . substring ( mostRecentMatch . length ) ) , ";" !== ch && tokenizer . _parseError ( "named-entity-without-semicolon" ) , decodedCharacter ) : ( buffer . unget ( consumedCharacters ) , ! 1 ) ) : ( tokenizer . _parseError ( "expected-named-entity" ) , buffer . unget ( consumedCharacters ) , ! 1 ) } } , EntityParser . replaceEntityNumbers = function ( c ) { switch ( c ) { case 0 : return 65533 ; case 19 : return 16 ; case 128 : return 8364 ; case 129 : return 129 ; case 130 : return 8218 ; case 131 : return 402 ; case 132 : return 8222 ; case 133 : return 8230 ; case 134 : return 8224 ; case 135 : return 8225 ; case 136 : return 710 ; case 137 : return 8240 ; case 138 : return 352 ; case 139 : return 8249 ; case 140 : return 338 ; case 141 : return 141 ; case 142 : return 381 ; case 143 : return 143 ; case 144 : return 144 ; case 145 : return 8216 ; case 146 : return 8217 ; case 147 : return 8220 ; case 148 : return 8221 ; case 149 : return 8226 ; case 150 : return 8211 ; case 151 : return 8212 ; case 152 : return 732 ; case 153 : return 8482 ; case 154 : return 353 ; case 155 : return 8250 ; case 156 : return 339 ; case 157 : return 157 ; cas
} function attribute _value _double _quoted _state ( buffer ) { var data = buffer . char ( ) ; if ( data === InputStream . EOF ) tokenizer . _parseError ( "eof-in-attribute-value-double-quote" ) , buffer . unget ( data ) , tokenizer . setState ( data _state ) ; else if ( '"' === data ) tokenizer . setState ( after _attribute _value _state ) ; else if ( "&" === data ) this . _additionalAllowedCharacter = '"' , tokenizer . setState ( character _reference _in _attribute _value _state ) ; else if ( "\\0" === data ) tokenizer . _parseError ( "invalid-codepoint" ) , tokenizer . _currentAttribute ( ) . nodeValue += "\uFFFD" ; else { var s = buffer . matchUntil ( '[\\0"&]' ) ; data += s , tokenizer . _currentAttribute ( ) . nodeValue += data } return ! 0 } function attribute _value _single _quoted _state ( buffer ) { var data = buffer . char ( ) ; return data === InputStream . EOF ? ( tokenizer . _parseError ( "eof-in-attribute-value-single-quote" ) , buffer . unget ( data ) , tokenizer . setState ( data _state ) ) : "'" === data ? tokenizer . setState ( after _attribute _value _state ) : "&" === data ? ( this . _additionalAllowedCharacter = "'" , tokenizer . setState ( character _reference _in _attribute _value _state ) ) : "\\0" === data ? ( tokenizer . _parseError ( "invalid-codepoint" ) , tokenizer . _currentAttribute ( ) . nodeValue += "\uFFFD" ) : tokenizer . _currentAttribute ( ) . nodeValue += data + buffer . matchUntil ( "\\0|['&]" ) , ! 0 } function attribute _value _unquoted _state ( buffer ) { var data = buffer . char ( ) ; if ( data === InputStream . EOF ) tokenizer . _parseError ( "eof-after-attribute-value" ) , buffer . unget ( data ) , tokenizer . setState ( data _state ) ; else if ( isWhitespace ( data ) ) tokenizer . setState ( before _attribute _name _state ) ; else if ( "&" === data ) this . _additionalAllowedCharacter = ">" , tokenizer . setState ( character _reference _in _attribute _value _state ) ; else if ( ">" === data ) tokenizer . _emitCurrentToken ( ) ; else if ( '"' === data || "'" === data || "=" === data || "\`" === data || "<" === data ) tokenizer . _parseError ( "unexpected-character-in-unquoted-attribute-value" ) , tokenizer . _currentAttribute ( ) . nodeValue += data , buffer . commit ( ) ; else if ( "\\0" === data ) tokenizer . _parseError ( "invalid-codepoint" ) , tokenizer . _currentAttribute ( ) . nodeValue += "\uFFFD" ; else { var o = buffer . matchUntil ( "\\0|[ \\n\v\\f \\r&<>\\" '=\`]");o===InputStream.EOF&&(tokenizer._parseError("eof-in-attribute-value-no-quotes"),tokenizer._emitCurrentToken()),buffer.commit(),tokenizer._currentAttribute().nodeValue+=data+o}return!0}function character_reference_in_attribute_value_state(buffer){var character=EntityParser.consumeEntity(buffer,tokenizer,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=character||"&",' "'===this._additionalAllowedCharacter?tokenizer.setState(attribute_value_double_quoted_state):" ' "===this._additionalAllowedCharacter?tokenizer.setState(attribute_value_single_quoted_state):" > "===this._additionalAllowedCharacter&&tokenizer.setState(attribute_value_unquoted_state),!0}function after_attribute_value_state(buffer){var data=buffer.char();return data===InputStream.EOF?(tokenizer._parseError(" eof - after - attribute - value "),buffer.unget(data),tokenizer.setState(data_state)):isWhitespace(data)?tokenizer.setState(before_attribute_name_state):" > "===data?(tokenizer.setState(data_state),tokenizer._emitCurrentToken()):" / "===data?tokenizer.setState(self_closing_tag_state):(tokenizer._parseError(" unexpected - character - after - attribute - value "),buffer.unget(data),tokenizer.setState(before_attribute_name_state)),!0}function self_closing_tag_state(buffer){var c=buffer.char();return c===InputStream.EOF?(tokenizer._parseError(" unexpected - eof - after - solidus - in - tag "),buffer.unget(c),tokenizer.setState(data_state)):" > "===c?(tokenizer._currentToken.selfClosing=!0,tokenizer.setState(data_state),tokenizer._emitCurrentToken()):(tokenizer._parseError(" unexpected - character - after - solidus - in - tag "),buffer.unget(c),tokenizer.setState(before_attribute_name_state)),!0}function bogus_comment_state(buffer){var data=buffer.matchUntil(" > ");return data=data.replace(/\\u0000/g," \uFFFD "),buffer.char(),tokenizer._emitToken({type:" Comment ",data:data}),tokenizer.setState(data_state),!0}function markup_declaration_open_state(buffer){var chars=buffer.shift(2);if(" -- "===chars)tokenizer._currentToken={type:" Comment ",data:" " } , tokenizer . setState ( comment _start _state ) ; else { var newchars = buffer
- 1 != [ "title" , "style" , "script" ] . indexOf ( name ) && ( tree . parseError ( "expected-named-closing-tag-but-got-eof" , { name : name } ) , tree . popElement ( ) ) , this . anythingElse ( ) , tree . insertionMode . processEOF ( ) } , modes . inHead . processCharacters = function ( buffer ) { var leadingWhitespace = buffer . takeLeadingWhitespace ( ) ; leadingWhitespace && tree . insertText ( leadingWhitespace ) , buffer . length && ( this . anythingElse ( ) , tree . insertionMode . processCharacters ( buffer ) ) } , modes . inHead . startTagHtml = function ( name , attributes ) { modes . inBody . processStartTag ( name , attributes ) } , modes . inHead . startTagHead = function ( ) { tree . parseError ( "two-heads-are-not-better-than-one" ) } , modes . inHead . startTagTitle = function ( name , attributes ) { tree . processGenericRCDATAStartTag ( name , attributes ) } , modes . inHead . startTagNoScript = function ( name , attributes ) { return tree . scriptingEnabled ? tree . processGenericRawTextStartTag ( name , attributes ) : ( tree . insertElement ( name , attributes ) , tree . setInsertionMode ( "inHeadNoscript" ) , void 0 ) } , modes . inHead . startTagNoFramesStyle = function ( name , attributes ) { tree . processGenericRawTextStartTag ( name , attributes ) } , modes . inHead . startTagScript = function ( name , attributes ) { tree . insertElement ( name , attributes ) , tree . tokenizer . setState ( Tokenizer . SCRIPT _DATA ) , tree . originalInsertionMode = tree . insertionModeName , tree . setInsertionMode ( "text" ) } , modes . inHead . startTagBaseBasefontBgsoundLink = function ( name , attributes ) { tree . insertSelfClosingElement ( name , attributes ) } , modes . inHead . startTagMeta = function ( name , attributes ) { tree . insertSelfClosingElement ( name , attributes ) } , modes . inHead . startTagOther = function ( name , attributes , selfClosing ) { this . anythingElse ( ) , tree . insertionMode . processStartTag ( name , attributes , selfClosing ) } , modes . inHead . endTagHead = function ( ) { "head" == tree . openElements . item ( tree . openElements . length - 1 ) . localName ? tree . openElements . pop ( ) : tree . parseError ( "unexpected-end-tag" , { name : "head" } ) , tree . setInsertionMode ( "afterHead" ) } , modes . inHead . endTagHtmlBodyBr = function ( name ) { this . anythingElse ( ) , tree . insertionMode . processEndTag ( name ) } , modes . inHead . endTagOther = function ( name ) { tree . parseError ( "unexpected-end-tag" , { name : name } ) } , modes . inHead . anythingElse = function ( ) { this . endTagHead ( "head" ) } , modes . afterHead = Object . create ( modes . base ) , modes . afterHead . start _tag _handlers = { html : "startTagHtml" , head : "startTagHead" , body : "startTagBody" , frameset : "startTagFrameset" , base : "startTagFromHead" , link : "startTagFromHead" , meta : "startTagFromHead" , script : "startTagFromHead" , style : "startTagFromHead" , title : "startTagFromHead" , "-default" : "startTagOther" } , modes . afterHead . end _tag _handlers = { body : "endTagBodyHtmlBr" , html : "endTagBodyHtmlBr" , br : "endTagBodyHtmlBr" , "-default" : "endTagOther" } , modes . afterHead . processEOF = function ( ) { this . anythingElse ( ) , tree . insertionMode . processEOF ( ) } , modes . afterHead . processCharacters = function ( buffer ) { var leadingWhitespace = buffer . takeLeadingWhitespace ( ) ; leadingWhitespace && tree . insertText ( leadingWhitespace ) , buffer . length && ( this . anythingElse ( ) , tree . insertionMode . processCharacters ( buffer ) ) } , modes . afterHead . startTagHtml = function ( name , attributes ) { modes . inBody . processStartTag ( name , attributes ) } , modes . afterHead . startTagBody = function ( name , attributes ) { tree . framesetOk = ! 1 , tree . insertBodyElement ( attributes ) , tree . setInsertionMode ( "inBody" ) } , modes . afterHead . startTagFrameset = function ( name , attributes ) { tree . insertElement ( name , attributes ) , tree . setInsertionMode ( "inFrameset" ) } , modes . afterHead . startTagFromHead = function ( name , attributes , selfClosing ) { tree . parseError ( "unexpected-start-tag-out-of-my-head" , { name : name } ) , tree . openElements . push ( tree . head ) , modes . inHead . processStartTag ( name , attributes , selfClosing ) , tree . openElements . remove ( tree . head ) } , modes . afterHead . startTagHead = function ( name ) { tree . parseError ( "unexpected-start-tag" , { name : name } ) } , modes . afterHead . startTagOther = function ( name , attributes , selfClosing ) { this . anythingElse ( ) , tree . insertionMode . processStartTag ( name , attributes , selfClosing ) } , modes . afterHead . endTagBodyHtmlBr = function ( name ) { this . anythingElse ( ) , tree . insertionMode . processEndTag ( name ) } , modes . afterHead . endTagOther = function ( name ) { tree . parseError ( "unexpected-end-tag" , { name : name } ) } , modes . afterHead . anythingElse = function ( ) { tree . insertBodyElement ( [ ] ) , tree . setI
tree . setInsertionMode ( "inTableText" ) , tree . originalInsertionMode = originalInsertionMode , tree . insertionMode . processCharacters ( data ) } else tree . redirectAttachToFosterParent = ! 0 , modes . inBody . processCharacters ( data ) , tree . redirectAttachToFosterParent = ! 1 } , modes . inTable . startTagCaption = function ( name , attributes ) { tree . openElements . popUntilTableScopeMarker ( ) , tree . activeFormattingElements . push ( Marker ) , tree . insertElement ( name , attributes ) , tree . setInsertionMode ( "inCaption" ) } , modes . inTable . startTagColgroup = function ( name , attributes ) { tree . openElements . popUntilTableScopeMarker ( ) , tree . insertElement ( name , attributes ) , tree . setInsertionMode ( "inColumnGroup" ) } , modes . inTable . startTagCol = function ( name , attributes ) { this . startTagColgroup ( "colgroup" , [ ] ) , tree . insertionMode . processStartTag ( name , attributes ) } , modes . inTable . startTagRowGroup = function ( name , attributes ) { tree . openElements . popUntilTableScopeMarker ( ) , tree . insertElement ( name , attributes ) , tree . setInsertionMode ( "inTableBody" ) } , modes . inTable . startTagImplyTbody = function ( name , attributes ) { this . startTagRowGroup ( "tbody" , [ ] ) , tree . insertionMode . processStartTag ( name , attributes ) } , modes . inTable . startTagTable = function ( name , attributes ) { tree . parseError ( "unexpected-start-tag-implies-end-tag" , { startName : "table" , endName : "table" } ) , tree . insertionMode . processEndTag ( "table" ) , tree . context || tree . insertionMode . processStartTag ( name , attributes ) } , modes . inTable . startTagStyleScript = function ( name , attributes ) { modes . inHead . processStartTag ( name , attributes ) } , modes . inTable . startTagInput = function ( name , attributes ) { for ( var key in attributes ) if ( "type" == attributes [ key ] . nodeName . toLowerCase ( ) ) { if ( "hidden" == attributes [ key ] . nodeValue . toLowerCase ( ) ) return tree . parseError ( "unexpected-hidden-input-in-table" ) , tree . insertElement ( name , attributes ) , tree . openElements . pop ( ) , void 0 ; break } this . startTagOther ( name , attributes ) } , modes . inTable . startTagForm = function ( name , attributes ) { tree . parseError ( "unexpected-form-in-table" ) , tree . form || ( tree . insertElement ( name , attributes ) , tree . form = tree . currentStackItem ( ) , tree . openElements . pop ( ) ) } , modes . inTable . startTagOther = function ( name , attributes , selfClosing ) { tree . parseError ( "unexpected-start-tag-implies-table-voodoo" , { name : name } ) , tree . redirectAttachToFosterParent = ! 0 , modes . inBody . processStartTag ( name , attributes , selfClosing ) , tree . redirectAttachToFosterParent = ! 1 } , modes . inTable . endTagTable = function ( name ) { tree . openElements . inTableScope ( name ) ? ( tree . generateImpliedEndTags ( ) , tree . currentStackItem ( ) . localName != name && tree . parseError ( "end-tag-too-early-named" , { gotName : "table" , expectedName : tree . currentStackItem ( ) . localName } ) , tree . openElements . popUntilPopped ( "table" ) , tree . resetInsertionMode ( ) ) : ( assert . ok ( tree . context ) , tree . parseError ( "unexpected-end-tag" , { name : name } ) ) } , modes . inTable . endTagIgnore = function ( name ) { tree . parseError ( "unexpected-end-tag" , { name : name } ) } , modes . inTable . endTagOther = function ( name ) { tree . parseError ( "unexpected-end-tag-implies-table-voodoo" , { name : name } ) , tree . redirectAttachToFosterParent = ! 0 , modes . inBody . processEndTag ( name ) , tree . redirectAttachToFosterParent = ! 1 } , modes . inTableText = Object . create ( modes . base ) , modes . inTableText . flushCharacters = function ( ) { var characters = tree . pendingTableCharacters . join ( "" ) ; isAllWhitespace ( characters ) ? tree . insertText ( characters ) : ( tree . redirectAttachToFosterParent = ! 0 , tree . reconstructActiveFormattingElements ( ) , tree . insertText ( characters ) , tree . framesetOk = ! 1 , tree . redirectAttachToFosterParent = ! 1 ) , tree . pendingTableCharacters = [ ] } , modes . inTableText . processComment = function ( data ) { this . flushCharacters ( ) , tree . setInsertionMode ( tree . originalInsertionMode ) , tree . insertionMode . processComment ( data ) } , modes . inTableText . processEOF = function ( ) { this . flushCharacters ( ) , tree . setInsertionMode ( tree . originalInsertionMode ) , tree . insertionMode . processEOF ( ) } , modes . inTableText . processCharacters = function ( buffer ) { var characters = buffer . takeRemaining ( ) ; characters = characters . replace ( /\\u0000/g , function ( ) { return tree . parseError ( "invalid-codepoint" ) , "" } ) , characters && tree . pendingTableCharacters . push ( characters ) } , modes . inTableText . processStartTag = function ( name , attributes , selfClosing ) { this . flushCharacters ( ) , tree . setInsertionMode ( tree . origina
} , { } ] , 8 : [ function ( _dereq _ , module ) { module . exports = { "null-character" : "Null character in input stream, replaced with U+FFFD." , "invalid-codepoint" : "Invalid codepoint in stream" , "incorrectly-placed-solidus" : "Solidus (/) incorrectly placed in tag." , "incorrect-cr-newline-entity" : "Incorrect CR newline entity, replaced with LF." , "illegal-windows-1252-entity" : "Entity used with illegal number (windows-1252 reference)." , "cant-convert-numeric-entity" : "Numeric entity couldn't be converted to character (codepoint U+{charAsInt})." , "invalid-numeric-entity-replaced" : "Numeric entity represents an illegal codepoint. Expanded to the C1 controls range." , "numeric-entity-without-semicolon" : "Numeric entity didn't end with ';'." , "expected-numeric-entity-but-got-eof" : "Numeric entity expected. Got end of file instead." , "expected-numeric-entity" : "Numeric entity expected but none found." , "named-entity-without-semicolon" : "Named entity didn't end with ';'." , "expected-named-entity" : "Named entity expected. Got none." , "attributes-in-end-tag" : "End tag contains unexpected attributes." , "self-closing-flag-on-end-tag" : "End tag contains unexpected self-closing flag." , "bare-less-than-sign-at-eof" : "End of file after <." , "expected-tag-name-but-got-right-bracket" : "Expected tag name. Got '>' instead." , "expected-tag-name-but-got-question-mark" : "Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)" , "expected-tag-name" : "Expected tag name. Got something else instead." , "expected-closing-tag-but-got-right-bracket" : "Expected closing tag. Got '>' instead. Ignoring '</>'." , "expected-closing-tag-but-got-eof" : "Expected closing tag. Unexpected end of file." , "expected-closing-tag-but-got-char" : "Expected closing tag. Unexpected character '{data}' found." , "eof-in-tag-name" : "Unexpected end of file in the tag name." , "expected-attribute-name-but-got-eof" : "Unexpected end of file. Expected attribute name instead." , "eof-in-attribute-name" : "Unexpected end of file in attribute name." , "invalid-character-in-attribute-name" : "Invalid character in attribute name." , "duplicate-attribute" : "Dropped duplicate attribute '{name}' on tag." , "expected-end-of-tag-but-got-eof" : "Unexpected end of file. Expected = or end of tag." , "expected-attribute-value-but-got-eof" : "Unexpected end of file. Expected attribute value." , "expected-attribute-value-but-got-right-bracket" : "Expected attribute value. Got '>' instead." , "unexpected-character-in-unquoted-attribute-value" : "Unexpected character in unquoted attribute" , "invalid-character-after-attribute-name" : "Unexpected character after attribute name." , "unexpected-character-after-attribute-value" : "Unexpected character after attribute value." , "eof-in-attribute-value-double-quote" : 'Unexpected end of file in attribute value (").' , "eof-in-attribute-value-single-quote" : "Unexpected end of file in attribute value (')." , "eof-in-attribute-value-no-quotes" : "Unexpected end of file in attribute value." , "eof-after-attribute-value" : "Unexpected end of file after attribute value." , "unexpected-eof-after-solidus-in-tag" : "Unexpected end of file in tag. Expected >." , "unexpected-character-after-solidus-in-tag" : "Unexpected character after / in tag. Expected >." , "expected-dashes-or-doctype" : "Expected '--' or 'DOCTYPE'. Not found." , "unexpected-bang-after-double-dash-in-comment" : "Unexpected ! after -- in comment." , "incorrect-comment" : "Incorrect comment." , "eof-in-comment" : "Unexpected end of file in comment." , "eof-in-comment-end-dash" : "Unexpected end of file in comment (-)." , "unexpected-dash-after-double-dash-in-comment" : "Unexpected '-' after '--' found in comment." , "eof-in-comment-double-dash" : "Unexpected end of file in comment (--)." , "eof-in-comment-end-bang-state" : "Unexpected end of file in comment." , "unexpected-char-in-comment" : "Unexpected character in comment found." , "need-space-after-doctype" : "No space after literal string 'DOCTYPE'." , "expected-doctype-name-but-got-right-bracket" : "Unexpected > character. Expected DOCTYPE name." , "expected-doctype-name-but-got-eof" : "Unexpected end of file. Expected DOCTYPE name." , "eof-in-doctype-name" : " Unexpected end of file in
} , { } ] , 13 : [ function ( _dereq _ , module ) { function replacer ( key , value ) { return util . isUndefined ( value ) ? "" + value : ! util . isNumber ( value ) || ! isNaN ( value ) && isFinite ( value ) ? util . isFunction ( value ) || util . isRegExp ( value ) ? "" + value : value : "" + value } function truncate ( s , n ) { return util . isString ( s ) ? n > s . length ? s : s . slice ( 0 , n ) : s } function getMessage ( self ) { return truncate ( JSON . stringify ( self . actual , replacer ) , 128 ) + " " + self . operator + " " + truncate ( JSON . stringify ( self . expected , replacer ) , 128 ) } function fail ( actual , expected , message , operator , stackStartFunction ) { throw new assert . AssertionError ( { message : message , actual : actual , expected : expected , operator : operator , stackStartFunction : stackStartFunction } ) } function ok ( value , message ) { value || fail ( value , ! 0 , message , "==" , assert . ok ) } function _deepEqual ( actual , expected ) { if ( actual === expected ) return ! 0 ; if ( util . isBuffer ( actual ) && util . isBuffer ( expected ) ) { if ( actual . length != expected . length ) return ! 1 ; for ( var i = 0 ; actual . length > i ; i ++ ) if ( actual [ i ] !== expected [ i ] ) return ! 1 ; return ! 0 } return util . isDate ( actual ) && util . isDate ( expected ) ? actual . getTime ( ) === expected . getTime ( ) : util . isRegExp ( actual ) && util . isRegExp ( expected ) ? actual . source === expected . source && actual . global === expected . global && actual . multiline === expected . multiline && actual . lastIndex === expected . lastIndex && actual . ignoreCase === expected . ignoreCase : util . isObject ( actual ) || util . isObject ( expected ) ? objEquiv ( actual , expected ) : actual == expected } function isArguments ( object ) { return "[object Arguments]" == Object . prototype . toString . call ( object ) } function objEquiv ( a , b ) { if ( util . isNullOrUndefined ( a ) || util . isNullOrUndefined ( b ) ) return ! 1 ; if ( a . prototype !== b . prototype ) return ! 1 ; if ( isArguments ( a ) ) return isArguments ( b ) ? ( a = pSlice . call ( a ) , b = pSlice . call ( b ) , _deepEqual ( a , b ) ) : ! 1 ; try { var key , i , ka = objectKeys ( a ) , kb = objectKeys ( b ) } catch ( e ) { return ! 1 } if ( ka . length != kb . length ) return ! 1 ; for ( ka . sort ( ) , kb . sort ( ) , i = ka . length - 1 ; i >= 0 ; i -- ) if ( ka [ i ] != kb [ i ] ) return ! 1 ; for ( i = ka . length - 1 ; i >= 0 ; i -- ) if ( key = ka [ i ] , ! _deepEqual ( a [ key ] , b [ key ] ) ) return ! 1 ; return ! 0 } function expectedException ( actual , expected ) { return actual && expected ? "[object RegExp]" == Object . prototype . toString . call ( expected ) ? expected . test ( actual ) : actual instanceof expected ? ! 0 : expected . call ( { } , actual ) === ! 0 ? ! 0 : ! 1 : ! 1 } function _throws ( shouldThrow , block , expected , message ) { var actual ; util . isString ( expected ) && ( message = expected , expected = null ) ; try { block ( ) } catch ( e ) { actual = e } if ( message = ( expected && expected . name ? " (" + expected . name + ")." : "." ) + ( message ? " " + message : "." ) , shouldThrow && ! actual && fail ( actual , expected , "Missing expected exception" + message ) , ! shouldThrow && expectedException ( actual , expected ) && fail ( actual , expected , "Got unwanted exception" + message ) , shouldThrow && actual && expected && ! expectedException ( actual , expected ) || ! shouldThrow && actual ) throw actual } var util = _dereq _ ( "util/" ) , pSlice = Array . prototype . slice , hasOwn = Object . prototype . hasOwnProperty , assert = module . exports = ok ; assert . AssertionError = function ( options ) { this . name = "AssertionError" , this . actual = options . actual , this . expected = options . expected , this . operator = options . operator , options . message ? ( this . message = options . message , this . generatedMessage = ! 1 ) : ( this . message = getMessage ( this ) , this . generatedMessage = ! 0 ) ; var stackStartFunction = options . stackStartFunction || fail ; if ( Error . captureStackTrace ) Error . captureStackTrace ( this , stackStartFunction ) ; else { var err = Error ( ) ; if ( err . stack ) { var out = err . stack , fn _name = stackStartFunction . name , idx = out . indexOf ( "\\n" + fn _name ) ; if ( idx >= 0 ) { var next _line = out . indexOf ( "\\n" , idx + 1 ) ; out = out . substring ( next _line + 1 ) } this . stack = out } } } , util . inherits ( assert . AssertionError , Error ) , assert . fail = fail , assert . ok = ok , assert . equal = function ( actual , expected , message ) { actual != expected && fail ( actual , expected , message , "==" , assert . equal ) } , assert . notEqual = function ( actual , expected , message ) { actual == expected && fail ( actual , expected , message , "!=" , assert . notEqual ) } , assert . deepEqual = function ( actual , expected , message ) { _deepEqual ( actual , expected ) || fail ( actual , expected , message , "deepEqual" , assert . deepEqual ) } , assert . notDeepEqual = function ( actual , expected , message ) { _deepEqual ( actual , expected ) && fail ( actual , expected , message , "notDeepEqual" , assert . notDeepEqual ) } , assert . strictEqual = function ( actual , expe
} ) ; try { Object . freeze ( function ( ) { } ) } catch ( exception ) { Object . freeze = function ( freezeObject ) { return function ( object ) { return "function" == typeof object ? object : freezeObject ( object ) } } ( Object . freeze ) } if ( Object . preventExtensions || ( Object . preventExtensions = function ( object ) { return object } ) , Object . isSealed || ( Object . isSealed = function ( ) { return ! 1 } ) , Object . isFrozen || ( Object . isFrozen = function ( ) { return ! 1 } ) , Object . isExtensible || ( Object . isExtensible = function ( object ) { if ( Object ( object ) === object ) throw new TypeError ; for ( var name = "" ; owns ( object , name ) ; ) name += "?" ; object [ name ] = ! 0 ; var returnValue = owns ( object , name ) ; return delete object [ name ] , returnValue } ) , ! Object . keys ) { var hasDontEnumBug = ! 0 , dontEnums = [ "toString" , "toLocaleString" , "valueOf" , "hasOwnProperty" , "isPrototypeOf" , "propertyIsEnumerable" , "constructor" ] , dontEnumsLength = dontEnums . length ; for ( var key in { toString : null } ) hasDontEnumBug = ! 1 ; Object . keys = function ( object ) { if ( "object" != typeof object && "function" != typeof object || null === object ) throw new TypeError ( "Object.keys called on a non-object" ) ; var keys = [ ] ; for ( var name in object ) owns ( object , name ) && keys . push ( name ) ; if ( hasDontEnumBug ) for ( var i = 0 , ii = dontEnumsLength ; ii > i ; i ++ ) { var dontEnum = dontEnums [ i ] ; owns ( object , dontEnum ) && keys . push ( dontEnum ) } return keys } } Date . now || ( Date . now = function ( ) { return ( new Date ) . getTime ( ) } ) ; var ws = " \\n\v\\f\\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\\u2028\\u2029\uFEFF" ; if ( ! String . prototype . trim || ws . trim ( ) ) { ws = "[" + ws + "]" ; var trimBeginRegexp = RegExp ( "^" + ws + ws + "*" ) , trimEndRegexp = RegExp ( ws + ws + "*$" ) ; String . prototype . trim = function ( ) { return ( this + "" ) . replace ( trimBeginRegexp , "" ) . replace ( trimEndRegexp , "" ) } } var toObject = function ( o ) { if ( null == o ) throw new TypeError ( "can't convert " + o + " to object" ) ; return Object ( o ) } } ) ; ` ;ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(w,E,B){var T=w("../lib/oop"),b=w("./text_highlight_rules").TextHighlightRules,f=function(){this. $ rules={start:[{token:"comment.doc.tag",regex:"@[ \\ w \\ d_]+"},f.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};T.inherits(f,b),f.getTagRule=function(s){return{token:"comment.doc.tag.storage.type",regex:" \\ b(?:TODO|FIXME|XXX|HACK) \\ b"}},f.getStartRule=function(s){return{token:"comment.doc",regex:" \\ / \\ *(?= \\ *)",next:s}},f.getEndRule=function(s){return{token:"comment.doc",regex:" \\ * \\ /",next:s}},E.DocCommentHighlightRules=f});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(w,E,B){var T=w("../lib/oop"),b=w("./doc_comment_highlight_rules").DocCommentHighlightRules,f=w("./text_highlight_rules").TextHighlightRules,s="[a-zA-Z \\ $ _ \x A1- \u FFFF][a-zA-Z \\ d \\ $ _ \x A1- \u FFFF]*",a=function(i){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",o=" \\ \\ (?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this. $ rules={no_regex:[b.get
` ){var o=i.getCursorPosition(),u=t.getLine(o.row),h=new f(t,o.row,o.column),d=h.getCurrentToken();if(d&&d.type.indexOf("tag-close")!==-1){if(d.value=="/>")return;for(;d&&d.type.indexOf("tag-name")===-1;)d=h.stepBackward();if(!d)return;var v=d.value,c=h.getCurrentTokenRow();if(d=h.stepBackward(),!d||d.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[v]){var g=t.getTokenAt(o.row,o.column+1),u=t.getLine(c),l=this. $ getIndent(u),m=l+t.getTabString();return g&&g.value==="</"?{text: `
` +m+ `
` +l,selection:[1,m.length,1,m.length]}:{text: `
` +m}}}}})};T.inherits(a,b),E.XmlBehaviour=a});ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(w,E,B){var T=w("../../lib/oop"),b=w("./fold_mode").FoldMode,f=E.FoldMode=function(s,a){this.defaultMode=s,this.subModes=a};T.inherits(f,b),function(){this. $ getMode=function(s){typeof s!="string"&&(s=s[0]);for(var a in this.subModes)if(s.indexOf(a)===0)return this.subModes[a];return null},this. $ tryMode=function(s,a,n,e){var i=this. $ getMode(s);return i?i.getFoldWidget(a,n,e):""},this.getFoldWidget=function(s,a,n){return this. $ tryMode(s.getState(n-1),s,a,n)||this. $ tryMode(s.getState(n),s,a,n)||this.defaultMode.getFoldWidget(s,a,n)},this.getFoldWidgetRange=function(s,a,n){var e=this. $ getMode(s.getState(n-1));return(!e||!e.getFoldWidget(s,a,n))&&(e=this. $ getMode(s.getState(n))),(!e||!e.getFoldWidget(s,a,n))&&(e=this.defaultMode),e.getFoldWidgetRange(s,a,n)}}.call(f.prototype)});ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(w,E,B){var T=w("../../lib/oop");w("../../lib/lang");var b=w("../../range").Range,f=w("./fold_mode").FoldMode,s=w("../../token_iterator").TokenIterator,a=E.FoldMode=function(i,t){f.call(this),this.voidElements=i||{},this.optionalEndTags=T.mixin({},this.voidElements),t&&T.mixin(this.optionalEndTags,t)};T.inherits(a,f);var n=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};function e(i,t){return i.type.lastIndexOf(t+".xml")>-1}(function(){this.getFoldWidget=function(i,t,r){var o=this._getFirstTagInLine(i,r);return o?o.closing||!o.tagName&&o.selfClosing?t=="markbeginend"?"end":"":!o.tagName||o.selfClosing||this.voidElements.hasOwnProperty(o.tagName.toLowerCase())||this._findEndTagInLine(i,r,o.tagName,o.end.column)?"":"start":this.getCommentFoldWidget(i,r)},this.getCommentFoldWidget=function(i,t){return/comment/.test(i.getState(t))&&/<!-/.test(i.getLine(t))?"start":""},this._getFirstTagInLine=function(i,t){for(var r=i.getTokens(t),o=new n,u=0;u<r.length;u++){var h=r[u];if(e(h,"tag-open")){if(o.end.column=o.start.column+h.value.length,o.closing=e(h,"end-tag-open"),h=r[++u],!h)return null;for(o.tagName=h.value,o.end.column+=h.value.length,u++;u<r.length;u++)if(h=r[u],o.end.column+=h.value.length,e(h,"tag-close")){o.selfClosing=h.value=="/>";break}return o}else if(e(h,"tag-close"))return o.selfClosing=h.value=="/>",o;o.start.column+=h.value.length}return null},this._findEndTagInLine=function(i,t,r,o){for(var u=i.getTokens(t),h=0,d=0;d<u.length;d++){var v=u[d];if(h+=v.value.length,!(h<o)&&e(v,"end-tag-open")&&(v=u[d+1],v&&v.value==r))return!0}return!1},this._readTagForward=function(i){var t=i.getCurrentToken();if(!t)return null;var r=new n;do if(e(t,"tag-open"))r.closing=e(t,"end-tag-open"),r.start.row=i.getCurrentTokenRow(),r.start.column=i.getCurrentTokenColumn();else if(e(t,"tag-name"))r.tagName=t.value;else if(e(t,"tag-close"))return r.selfClosing=t.value=="/>",r.end.row=i.getCurrentTokenRow(),r.end.column=i.getCurrentTokenColumn()+t.value.length,i.stepForward(),r;while(t=i.stepForward());return null},this._readTagBackward=function(i){var t=i.getCurrentToken();if(!t)return null;var r=new n;do{if(e(t,"tag-open"))return r.closing=e(t,"end-tag-open"),r.start.row=i.getCurrentTokenRow(),r.start.column=i.getCurrentTokenColumn(),i.stepBackward(),r;e(t,"tag-name")?r.tagName=t.value:e(t,"tag-close")&&(r.selfClosing=t.value=="/>",r.end.row=i.getCurrentTokenRow(),r.end.column=i.getCurrentTokenColumn()+t.value.length)}while(t=i.stepBackward());return null},this._pop=function(i,t){for(;i.length;){var r=i[i.length-1];if(!t||r.tagName==t.tagName)return i.pop();if(this.optionalEndTags.hasOwnProperty(r.tagName)){i.pop();continue}else return null}},this.getFoldWidgetRange=function(i,t,r){var o=this._getFirstTagInLine(i,r);if(!o)return this.getCommentFoldWidget(i,r)&&i.getCommentFoldRange(r,i.getLine(r).length);var u=o.closing||o.selfClosing,h=[],d;if(u)for(var v=new s(i,r,o.end.colu
# Non - Breaking Space
snippet nbs
& nbsp ;
# \u2190
snippet left
& # x2190 ;
# \u2192
snippet right
& # x2192 ;
# \u2191
snippet up
& # x2191 ;
# \u2193
snippet down
& # x2193 ;
# \u21A9
snippet return
& # x21A9 ;
# \u21E4
snippet backtab
& # x21E4 ;
# \u21E5
snippet tab
& # x21E5 ;
# \u21E7
snippet shift
& # x21E7 ;
# \u2303
snippet ctrl
& # x2303 ;
# \u2305
snippet enter
& # x2305 ;
# \u2318
snippet cmd
& # x2318 ;
# \u2325
snippet option
& # x2325 ;
# \u2326
snippet delete
& # x2326 ;
# \u232B
snippet backspace
& # x232B ;
# \u238B
snippet esc
& # x238B ;
# Generic Doctype
snippet doctype HTML 4.01 Strict
< ! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd" >
snippet doctype HTML 4.01 Transitional
< ! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
snippet doctype HTML 5
< ! DOCTYPE HTML >
snippet doctype XHTML 1.0 Frameset
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
snippet doctype XHTML 1.0 Strict
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
snippet doctype XHTML 1.0 Transitional
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
snippet doctype XHTML 1.1
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
# HTML Doctype 4.01 Strict
snippet docts
< ! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd" >
# HTML Doctype 4.01 Transitional
snippet doct
< ! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
# HTML Doctype 5
snippet doct5
< ! DOCTYPE html >
# XHTML Doctype 1.0 Frameset
snippet docxf
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" >
# XHTML Doctype 1.0 Strict
snippet docxs
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
# XHTML Doctype 1.0 Transitional
snippet docxt
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
# XHTML Doctype 1.1
snippet docx
< ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
# html5shiv
snippet html5shiv
<!-- [ if lte IE 8 ] >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" > < \ / script >
< ! [ endif ] -- >
snippet html5printshiv
<!-- [ if lte IE 8 ] >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js" > < \ / script >
< ! [ endif ] -- >
# Attributes
snippet attr
\ $ { 1 : attribute } = "\${2:property}"
snippet attr +
\ $ { 1 : attribute } = "\${2:property}" attr + \ $ { 3 }
snippet .
class = "\${1}" \ $ { 2 }
snippet #
id = "\${1}" \ $ { 2 }
snippet alt
alt = "\${1}" \ $ { 2 }
snippet charset
charset = "\${1:utf-8}" \ $ { 2 }
snippet data
data - \ $ { 1 } = "\${2:$1}" \ $ { 3 }
snippet for
for = "\${1}" \ $ { 2 }
snippet height
height = "\${1}" \ $ { 2 }
snippet href
href = "\${1:#}" \ $ { 2 }
snippet lang
lang = "\${1:en}" \ $ { 2 }
snippet media
media = "\${1}" \ $ { 2 }
snippet name
name = "\${1}" \ $ { 2 }
snippet rel
rel = "\${1}" \ $ { 2 }
snippet scope
scope = "\${1:row}" \ $ { 2 }
snippet src
src = "\${1}" \ $ { 2 }
snippet title =
title = "\${1}" \ $ { 2 }
snippet type
type = "\${1}" \ $ { 2 }
snippet value
value = "\${1}" \ $ { 2 }
snippet width
width = "\${1}" \ $ { 2 }
# Elements
snippet a
< a href = "\${1:#}" > \ $ { 2 : $1 } < / a >
snippet a .
< a class = "\${1}" href = "\${2:#}" > \ $ { 3 : $1 } < / a >
snippet a #
< a id = "\${1}" href = "\${2:#}" > \ $ { 3 : $1 } < / a >
snippet a : ext
< a href = "http://\${1:example.com}" > \ $ { 2 : $1 } < / a >
snippet a : mail
< a href = "mailto:\${1:joe@example.com}?subject=\${2:feedback}" > \ $ { 3 : email me } < / a >
snippet abbr
< abbr title = "\${1}" > \ $ { 2 } < / a b b r >
snippet address
< address >
\ $ { 1 }
< / a d d r e s s >
snippet area
< area shape = "\${1:rect}" coords = "\${2}" href = "\${3}" alt = "\${4}" / >
snippet area +
< area shape = "\${1:rect}" coords = "\${2}" href = "\${3}" alt = "\${4}" / >
area + \ $ { 5 }
snippet area : c
< area shape = "circle" coords = "\${1}" href = "\${2}" alt = "\${3}" / >
snippet area : d
< area shape = "default" coords = "\${1}" href = "\${2}" alt = "\${3}" / >
snippet area : p
< area shape = "poly" coords = "\${1}" href = "\${2}" alt = "\${3}" / >
snippet area : r
< area shape = "rect" coords = "\${1}" href = "\${2}" alt = "\${3}" / >
snippet article
< article >
\ $ { 1 }
< / a r t i c l e >
snippet article .
< article class = "\${1}" >
\ $ { 2 }
< / a r t i c l e >
snippet article #
< article id = "\${1}" >
\ $ { 2 }
< / a r t i c l e >
snippet aside
< aside >
\ $ { 1 }
< / a s i d e >
snippet aside .
< aside class = "\${1}" >
\ $ { 2 }
< / a s i d e >
snippet aside #
< aside id = "\${1}" >
\ $ { 2 }
< / a s i d e >
snippet audio
< audio src = " \ $ { 1 } > \ $ { 2 } < / a u d i o >
snippet b
< b > \ $ { 1 } < / b >
snippet base
< base href = "\${1}" target = "\${2}" / >
snippet bdi
< bdi > \ $ { 1 } < / b d o >
snippet bdo
< bdo dir = "\${1}" > \ $ { 2 } < / b d o >
snippet bdo : l
< bdo dir = "ltr" > \ $ { 1 } < / b d o >
snippet bdo : r
< bdo dir = "rtl" > \ $ { 1 } < / b d o >
snippet blockquote
< blockquote >
\ $ { 1 }
< / b l o c k q u o t e >
snippet body
< body >
\ $ { 1 }
< / b o d y >
snippet br
< br / > \ $ { 1 }
snippet button
< button type = "\${1:submit}" > \ $ { 2 } < / b u t t o n >
snippet button .
< button class = "\${1:button}" type = "\${2:submit}" > \ $ { 3 } < / b u t t o n >
snippet button #
< button id = "\${1}" type = "\${2:submit}" > \ $ { 3 } < / b u t t o n >
snippet button : s
< button type = "submit" > \ $ { 1 } < / b u t t o n >
snippet button : r
< button type = "reset" > \ $ { 1 } < / b u t t o n >
snippet canvas
< canvas >
\ $ { 1 }
< / c a n v a s >
snippet caption
< caption > \ $ { 1 } < / c a p t i o n >
snippet cite
< cite > \ $ { 1 } < / c i t e >
snippet code
< code > \ $ { 1 } < / c o d e >
snippet col
< col / > \ $ { 1 }
snippet col +
< col / >
col + \ $ { 1 }
snippet colgroup
< colgroup >
\ $ { 1 }
< / c o l g r o u p >
snippet colgroup +
< colgroup >
< col / >
col + \ $ { 1 }
< / c o l g r o u p >
snippet command
< command type = "command" label = "\${1}" icon = "\${2}" / >
snippet command : c
< command type = "checkbox" label = "\${1}" icon = "\${2}" / >
snippet command : r
< command type = "radio" radiogroup = "\${1}" label = "\${2}" icon = "\${3}" / >
snippet datagrid
< datagrid >
\ $ { 1 }
< / d a t a g r i d >
snippet datalist
< datalist >
\ $ { 1 }
< / d a t a l i s t >
snippet datatemplate
< datatemplate >
\ $ { 1 }
< / d a t a t e m p l a t e >
snippet dd
< dd > \ $ { 1 } < / d d >
snippet dd .
< dd class = "\${1}" > \ $ { 2 } < / d d >
snippet dd #
< dd id = "\${1}" > \ $ { 2 } < / d d >
snippet del
< del > \ $ { 1 } < / d e l >
snippet details
< details > \ $ { 1 } < / d e t a i l s >
snippet dfn
< dfn > \ $ { 1 } < / d f n >
snippet dialog
< dialog >
\ $ { 1 }
< / d i a l o g >
snippet div
< div >
\ $ { 1 }
< / d i v >
snippet div .
< div class = "\${1}" >
\ $ { 2 }
< / d i v >
snippet div #
< div id = "\${1}" >
\ $ { 2 }
< / d i v >
snippet dl
< dl >
\ $ { 1 }
< / d l >
snippet dl .
< dl class = "\${1}" >
\ $ { 2 }
< / d l >
snippet dl #
< dl id = "\${1}" >
\ $ { 2 }
< / d l >
snippet dl +
< dl >
< dt > \ $ { 1 } < / d t >
< dd > \ $ { 2 } < / d d >
dt + \ $ { 3 }
< / d l >
snippet dt
< dt > \ $ { 1 } < / d t >
snippet dt .
< dt class = "\${1}" > \ $ { 2 } < / d t >
snippet dt #
< dt id = "\${1}" > \ $ { 2 } < / d t >
snippet dt +
< dt > \ $ { 1 } < / d t >
< dd > \ $ { 2 } < / d d >
dt + \ $ { 3 }
snippet em
< em > \ $ { 1 } < / e m >
snippet embed
< embed src = \ $ { 1 } type = " \ $ { 2 } / >
snippet fieldset
< fieldset >
\ $ { 1 }
< / f i e l d s e t >
snippet fieldset .
< fieldset class = "\${1}" >
\ $ { 2 }
< / f i e l d s e t >
snippet fieldset #
< fieldset id = "\${1}" >
\ $ { 2 }
< / f i e l d s e t >
snippet fieldset +
< fieldset >
< legend > < span > \ $ { 1 } < / s p a n > < / l e g e n d >
\ $ { 2 }
< / f i e l d s e t >
fieldset + \ $ { 3 }
snippet figcaption
< figcaption > \ $ { 1 } < / f i g c a p t i o n >
snippet figure
< figure > \ $ { 1 } < / f i g u r e >
snippet footer
< footer >
\ $ { 1 }
< / f o o t e r >
snippet footer .
< footer class = "\${1}" >
\ $ { 2 }
< / f o o t e r >
snippet footer #
< footer id = "\${1}" >
\ $ { 2 }
< / f o o t e r >
snippet form
< form action = "\${1}" method = "\${2:get}" accept - charset = "utf-8" >
\ $ { 3 }
< / f o r m >
snippet form .
< form class = "\${1}" action = "\${2}" method = "\${3:get}" accept - charset = "utf-8" >
\ $ { 4 }
< / f o r m >
snippet form #
< form id = "\${1}" action = "\${2}" method = "\${3:get}" accept - charset = "utf-8" >
\ $ { 4 }
< / f o r m >
snippet h1
< h1 > \ $ { 1 } < / h 1 >
snippet h1 .
< h1 class = "\${1}" > \ $ { 2 } < / h 1 >
snippet h1 #
< h1 id = "\${1}" > \ $ { 2 } < / h 1 >
snippet h2
< h2 > \ $ { 1 } < / h 2 >
snippet h2 .
< h2 class = "\${1}" > \ $ { 2 } < / h 2 >
snippet h2 #
< h2 id = "\${1}" > \ $ { 2 } < / h 2 >
snippet h3
< h3 > \ $ { 1 } < / h 3 >
snippet h3 .
< h3 class = "\${1}" > \ $ { 2 } < / h 3 >
snippet h3 #
< h3 id = "\${1}" > \ $ { 2 } < / h 3 >
snippet h4
< h4 > \ $ { 1 } < / h 4 >
snippet h4 .
< h4 class = "\${1}" > \ $ { 2 } < / h 4 >
snippet h4 #
< h4 id = "\${1}" > \ $ { 2 } < / h 4 >
snippet h5
< h5 > \ $ { 1 } < / h 5 >
snippet h5 .
< h5 class = "\${1}" > \ $ { 2 } < / h 5 >
snippet h5 #
< h5 id = "\${1}" > \ $ { 2 } < / h 5 >
snippet h6
< h6 > \ $ { 1 } < / h 6 >
snippet h6 .
< h6 class = "\${1}" > \ $ { 2 } < / h 6 >
snippet h6 #
< h6 id = "\${1}" > \ $ { 2 } < / h 6 >
snippet head
< head >
< meta http - equiv = "content-type" content = "text/html; charset=utf-8" / >
< title > \ $ { 1 : \ ` substitute(Filename('', 'Page Title'), '^.', ' \\ u&', '') \` }</title>
\ $ { 2 }
< / h e a d >
snippet header
< header >
\ $ { 1 }
< / h e a d e r >
snippet header .
< header class = "\${1}" >
\ $ { 2 }
< / h e a d e r >
snippet header #
< header id = "\${1}" >
\ $ { 2 }
< / h e a d e r >
snippet hgroup
< hgroup >
\ $ { 1 }
< / h g r o u p >
snippet hgroup .
< hgroup class = " \ $ { 1 } >
\ $ { 2 }
< / h g r o u p >
snippet hr
< hr / > \ $ { 1 }
snippet html
< html >
\ $ { 1 }
< / h t m l >
snippet xhtml
< html xmlns = "http://www.w3.org/1999/xhtml" >
\ $ { 1 }
< / h t m l >
snippet html5
< ! DOCTYPE html >
< html >
< head >
< meta http - equiv = "content-type" content = "text/html; charset=utf-8" / >
< title > \ $ { 1 : \ ` substitute(Filename('', 'Page Title'), '^.', ' \\ u&', '') \` }</title>
\ $ { 2 : meta }
< / h e a d >
< body >
\ $ { 3 : body }
< / b o d y >
< / h t m l >
snippet xhtml5
< ! DOCTYPE html >
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta http - equiv = "content-type" content = "application/xhtml+xml; charset=utf-8" / >
< title > \ $ { 1 : \ ` substitute(Filename('', 'Page Title'), '^.', ' \\ u&', '') \` }</title>
\ $ { 2 : meta }
< / h e a d >
< body >
\ $ { 3 : body }
< / b o d y >
< / h t m l >
snippet i
< i > \ $ { 1 } < / i >
snippet iframe
< iframe src = "\${1}" frameborder = "0" > < / i f r a m e > \ $ { 2 }
snippet iframe .
< iframe class = "\${1}" src = "\${2}" frameborder = "0" > < / i f r a m e > \ $ { 3 }
snippet iframe #
< iframe id = "\${1}" src = "\${2}" frameborder = "0" > < / i f r a m e > \ $ { 3 }
snippet img
< img src = "\${1}" alt = "\${2}" / > \ $ { 3 }
snippet img .
< img class = "\${1}" src = "\${2}" alt = "\${3}" / > \ $ { 4 }
snippet img #
< img id = "\${1}" src = "\${2}" alt = "\${3}" / > \ $ { 4 }
snippet input
< input type = "\${1:text/submit/hidden/button/image}" name = "\${2}" id = "\${3:$2}" value = "\${4}" / > \ $ { 5 }
snippet input .
< input class = "\${1}" type = "\${2:text/submit/hidden/button/image}" name = "\${3}" id = "\${4:$3}" value = "\${5}" / > \ $ { 6 }
snippet input : text
< input type = "text" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : submit
< input type = "submit" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : hidden
< input type = "hidden" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : button
< input type = "button" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : image
< input type = "image" name = "\${1}" id = "\${2:$1}" src = "\${3}" alt = "\${4}" / > \ $ { 5 }
snippet input : checkbox
< input type = "checkbox" name = "\${1}" id = "\${2:$1}" / > \ $ { 3 }
snippet input : radio
< input type = "radio" name = "\${1}" id = "\${2:$1}" / > \ $ { 3 }
snippet input : color
< input type = "color" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : date
< input type = "date" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : datetime
< input type = "datetime" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : datetime - local
< input type = "datetime-local" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : email
< input type = "email" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : file
< input type = "file" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : month
< input type = "month" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : number
< input type = "number" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : password
< input type = "password" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : range
< input type = "range" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : reset
< input type = "reset" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : search
< input type = "search" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : time
< input type = "time" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : url
< input type = "url" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet input : week
< input type = "week" name = "\${1}" id = "\${2:$1}" value = "\${3}" / > \ $ { 4 }
snippet ins
< ins > \ $ { 1 } < / i n s >
snippet kbd
< kbd > \ $ { 1 } < / k b d >
snippet keygen
< keygen > \ $ { 1 } < / k e y g e n >
snippet label
< label for = "\${2:$1}" > \ $ { 1 } < / l a b e l >
snippet label : i
< label for = "\${2:$1}" > \ $ { 1 } < / l a b e l >
< input type = "\${3:text/submit/hidden/button}" name = "\${4:$2}" id = "\${5:$2}" value = "\${6}" / > \ $ { 7 }
snippet label : s
< label for = "\${2:$1}" > \ $ { 1 } < / l a b e l >
< select name = "\${3:$2}" id = "\${4:$2}" >
< option value = "\${5}" > \ $ { 6 : $5 } < / o p t i o n >
< / s e l e c t >
snippet legend
< legend > \ $ { 1 } < / l e g e n d >
snippet legend +
< legend > < span > \ $ { 1 } < / s p a n > < / l e g e n d >
snippet li
< li > \ $ { 1 } < / l i >
snippet li .
< li class = "\${1}" > \ $ { 2 } < / l i >
snippet li +
< li > \ $ { 1 } < / l i >
li + \ $ { 2 }
snippet lia
< li > < a href = "\${2:#}" > \ $ { 1 } < / a > < / l i >
snippet lia +
< li > < a href = "\${2:#}" > \ $ { 1 } < / a > < / l i >
lia + \ $ { 3 }
snippet link
< link rel = "\${1}" href = "\${2}" title = "\${3}" type = "\${4}" / > \ $ { 5 }
snippet link : atom
< link rel = "alternate" href = "\${1:atom.xml}" title = "Atom" type = "application/atom+xml" / > \ $ { 2 }
snippet link : css
< link rel = "stylesheet" href = "\${2:style.css}" type = "text/css" media = "\${3:all}" / > \ $ { 4 }
snippet link : favicon
< link rel = "shortcut icon" href = "\${1:favicon.ico}" type = "image/x-icon" / > \ $ { 2 }
snippet link : rss
< link rel = "alternate" href = "\${1:rss.xml}" title = "RSS" type = "application/atom+xml" / > \ $ { 2 }
snippet link : touch
< link rel = "apple-touch-icon" href = "\${1:favicon.png}" / > \ $ { 2 }
snippet map
< map name = "\${1}" >
\ $ { 2 }
< / m a p >
snippet map .
< map class = "\${1}" name = "\${2}" >
\ $ { 3 }
< / m a p >
snippet map #
< map name = "\${1}" id = " \ $ { 2 : $1 } >
\ $ { 3 }
< / m a p >
snippet map +
< map name = "\${1}" >
< area shape = "\${2}" coords = "\${3}" href = "\${4}" alt = "\${5}" / > \ $ { 6 }
< / m a p > \ $ { 7 }
snippet mark
< mark > \ $ { 1 } < / m a r k >
snippet menu
< menu >
\ $ { 1 }
< / m e n u >
snippet menu : c
< menu type = "context" >
\ $ { 1 }
< / m e n u >
snippet menu : t
< menu type = "toolbar" >
\ $ { 1 }
< / m e n u >
snippet meta
< meta http - equiv = "\${1}" content = "\${2}" / > \ $ { 3 }
snippet meta : compat
< meta http - equiv = "X-UA-Compatible" content = "IE=\${1:7,8,edge}" / > \ $ { 3 }
snippet meta : refresh
< meta http - equiv = "refresh" content = "text/html;charset=UTF-8" / > \ $ { 3 }
snippet meta : utf
< meta http - equiv = "content-type" content = "text/html;charset=UTF-8" / > \ $ { 3 }
snippet meter
< meter > \ $ { 1 } < / m e t e r >
snippet nav
< nav >
\ $ { 1 }
< / n a v >
snippet nav .
< nav class = "\${1}" >
\ $ { 2 }
< / n a v >
snippet nav #
< nav id = "\${1}" >
\ $ { 2 }
< / n a v >
snippet noscript
< noscript >
\ $ { 1 }
< / n o s c r i p t >
snippet object
< object data = "\${1}" type = "\${2}" >
\ $ { 3 }
< / o b j e c t > \ $ { 4 }
# Embed QT Movie
snippet movie
< object width = "$2" height = "$3" classid = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
codebase = "http://www.apple.com/qtactivex/qtplugin.cab" >
< param name = "src" value = "$1" / >
< param name = "controller" value = "$4" / >
< param name = "autoplay" value = "$5" / >
< embed src = "\${1:movie.mov}"
width = "\${2:320}" height = "\${3:240}"
controller = "\${4:true}" autoplay = "\${5:true}"
scale = "tofit" cache = "true"
pluginspage = "http://www.apple.com/quicktime/download/" / >
< / o b j e c t > \ $ { 6 }
snippet ol
< ol >
\ $ { 1 }
< / o l >
snippet ol .
< ol class = " \ $ { 1 } >
\ $ { 2 }
< / o l >
snippet ol #
< ol id = " \ $ { 1 } >
\ $ { 2 }
< / o l >
snippet ol +
< ol >
< li > \ $ { 1 } < / l i >
li + \ $ { 2 }
< / o l >
snippet opt
< option value = "\${1}" > \ $ { 2 : $1 } < / o p t i o n >
snippet opt +
< option value = "\${1}" > \ $ { 2 : $1 } < / o p t i o n >
opt + \ $ { 3 }
snippet optt
< option > \ $ { 1 } < / o p t i o n >
snippet optgroup
< optgroup >
< option value = "\${1}" > \ $ { 2 : $1 } < / o p t i o n >
opt + \ $ { 3 }
< / o p t g r o u p >
snippet output
< output > \ $ { 1 } < / o u t p u t >
snippet p
< p > \ $ { 1 } < / p >
snippet param
< param name = "\${1}" value = "\${2}" / > \ $ { 3 }
snippet pre
< pre >
\ $ { 1 }
< / p r e >
snippet progress
< progress > \ $ { 1 } < / p r o g r e s s >
snippet q
< q > \ $ { 1 } < / q >
snippet rp
< rp > \ $ { 1 } < / r p >
snippet rt
< rt > \ $ { 1 } < / r t >
snippet ruby
< ruby >
< rp > < rt > \ $ { 1 } < / r t > < / r p >
< / r u b y >
snippet s
< s > \ $ { 1 } < / s >
snippet samp
< samp >
\ $ { 1 }
< / s a m p >
snippet script
< script type = "text/javascript" charset = "utf-8" >
\ $ { 1 }
< \ / script >
snippet scriptsrc
< script src = "\${1}.js" type = "text/javascript" charset = "utf-8" > < \ / script >
snippet newscript
< script type = "application/javascript" charset = "utf-8" >
\ $ { 1 }
< \ / script >
snippet newscriptsrc
< script src = "\${1}.js" type = "application/javascript" charset = "utf-8" > < \ / script >
snippet section
< section >
\ $ { 1 }
< / s e c t i o n >
snippet section .
< section class = "\${1}" >
\ $ { 2 }
< / s e c t i o n >
snippet section #
< section id = "\${1}" >
\ $ { 2 }
< / s e c t i o n >
snippet select
< select name = "\${1}" id = "\${2:$1}" >
\ $ { 3 }
< / s e l e c t >
snippet select .
< select name = "\${1}" id = "\${2:$1}" class = " \ $ { 3 } >
\ $ { 4 }
< / s e l e c t >
snippet select +
< select name = "\${1}" id = "\${2:$1}" >
< option value = "\${3}" > \ $ { 4 : $3 } < / o p t i o n >
opt + \ $ { 5 }
< / s e l e c t >
snippet small
< small > \ $ { 1 } < / s m a l l >
snippet source
< source src = "\${1}" type = "\${2}" media = "\${3}" / >
snippet span
< span > \ $ { 1 } < / s p a n >
snippet strong
< strong > \ $ { 1 } < / s t r o n g >
snippet style
< style type = "text/css" media = "\${1:all}" >
\ $ { 2 }
< / s t y l e >
snippet sub
< sub > \ $ { 1 } < / s u b >
snippet summary
< summary >
\ $ { 1 }
< / s u m m a r y >
snippet sup
< sup > \ $ { 1 } < / s u p >
snippet table
< table border = "\${1:0}" >
\ $ { 2 }
< / t a b l e >
snippet table .
< table class = "\${1}" border = "\${2:0}" >
\ $ { 3 }
< / t a b l e >
snippet table #
< table id = "\${1}" border = "\${2:0}" >
\ $ { 3 }
< / t a b l e >
snippet tbody
< tbody >
\ $ { 1 }
< / t b o d y >
snippet td
< td > \ $ { 1 } < / t d >
snippet td .
< td class = "\${1}" > \ $ { 2 } < / t d >
snippet td #
< td id = "\${1}" > \ $ { 2 } < / t d >
snippet td +
< td > \ $ { 1 } < / t d >
td + \ $ { 2 }
snippet textarea
< textarea name = "\${1}" id = \ $ { 2 : $1 } rows = "\${3:8}" cols = "\${4:40}" > \ $ { 5 } < / t e x t a r e a > \ $ { 6 }
snippet tfoot
< tfoot >
\ $ { 1 }
< / t f o o t >
snippet th
< th > \ $ { 1 } < / t h >
snippet th .
< th class = "\${1}" > \ $ { 2 } < / t h >
snippet th #
< th id = "\${1}" > \ $ { 2 } < / t h >
snippet th +
< th > \ $ { 1 } < / t h >
th + \ $ { 2 }
snippet thead
< thead >
\ $ { 1 }
< / t h e a d >
snippet time
< time datetime = "\${1}" pubdate = " \ $ { 2 : $1 } > \ $ { 3 : $1 } < / t i m e >
snippet title
< title > \ $ { 1 : \ ` substitute(Filename('', 'Page Title'), '^.', ' \\ u&', '') \` }</title>
snippet tr
< tr >
\ $ { 1 }
< / t r >
snippet tr +
< tr >
< td > \ $ { 1 } < / t d >
td + \ $ { 2 }
< / t r >
snippet track
< track src = "\${1}" srclang = "\${2}" label = "\${3}" default = " \ $ { 4 : default } > \ $ { 5 } < / t r a c k > \ $ { 6 }
snippet ul
< ul >
\ $ { 1 }
< / u l >
snippet ul .
< ul class = "\${1}" >
\ $ { 2 }
< / u l >
snippet ul #
< ul id = "\${1}" >
\ $ { 2 }
< / u l >
snippet ul +
< ul >
< li > \ $ { 1 } < / l i >
li + \ $ { 2 }
< / u l >
snippet var
< var > \ $ { 1 } < / v a r >
snippet video
< video src = "\${1} height=" \ $ { 2 } " width=" \ $ { 3 } " preload=" \ $ { 5 : none } " autoplay=" \ $ { 6 : autoplay } > \ $ { 7 } < / v i d e o > \ $ { 8 }
snippet wbr
< wbr / > \ $ { 1 }
` ,E.scope="html"});ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(w,E,B){var T=w("../lib/oop"),b=w("./text_highlight_rules").TextHighlightRules,f=function(){this. $ rules={start:[{token:"comment.doc.tag",regex:"@[ \\ w \\ d_]+"},f.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};T.inherits(f,b),f.getTagRule=function(s){return{token:"comment.doc.tag.storage.type",regex:" \\ b(?:TODO|FIXME|XXX|HACK) \\ b"}},f.getStartRule=function(s){return{token:"comment.doc",regex:" \\ / \\ *(?= \\ *)",next:s}},f.getEndRule=function(s){return{token:"comment.doc",regex:" \\ * \\ /",next:s}},E.DocCommentHighlightRules=f});ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(w,E,B){var T=w("../lib/oop"),b=w("./doc_comment_highlight_rules").DocCommentHighlightRules,f=w("./text_highlight_rules").TextHighlightRules,s="[a-zA-Z \\ $ _ \x A1- \u FFFF][a-zA-Z \\ d \\ $ _ \x A1- \u FFFF]*",a=function(i){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",o=" \\ \\ (?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this. $ rules={no_regex:[b.getStartRule("doc-start"),e("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+) \b /},{token:"constant.numeric",regex:/(?: \d \d *(?: \. \d *)?| \. \d +)(?:[eE][+-]? \d + \b )?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+s+")( \\ .)(prototype)( \\ .)("+s+")( \\ s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")( \\ .)("+s+")( \\ s*)(=)( \\ s*)(function)( \\ s*)( \\ ()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")( \\ s*)(=)( \\ s*)(function)( \\ s*)( \\ ()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+s+")( \\ .)("+s+")( \\ s*)(=)( \\ s*)(function)( \\ s+)( \\ w+)( \\ s*)( \\ ()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)( \\ s+)("+s+")( \\ s*)( \\ ()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+s+")( \\ s*)(:)( \\ s*)(function)( \\ s*)( \\ ()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)( \\ s*)(function)( \\ s*)( \\ ()",next:"function_arguments"},{token:"keyword",regex: ` from ( ? = \ \ s * ( ' | "))`},{token:" keyword ",regex:" ( ? : "+r+" ) \ \ b ",next:" start "},{token:[" suppo
snippet proto
\ $ { 1 : class _name } . prototype . \ $ { 2 : method _name } = function ( \ $ { 3 : first _argument } ) {
\ $ { 4 : // body...}
} ;
# Function
snippet fun
function \ $ { 1 ? : function _name } ( \ $ { 2 : argument } ) {
\ $ { 3 : // body...}
}
# Anonymous Function
regex / ( ( = ) \ \ s * | ( : ) \ \ s * | ( \ \ ( ) | \ \ b ) / f / ( \ \ ) ) ? /
snippet f
function \ $ { M1 ? : \ $ { 1 : functionName } } ( $2 ) {
\ $ { 0 : $TM _SELECTED _TEXT }
} \ $ { M2 ? ; } \ $ { M3 ? , } \ $ { M4 ? ) }
# Immediate function
trigger \ \ ( ? f \ \ (
endTrigger \ \ ) ?
snippet f (
( function ( \ $ { 1 } ) {
\ $ { 0 : \ $ { TM _SELECTED _TEXT : /* code */ } }
} ( \ $ { 1 } ) ) ;
# if
snippet if
if ( \ $ { 1 : true } ) {
\ $ { 0 }
}
# if ... else
snippet ife
if ( \ $ { 1 : true } ) {
\ $ { 2 }
} else {
\ $ { 0 }
}
# tertiary conditional
snippet ter
\ $ { 1 : /* condition */ } ? \ $ { 2 : a } : \ $ { 3 : b }
# switch
snippet switch
switch ( \ $ { 1 : expression } ) {
case '\${3:case}' :
\ $ { 4 : // code}
break ;
\ $ { 5 }
default :
\ $ { 2 : // code}
}
# case
snippet case
case '\${1:case}' :
\ $ { 2 : // code}
break ;
\ $ { 3 }
# while ( ... ) { ... }
snippet wh
while ( \ $ { 1 : /* condition */ } ) {
\ $ { 0 : /* code */ }
}
# try
snippet try
try {
\ $ { 0 : /* code */ }
} catch ( e ) { }
# do ... while
snippet do
do {
\ $ { 2 : /* code */ }
} while ( \ $ { 1 : /* condition */ } ) ;
# Object Method
snippet : f
regex / ( [ , { [ ] ) | ^ \ \ s * /:f/
\ $ { 1 : method _name } : function ( \ $ { 2 : attribute } ) {
\ $ { 0 }
} \ $ { 3 : , }
# setTimeout function
snippet setTimeout
regex / \ \ b / st | timeout | setTimeo ? u ? t ? /
setTimeout ( function ( ) { \ $ { 3 : $TM _SELECTED _TEXT } } , \ $ { 1 : 10 } ) ;
# Get Elements
snippet gett
getElementsBy \ $ { 1 : TagName } ( '\${2}' ) \ $ { 3 }
# Get Element
snippet get
getElementBy \ $ { 1 : Id } ( '\${2}' ) \ $ { 3 }
# console . log ( Firebug )
snippet cl
console . log ( \ $ { 1 } ) ;
# return
snippet ret
return \ $ { 1 : result }
# for ( property in object ) { ... }
snippet fori
for ( var \ $ { 1 : prop } in \ $ { 2 : Things } ) {
\ $ { 0 : $2 [ $1 ] }
}
# hasOwnProperty
snippet has
hasOwnProperty ( \ $ { 1 } )
# docstring
snippet / * *
/ * *
* \ $ { 1 : description }
*
* /
snippet @ par
regex / ^ \ \ s * \ \ * \ \ s * /@(para?m?)?/
@ param { \ $ { 1 : type } } \ $ { 2 : name } \ $ { 3 : description }
snippet @ ret
@ return { \ $ { 1 : type } } \ $ { 2 : description }
# JSON . parse
snippet jsonp
JSON . parse ( \ $ { 1 : jstr } ) ;
# JSON . stringify
snippet jsons
JSON . stringify ( \ $ { 1 : object } ) ;
# self - defining function
snippet sdf
var \ $ { 1 : function _name } = function ( \ $ { 2 : argument } ) {
\ $ { 3 : // initial code ...}
$1 = function ( $2 ) {
\ $ { 4 : // main code}
} ;
}
# singleton
snippet sing
function \ $ { 1 : Singleton } ( \ $ { 2 : argument } ) {
// the cached instance
var instance ;
// rewrite the constructor
$1 = function $1 ( $2 ) {
return instance ;
} ;
// carry over the prototype properties
$1 . prototype = this ;
// the instance
instance = new $1 ( ) ;
// reset the constructor pointer
instance . constructor = $1 ;
\ $ { 3 : // code ...}
return instance ;
}
# class
snippet class
regex / ^ \ \ s * /clas{0,2}/
var \ $ { 1 : class } = function ( \ $ { 20 } ) {
$40$0
} ;
( function ( ) {
\ $ { 60 : this . prop = "" }
} ) . call ( \ $ { 1 : class } . prototype ) ;
exports . \ $ { 1 : class } = \ $ { 1 : class } ;
#
snippet for -
for ( var \ $ { 1 : i } = \ $ { 2 : Things } . length ; \ $ { 1 : i } -- ; ) {
\ $ { 0 : \ $ { 2 : Things } [ \ $ { 1 : i } ] ; }
}
# for ( ... ) { ... }
snippet for
for ( var \ $ { 1 : i } = 0 ; $1 < \ $ { 2 : Things } . length ; $1 ++ ) {
\ $ { 3 : $2 [ $1 ] } $0
}
# for ( ... ) { ... } ( Improved Native For - Loop )
snippet forr
for ( var \ $ { 1 : i } = \ $ { 2 : Things } . length - 1 ; $1 >= 0 ; $1 -- ) {
\ $ { 3 : $2 [ $1 ] } $0
}
# modules
snippet def
define ( function ( require , exports , module ) {
"use strict" ;
var \ $ { 1 / . * \ \ ///} = require("\${1}");
$TM _SELECTED _TEXT
} ) ;
snippet req
guard ^ \ \ s *
var \ $ { 1 / . * \ \ ///} = require("\${1}");
$0
snippet requ
guard ^ \ \ s *
var \ $ { 1 / . * \ \ / ( . ) / \ \ u$1 / } = require ( "\${1}" ) . \ $ { 1 / . * \ \ / ( . ) / \ \ u$1 / } ;
$0
` ,E.scope="javascript"});ace.define("ace/snippets/text",["require","exports","module"],function(w,E,B){E.snippetText=void 0,E.scope="text"});ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(w,E,B){E.isDark=!0,E.cssClass="ace-monokai",E.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var T=w("../lib/dom");T.importCssString(E.cssText,E.cssClass)});ace.define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(w,E,B){E.isDark=!1,E.cssClass="ace-chrome",E.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185,