File: /home/nepi/public_html/public/admin/js/chunk-3020ac28.a7656fdf.js.map
{"version":3,"sources":["webpack:///./node_modules/codemirror/addon/search/search.js","webpack:///./node_modules/codemirror/mode/sass/sass.js","webpack:///./node_modules/codemirror/addon/search/match-highlighter.js","webpack:///./node_modules/codemirror/addon/dialog/dialog.js","webpack:///./node_modules/codemirror/addon/selection/active-line.js","webpack:///./node_modules/codemirror/addon/hint/javascript-hint.js","webpack:///./node_modules/codemirror/mode/php/php.js","webpack:///./node_modules/codemirror/mode/clike/clike.js","webpack:///./node_modules/codemirror/mode/pug/pug.js","webpack:///./node_modules/codemirror/mode/vue/vue.js","webpack:///./node_modules/codemirror/addon/search/matchesonscrollbar.js","webpack:///./node_modules/codemirror/addon/comment/comment.js","webpack:///./node_modules/codemirror/addon/mode/simple.js","webpack:///./node_modules/codemirror/mode/stylus/stylus.js","webpack:///./node_modules/codemirror/mode/css/css.js","webpack:///./src/interfaces/code/input.vue?9663","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/keymap/sublime.js","webpack:///./node_modules/codemirror/addon/hint/show-hint.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack:///./node_modules/codemirror/addon/search/searchcursor.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack:///./src/interfaces/code/input.vue?42e2","webpack:///src/interfaces/code/input.vue","webpack:///./src/interfaces/code/input.vue?0ad0","webpack:///./src/interfaces/code/input.vue","webpack:///./node_modules/codemirror/mode/handlebars/handlebars.js","webpack:///./node_modules/codemirror/addon/mode/multiplex.js"],"names":["mod","CodeMirror","searchOverlay","query","caseInsensitive","RegExp","replace","global","source","ignoreCase","token","stream","lastIndex","pos","match","exec","string","index","length","skipToEnd","SearchState","this","posFrom","posTo","lastQuery","overlay","getSearchState","cm","state","search","queryCaseInsensitive","toLowerCase","getSearchCursor","caseFold","multiline","persistentDialog","text","deflt","onEnter","onKeyDown","openDialog","value","selectValueOnOpen","closeOnEnter","onClose","clearSearch","dialog","shortText","f","prompt","confirmDialog","fs","openConfirm","confirm","parseString","ch","parseQuery","isRE","indexOf","e","test","startSearch","queryText","removeOverlay","addOverlay","showMatchesOnScrollbar","annotate","clear","doSearch","rev","persistent","immediate","findNext","q","getSelection","hiding","searchNext","event","e_stop","getCursor","style","opacity","shiftKey","_","to","line","document","querySelector","display","wrapper","getBoundingClientRect","bottom","cursorCoords","top","getQueryDialog","keyName","extra","getOption","cmd","keyMap","execCommand","operation","callback","cursor","find","Pos","lastLine","firstLine","setSelection","from","scrollIntoView","phrase","getReplaceQueryDialog","getReplacementQueryDialog","getDoReplaceConfirm","replaceAll","getRange","i","all","dialogText","advance","start","doReplace","commands","findPersistent","findPersistentNext","findPersistentPrev","findPrev","defineMode","config","cssMode","mimeModes","propertyKeywords","colorKeywords","valueKeywords","fontProperties","tokenRegexp","words","join","word","keywords","keywordsRegexp","operators","opRegexp","pseudoElementsRegexp","isEndLine","peek","urlTokens","next","tokenizer","tokenBase","eatSpace","buildStringTokenizer","comment","indentation","multiLine","sol","skipTo","quote","greedy","stringTokenizer","nextChar","peekChar","previousChar","charAt","endingString","cursorHalf","buildInterpolationTokenizer","currentTokenizer","indent","indentCount","lastScopeOffset","scopes","offset","currentOffset","indentUnit","unshift","dedent","shift","eatWhile","current","hasOwnProperty","prevProp","prop","tokenLexer","startOfToken","withCurrentIndent","newScopes","scope","push","startState","type","definedVars","definedMixins","lastToken","content","defineMIME","defaults","minChars","delay","wordsOnly","annotateScrollbar","showToken","trim","State","options","name","timeout","matchesonscroll","active","cursorActivity","matchHighlighter","hasFocus","scheduleHighlight","onFocus","clearTimeout","setTimeout","highlightMatches","hasBoundary","makeOverlay","searchFor","className","somethingSelected","isWord","selection","re","cur","getLine","end","slice","str","chr","boundariesAround","defineOption","val","old","Init","off","on","dialogDiv","template","wrap","getWrapperElement","appendChild","createElement","innerHTML","addClass","closeNotification","newVal","currentNotificationClose","defineExtension","closed","me","close","inp","rmClass","parentNode","removeChild","focus","button","getElementsByTagName","select","onInput","onKeyUp","keyCode","blur","closeOnBlur","callbacks","buttons","blurring","b","e_preventDefault","doneTimer","duration","WRAP_CLASS","BACK_CLASS","GUTT_CLASS","clearActiveLines","activeLines","removeLineClass","sameArray","a","updateActiveLines","ranges","range","option","nonEmpty","anchor","head","empty","getLineHandleVisualStart","addLineClass","selectionChange","sel","prev","listSelections","forEach","arr","arrayContains","item","Array","prototype","scriptHint","editor","getToken","innerMode","getMode","mode","helperType","tprop","context","list","getCompletions","javascriptHint","javascriptKeywords","getTokenAt","getCoffeeScriptToken","coffeescriptHint","coffeescriptKeywords","registerHelper","stringProps","split","arrayProps","funcProps","forAllProps","obj","Object","getOwnPropertyNames","getPrototypeOf","o","found","globalScope","window","maybeAdd","lastIndexOf","gatherCompletions","Function","base","pop","additionalContext","useGlobalScope","jQuery","v","localVars","c","vars","globalVars","matchSequence","escapes","phpString","patterns","tokenize","closing","phpString_","escaped","eol","tokStack","phpKeywords","phpAtoms","phpBuiltin","phpConfig","blockKeywords","defKeywords","atoms","builtin","multiLineStrings","hooks","before","quoted","eat","delim","_stream","parserConfig","htmlMode","phpMode","dispatch","isPHP","curMode","pending","php","curState","html","m","openPHP","backUp","startOpen","copyState","htmlNew","phpNew","textAfter","blockCommentStart","blockCommentEnd","lineComment","Context","indented","column","info","align","pushContext","col","popContext","t","typeBefore","prevToken","typeAtEndOfLine","isTopScope","contains","propertyIsEnumerable","curPunc","isDefKeyword","statementIndentUnit","dontAlignCalls","types","indentStatements","indentSwitch","namespaceSeparator","isPunctuationChar","numberStart","number","isOperatorChar","isIdentifierChar","isReservedIdentifier","result","tokenString","tokenComment","maybeEnd","maybeEOL","typeFirstDefinitions","basecolumn","startOfLine","ctx","undefined","styleDefs","Pass","firstChar","dontIndentStatements","hook","switchBlock","allmanIndentation","electricInput","blockCommentContinue","fold","cKeywords","cppKeywords","objCKeywords","objCBuiltins","basicCTypes","basicObjCTypes","cTypes","identifier","objCTypes","cBlockKeywords","cDefKeywords","cppHook","pointerHook","cIsReservedIdentifier","cpp14Literal","cpp11StringHook","cpp11RawStringDelim","tokenRawString","cppLooksLikeConstructor","lastTwo","tokenAtString","def","mimes","add","tokenTripleString","tokenNestedComment","depth","tokenKotlinString","tripleString","modeProps","cx","closeBrackets","pairs","triples","intendSwitch","tokenCeylonString","first","toUpperCase","KEYWORD","DOCTYPE","ID","CLASS","ATTRS_NEST","jsMode","javaScriptLine","javaScriptLineExcludesColon","javaScriptArguments","javaScriptArgumentsDepth","isInterpolating","interpolationNesting","jsState","restOfLine","isIncludeFiltered","isEach","lastTag","scriptType","isAttrs","attrsNest","inAttributeName","attributeIsType","attrValue","indentOf","Infinity","indentToken","innerState","innerModeForLine","javaScript","tok","yieldStatement","doctype","interpolation","interpolationContinued","caseStatement","when","defaultStatement","extendsStatement","append","prepend","block","include","includeFiltered","includeFilteredContinued","filter","mixin","call","mixinCallAfter","callArguments","conditional","each","eachContinued","whileStatement","tag","captures","innerModes","substring","setInnerMode","code","id","attrs","attrsContinued","toString","ex","attributesBlock","colon","dot","fail","force","hideFirstChars","copy","nextToken","res","tagLanguages","script","mustacheOverlay","overlayMode","backdrop","tags","SearchAnnotation","annotateOptions","listenForChanges","annotation","gap","matches","update","findMatches","self","changeHandler","_cm","change","onChange","MAX_MATCHES","offsetLine","changeStart","sizeChange","Math","max","splice","maxMatches","startLine","endLine","changeEnd","min","newFrom","newTo","updateAfterChange","noOptions","nonWS","firstNonWS","probablyInsideString","getTokenTypeAt","useInnerComments","getModeAt","toggleComment","minLine","uncomment","commentString","pad","padding","blankLines","commentBlankLines","baseString","whitespace","cut","replaceRange","fullLines","blockComment","startString","endString","lastLineHasText","lead","blockCommentLead","didSomething","lineString","lines","endPos","open","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","openEnd","foundEnd","ensureState","states","Error","toRegex","caret","flags","String","asToken","apply","Rule","data","regex","tokenFunction","pend","local","endToken","localState","endScan","rule","stack","enterLocalMode","j","cmp","props","spec","pers","p","persistentStates","lState","forceEnd","indentFunction","meta","dontIndentStates","rules","scan","dedentIfLineStart","defineSimpleMode","simpleMode","states_","hasIndentation","orig","s","override","indentUnitString","tagKeywords","keySet","tagKeywords_","tagVariablesRegexp","propertyKeywords_","nonStandardPropertyKeywords","nonStandardPropertyKeywords_","valueKeywords_","colorKeywords_","documentTypes","documentTypes_","documentTypesRegexp","wordRegexp","mediaFeatures","mediaFeatures_","mediaTypes","mediaTypes_","fontProperties_","operatorsRegexp","wordOperatorKeywordsRegexp","wordOperatorKeywords_","blockKeywords_","vendorPrefixesRegexp","commonAtoms","commonAtoms_","firstWordMatch","firstWord","tokenCComment","tokenParenthesized","wordIsTag","currentIndent","contextIndent","pass","popAndPass","n","wordIsProperty","wordIsBlock","wordIsVendorPrefix","wordAsValue","wordLC","typeIsBlock","endOfLine","typeIsInterpolation","typeIsPseudo","escapeRegExp","firstWordOfLine","parens","vendorPrefixes","pseudo","atBlock","atBlock_parens","keyframes","extend","variableName","lineFirstWord","lineIndent","prevLineFirstWord","prevLineIndent","electricChars","commonDef_","hintWords","concat","sort","array","keys","inline","resolveMode","tokenHooks","mediaValueKeywords","counterDescriptors","allowNested","supportsAtComponent","ret","tp","stateArg","mediaValueKeywords_","counterDescriptors_","allWords","onCursorActivity","markedSelection","markedSelectionStyle","reset","CHUNK_SIZE","cmpPos","coverRange","addAt","cls","atEnd","mark","markText","coverStart","coverEnd","cmds","findPosSubword","doc","dir","clipPos","startPos","cat","isWordChar","moveSubword","extendSelectionsBy","insertLine","above","isReadOnly","len","newSelection","last","at","indentLine","setSelections","wordAt","addCursorToSelection","newRanges","newAnchor","findPosV","goalColumn","newHead","left","newRange","isSelectedRange","goSubwordLeft","goSubwordRight","scrollLineUp","getScrollInfo","visibleBottomLine","lineAtHeight","clientHeight","scrollTo","defaultTextHeight","scrollLineDown","visibleTopLine","splitSelectionByLine","lineRanges","singleSelectionTop","scroll","selectLine","extended","insertLineAfter","insertLineBefore","selectNextOccurrence","fullWord","sublimeFindFullWord","addSelection","skipAndSelectNextOccurrence","prevAnchor","prevHead","addCursorToPrevLine","addCursorToNextLine","mirror","selectBetweenBrackets","opening","scanForBracket","puncType","sortLines","caseSensitive","selected","toSort","au","bu","modifyWordOrSelection","indices","replacements","replaceSelections","getTarget","findAndGoTo","forward","target","findPrevious","selectScope","goToBracket","swapLineUp","linesToMove","newSels","swapLineDown","toggleCommentIndented","joinLines","joined","actual","duplicateLine","rangeCount","sortLinesInsensitive","nextBookmark","marks","sublimeBookmarks","prevBookmark","toggleBookmark","findMarksAt","findMarks","sublimeBookmark","k","clearWhenEmpty","clearBookmarks","selectBookmarks","smartBackspace","cursors","toStartOfLine","countColumn","deletePos","findPosH","prevIndent","findColumn","delLineRight","upcaseAtCursor","downcaseAtCursor","setSublimeMark","sublimeMark","setBookmark","selectToSublimeMark","deleteToSublimeMark","tmp","sublimeKilled","swapWithSublimeMark","setCursor","sublimeYank","replaceSelection","showInCenter","findUnder","findUnderPrevious","findAllUnder","primaryIndex","macSublime","normalizeKeyMap","pcSublime","mac","default","macDefault","sublime","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","widget","debounce","tick","startLen","activityFunc","showHint","getHints","async","newOpts","hint","parseOptions","selections","supportsSelection","completionActive","completion","signal","requestAnimationFrame","fn","cancelAnimationFrame","hintOptions","out","defaultOptions","resolve","getText","buildKeyMap","handle","baseMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","navigator","platform","custom","customKeys","ourMap","addBinding","key","bound","extraKeys","getHintElement","hintsElement","el","nodeName","Widget","picked","ownerDocument","getInputField","parentWindow","defaultView","hints","theme","selectedHint","completions","elt","render","createTextNode","displayText","hintId","container","body","alignWithWord","below","offsetLeft","offsetTop","isContainerPositioned","getComputedStyle","position","offsetParent","offsetParentPosition","bodyPosition","scrollLeft","scrollTop","winW","innerWidth","offsetWidth","documentElement","winH","innerHeight","offsetHeight","box","overlapY","scrolls","scrollHeight","startScroll","height","curTop","closingOnBlur","overlapX","right","width","node","firstChild","nextSibling","paddingRight","nativeBarWidth","addKeyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onBlur","onScroll","curScroll","newTop","point","pageYOffset","srcElement","completeOnSingleClick","scrollToActive","childNodes","applicableHelpers","helpers","fetchHints","then","resolveAutoHints","getHelpers","resolved","app","run","getHelper","fromList","anyword","closeCharacters","disable","myTick","finishUpdate","completeSingle","removeKeyMap","floor","term","substr","autocomplete","auto","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","blankLine","baseToken","overlayToken","conf","parserConf","ERRORCLASS","delimiters","identifiers","atProp","wordOperators","indentKeywords","commonKeywords","stringPrefixes","regexPrefixes","commonConstants","constants","scopeOffset","lineOffset","longComment","floatLiteral","intLiteral","tokenFactory","delimiter","singleline","outclass","singleLineStringErrors","alignOffset","_indent","matched","delimiter_index","external","fillAlign","closer","closes","doFold","noFold","regexpFlags","regexp","ensureFlags","maybeMultiline","searchRegexpForward","searchRegexpForwardMultiline","chunk","curLine","inside","startCh","lastMatchIn","endMargin","newMatch","searchRegexpBackward","searchRegexpBackwardMultiline","chunkSize","adjustPos","folded","foldFunc","mid","searchStringForward","cutFrom","searchStringBackward","topString","SearchCursor","atOccurrence","reverse","normalize","newText","origin","splitLines","defineDocExtension","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","inText","chain","parser","ok","inBlock","inTag","baseState","tagName","tagStart","inAttribute","stringStartCol","closure","isInAttribute","terminator","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","defaultTags","maybeBackup","pat","attrRegexpCache","getAttrRegexp","attr","getAttrValue","getTagRegexp","anchored","addTags","dest","findMatchingMode","tagInfo","tagText","configTags","configScript","scriptTypes","htmlState","modeSpec","endTagA","endTag","localMode","_vm","_h","$createElement","_c","_self","staticClass","ref","altOptions","cmOptions","stringValue","directives","rawName","$t","expression","fillTemplate","_e","_v","_s","$tc","lineCount","count","lang","language","staticRenderFns","component","handlebars_raw","handlebars","dash_comment","multiplexingMode","parseDelimiters","outer","others","arguments","pattern","returnEnd","innerActive","inner","curInner","oldContent","delimStyle","innerToken","innerStyle","cutOff","other","outerIndent","possibleOuterIndent","outerToken"],"mappings":"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","file":"js/chunk-3020ac28.a7656fdf.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\")\n query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n else if (!query.global)\n query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n return {token: function(stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }};\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function() { clearSearch(cm); },\n onKeyDown: onKeyDown\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true});\n else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);\n else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n if (ch == \"n\") return \"\\n\"\n if (ch == \"r\") return \"\\r\"\n if (ch == \"t\") return \"\\t\"\n if (ch == \"\\\\\") return \"\\\\\"\n return match\n })\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n if (isRE) {\n try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n catch(e) {} // Not a regular expression after all, do a string search\n } else {\n query = parseString(query)\n }\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null\n if (persistent && cm.openDialog) {\n var hiding = null\n var searchNext = function(query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n if (hiding) hiding.style.opacity = 1\n findNext(cm, event.shiftKey, function(_, to) {\n var dialog\n if (to.line < 3 && document.querySelector &&\n (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n (hiding = dialog).style.opacity = .4\n })\n };\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n var keyName = CodeMirror.keyName(event)\n var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n if (query && !state.query) cm.operation(function() {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {cm.operation(function() {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n state.posFrom = cursor.from(); state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to())\n });}\n\n function clearSearch(cm) {cm.operation(function() {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n });}\n\n\n function getQueryDialog(cm) {\n return '<span class=\"CodeMirror-search-label\">' + cm.phrase(\"Search:\") + '</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use /re/ syntax for regexp search)\") + '</span>';\n }\n function getReplaceQueryDialog(cm) {\n return ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use /re/ syntax for regexp search)\") + '</span>';\n }\n function getReplacementQueryDialog(cm) {\n return '<span class=\"CodeMirror-search-label\">' + cm.phrase(\"With:\") + '</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n }\n function getDoReplaceConfirm(cm) {\n return '<span class=\"CodeMirror-search-label\">' + cm.phrase(\"Replace?\") + '</span> <button>' + cm.phrase(\"Yes\") + '</button> <button>' + cm.phrase(\"No\") + '</button> <button>' + cm.phrase(\"All\") + '</button> <button>' + cm.phrase(\"Stop\") + '</button> ';\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function() {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = '<span class=\"CodeMirror-search-label\">' + (all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")) + '</span>';\n dialog(cm, dialogText + getReplaceQueryDialog(cm), dialogText, query, function(query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n text = parseString(text)\n if (all) {\n replaceAll(cm, query, text)\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n var advance = function() {\n var start = cursor.from(), match;\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) ||\n (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"),\n [function() {doReplace(match);}, advance,\n function() {replaceAll(cm, query, text)}]);\n };\n var doReplace = function(match) {\n cursor.replace(typeof query == \"string\" ? text :\n text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n advance();\n };\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n CodeMirror.commands.findNext = doSearch;\n CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n var cssMode = CodeMirror.mimeModes[\"text/css\"];\n var propertyKeywords = cssMode.propertyKeywords || {},\n colorKeywords = cssMode.colorKeywords || {},\n valueKeywords = cssMode.valueKeywords || {},\n fontProperties = cssMode.fontProperties || {};\n\n function tokenRegexp(words) {\n return new RegExp(\"^\" + words.join(\"|\"));\n }\n\n var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n var opRegexp = tokenRegexp(operators);\n\n var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n var word;\n\n function isEndLine(stream) {\n return !stream.peek() || stream.match(/\\s+$/, false);\n }\n\n function urlTokens(stream, state) {\n var ch = stream.peek();\n\n if (ch === \")\") {\n stream.next();\n state.tokenizer = tokenBase;\n return \"operator\";\n } else if (ch === \"(\") {\n stream.next();\n stream.eatSpace();\n\n return \"operator\";\n } else if (ch === \"'\" || ch === '\"') {\n state.tokenizer = buildStringTokenizer(stream.next());\n return \"string\";\n } else {\n state.tokenizer = buildStringTokenizer(\")\", false);\n return \"string\";\n }\n }\n function comment(indentation, multiLine) {\n return function(stream, state) {\n if (stream.sol() && stream.indentation() <= indentation) {\n state.tokenizer = tokenBase;\n return tokenBase(stream, state);\n }\n\n if (multiLine && stream.skipTo(\"*/\")) {\n stream.next();\n stream.next();\n state.tokenizer = tokenBase;\n } else {\n stream.skipToEnd();\n }\n\n return \"comment\";\n };\n }\n\n function buildStringTokenizer(quote, greedy) {\n if (greedy == null) { greedy = true; }\n\n function stringTokenizer(stream, state) {\n var nextChar = stream.next();\n var peekChar = stream.peek();\n var previousChar = stream.string.charAt(stream.pos-2);\n\n var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n if (endingString) {\n if (nextChar !== quote && greedy) { stream.next(); }\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n state.tokenizer = tokenBase;\n return \"string\";\n } else if (nextChar === \"#\" && peekChar === \"{\") {\n state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n stream.next();\n return \"operator\";\n } else {\n return \"string\";\n }\n }\n\n return stringTokenizer;\n }\n\n function buildInterpolationTokenizer(currentTokenizer) {\n return function(stream, state) {\n if (stream.peek() === \"}\") {\n stream.next();\n state.tokenizer = currentTokenizer;\n return \"operator\";\n } else {\n return tokenBase(stream, state);\n }\n };\n }\n\n function indent(state) {\n if (state.indentCount == 0) {\n state.indentCount++;\n var lastScopeOffset = state.scopes[0].offset;\n var currentOffset = lastScopeOffset + config.indentUnit;\n state.scopes.unshift({ offset:currentOffset });\n }\n }\n\n function dedent(state) {\n if (state.scopes.length == 1) return;\n\n state.scopes.shift();\n }\n\n function tokenBase(stream, state) {\n var ch = stream.peek();\n\n // Comment\n if (stream.match(\"/*\")) {\n state.tokenizer = comment(stream.indentation(), true);\n return state.tokenizer(stream, state);\n }\n if (stream.match(\"//\")) {\n state.tokenizer = comment(stream.indentation(), false);\n return state.tokenizer(stream, state);\n }\n\n // Interpolation\n if (stream.match(\"#{\")) {\n state.tokenizer = buildInterpolationTokenizer(tokenBase);\n return \"operator\";\n }\n\n // Strings\n if (ch === '\"' || ch === \"'\") {\n stream.next();\n state.tokenizer = buildStringTokenizer(ch);\n return \"string\";\n }\n\n if(!state.cursorHalf){// state.cursorHalf === 0\n // first half i.e. before : for key-value pairs\n // including selectors\n\n if (ch === \"-\") {\n if (stream.match(/^-\\w+-/)) {\n return \"meta\";\n }\n }\n\n if (ch === \".\") {\n stream.next();\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"qualifier\";\n } else if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n if (ch === \"#\") {\n stream.next();\n // ID selectors\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"builtin\";\n }\n if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"variable-2\";\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/))\n return \"number\";\n\n // Units\n if (stream.match(/^(px|em|in)\\b/))\n return \"unit\";\n\n if (stream.match(keywordsRegexp))\n return \"keyword\";\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n return \"atom\";\n }\n\n if (ch === \"=\") {\n // Match shortcut mixin definition\n if (stream.match(/^=[\\w-]+/)) {\n indent(state);\n return \"meta\";\n }\n }\n\n if (ch === \"+\") {\n // Match shortcut mixin definition\n if (stream.match(/^\\+[\\w-]+/)){\n return \"variable-3\";\n }\n }\n\n if(ch === \"@\"){\n if(stream.match(/@extend/)){\n if(!stream.match(/\\s*[\\w]/))\n dedent(state);\n }\n }\n\n\n // Indent Directives\n if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n indent(state);\n return \"def\";\n }\n\n // Other Directives\n if (ch === \"@\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"def\";\n }\n\n if (stream.eatWhile(/[\\w-]/)){\n if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n word = stream.current().toLowerCase();\n var prop = state.prevProp + \"-\" + word;\n if (propertyKeywords.hasOwnProperty(prop)) {\n return \"property\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = word;\n return \"property\";\n } else if (fontProperties.hasOwnProperty(word)) {\n return \"property\";\n }\n return \"tag\";\n }\n else if(stream.match(/ *:/,false)){\n indent(state);\n state.cursorHalf = 1;\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n }\n else if(stream.match(/ *,/,false)){\n return \"tag\";\n }\n else{\n indent(state);\n return \"tag\";\n }\n }\n\n if(ch === \":\"){\n if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n return \"variable-3\";\n }\n stream.next();\n state.cursorHalf=1;\n return \"operator\";\n }\n\n } // cursorHalf===0 ends here\n else{\n\n if (ch === \"#\") {\n stream.next();\n // Hex numbers\n if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n\n // Units\n if (stream.match(/^(px|em|in)\\b/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"unit\";\n }\n\n if (stream.match(keywordsRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"keyword\";\n }\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"atom\";\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"variable-2\";\n }\n\n // bang character for !important, !default, etc.\n if (ch === \"!\") {\n stream.next();\n state.cursorHalf = 0;\n return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n }\n\n if (stream.match(opRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"operator\";\n }\n\n // attributes\n if (stream.eatWhile(/[\\w-]/)) {\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word)) {\n return \"atom\";\n } else if (colorKeywords.hasOwnProperty(word)) {\n return \"keyword\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n } else {\n return \"tag\";\n }\n }\n\n //stream.eatSpace();\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n return null;\n }\n\n } // else ends here\n\n if (stream.match(opRegexp))\n return \"operator\";\n\n // If we haven't returned by now, we move 1 character\n // and return an error\n stream.next();\n return null;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.indentCount = 0;\n var style = state.tokenizer(stream, state);\n var current = stream.current();\n\n if (current === \"@return\" || current === \"}\"){\n dedent(state);\n }\n\n if (style !== null) {\n var startOfToken = stream.pos - current.length;\n\n var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n var newScopes = [];\n\n for (var i = 0; i < state.scopes.length; i++) {\n var scope = state.scopes[i];\n\n if (scope.offset <= withCurrentIndent)\n newScopes.push(scope);\n }\n\n state.scopes = newScopes;\n }\n\n\n return style;\n }\n\n return {\n startState: function() {\n return {\n tokenizer: tokenBase,\n scopes: [{offset: 0, type: \"sass\"}],\n indentCount: 0,\n cursorHalf: 0, // cursor half tells us if cursor lies after (1)\n // or before (0) colon (well... more or less)\n definedVars: [],\n definedMixins: []\n };\n },\n token: function(stream, state) {\n var style = tokenLexer(stream, state);\n\n state.lastToken = { style: style, content: stream.current() };\n\n return style;\n },\n\n indent: function(state) {\n return state.scopes[0].offset;\n }\n };\n}, \"css\");\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Highlighting text that matches the selection\n//\n// Defines an option highlightSelectionMatches, which, when enabled,\n// will style strings that match the selection throughout the\n// document.\n//\n// The option can be set to true to simply enable it, or to a\n// {minChars, style, wordsOnly, showToken, delay} object to explicitly\n// configure it. minChars is the minimum amount of characters that should be\n// selected for the behavior to occur, and style is the token style to\n// apply to the matches. This will be prefixed by \"cm-\" to create an\n// actual CSS class name. If wordsOnly is enabled, the matches will be\n// highlighted only if the selected text is a word. showToken, when enabled,\n// will cause the current token to be highlighted when nothing is selected.\n// delay is used to specify how much time to wait, in milliseconds, before\n// highlighting the matches. If annotateScrollbar is enabled, the occurences\n// will be highlighted on the scrollbar via the matchesonscrollbar addon.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./matchesonscrollbar\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./matchesonscrollbar\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaults = {\n style: \"matchhighlight\",\n minChars: 2,\n delay: 100,\n wordsOnly: false,\n annotateScrollbar: false,\n showToken: false,\n trim: true\n }\n\n function State(options) {\n this.options = {}\n for (var name in defaults)\n this.options[name] = (options && options.hasOwnProperty(name) ? options : defaults)[name]\n this.overlay = this.timeout = null;\n this.matchesonscroll = null;\n this.active = false;\n }\n\n CodeMirror.defineOption(\"highlightSelectionMatches\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n removeOverlay(cm);\n clearTimeout(cm.state.matchHighlighter.timeout);\n cm.state.matchHighlighter = null;\n cm.off(\"cursorActivity\", cursorActivity);\n cm.off(\"focus\", onFocus)\n }\n if (val) {\n var state = cm.state.matchHighlighter = new State(val);\n if (cm.hasFocus()) {\n state.active = true\n highlightMatches(cm)\n } else {\n cm.on(\"focus\", onFocus)\n }\n cm.on(\"cursorActivity\", cursorActivity);\n }\n });\n\n function cursorActivity(cm) {\n var state = cm.state.matchHighlighter;\n if (state.active || cm.hasFocus()) scheduleHighlight(cm, state)\n }\n\n function onFocus(cm) {\n var state = cm.state.matchHighlighter\n if (!state.active) {\n state.active = true\n scheduleHighlight(cm, state)\n }\n }\n\n function scheduleHighlight(cm, state) {\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function() {highlightMatches(cm);}, state.options.delay);\n }\n\n function addOverlay(cm, query, hasBoundary, style) {\n var state = cm.state.matchHighlighter;\n cm.addOverlay(state.overlay = makeOverlay(query, hasBoundary, style));\n if (state.options.annotateScrollbar && cm.showMatchesOnScrollbar) {\n var searchFor = hasBoundary ? new RegExp(\"\\\\b\" + query.replace(/[\\\\\\[.+*?(){|^$]/g, \"\\\\$&\") + \"\\\\b\") : query;\n state.matchesonscroll = cm.showMatchesOnScrollbar(searchFor, false,\n {className: \"CodeMirror-selection-highlight-scrollbar\"});\n }\n }\n\n function removeOverlay(cm) {\n var state = cm.state.matchHighlighter;\n if (state.overlay) {\n cm.removeOverlay(state.overlay);\n state.overlay = null;\n if (state.matchesonscroll) {\n state.matchesonscroll.clear();\n state.matchesonscroll = null;\n }\n }\n }\n\n function highlightMatches(cm) {\n cm.operation(function() {\n var state = cm.state.matchHighlighter;\n removeOverlay(cm);\n if (!cm.somethingSelected() && state.options.showToken) {\n var re = state.options.showToken === true ? /[\\w$]/ : state.options.showToken;\n var cur = cm.getCursor(), line = cm.getLine(cur.line), start = cur.ch, end = start;\n while (start && re.test(line.charAt(start - 1))) --start;\n while (end < line.length && re.test(line.charAt(end))) ++end;\n if (start < end)\n addOverlay(cm, line.slice(start, end), re, state.options.style);\n return;\n }\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (from.line != to.line) return;\n if (state.options.wordsOnly && !isWord(cm, from, to)) return;\n var selection = cm.getRange(from, to)\n if (state.options.trim) selection = selection.replace(/^\\s+|\\s+$/g, \"\")\n if (selection.length >= state.options.minChars)\n addOverlay(cm, selection, false, state.options.style);\n });\n }\n\n function isWord(cm, from, to) {\n var str = cm.getRange(from, to);\n if (str.match(/^\\w+$/) !== null) {\n if (from.ch > 0) {\n var pos = {line: from.line, ch: from.ch - 1};\n var chr = cm.getRange(pos, from);\n if (chr.match(/\\W/) === null) return false;\n }\n if (to.ch < cm.getLine(from.line).length) {\n var pos = {line: to.line, ch: to.ch + 1};\n var chr = cm.getRange(to, pos);\n if (chr.match(/\\W/) === null) return false;\n }\n return true;\n } else return false;\n }\n\n function boundariesAround(stream, re) {\n return (!stream.start || !re.test(stream.string.charAt(stream.start - 1))) &&\n (stream.pos == stream.string.length || !re.test(stream.string.charAt(stream.pos)));\n }\n\n function makeOverlay(query, hasBoundary, style) {\n return {token: function(stream) {\n if (stream.match(query) &&\n (!hasBoundary || boundariesAround(stream, hasBoundary)))\n return style;\n stream.next();\n stream.skipTo(query.charAt(0)) || stream.skipToEnd();\n }};\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n var WRAP_CLASS = \"CodeMirror-activeline\";\n var BACK_CLASS = \"CodeMirror-activeline-background\";\n var GUTT_CLASS = \"CodeMirror-activeline-gutter\";\n\n CodeMirror.defineOption(\"styleActiveLine\", false, function(cm, val, old) {\n var prev = old == CodeMirror.Init ? false : old;\n if (val == prev) return\n if (prev) {\n cm.off(\"beforeSelectionChange\", selectionChange);\n clearActiveLines(cm);\n delete cm.state.activeLines;\n }\n if (val) {\n cm.state.activeLines = [];\n updateActiveLines(cm, cm.listSelections());\n cm.on(\"beforeSelectionChange\", selectionChange);\n }\n });\n\n function clearActiveLines(cm) {\n for (var i = 0; i < cm.state.activeLines.length; i++) {\n cm.removeLineClass(cm.state.activeLines[i], \"wrap\", WRAP_CLASS);\n cm.removeLineClass(cm.state.activeLines[i], \"background\", BACK_CLASS);\n cm.removeLineClass(cm.state.activeLines[i], \"gutter\", GUTT_CLASS);\n }\n }\n\n function sameArray(a, b) {\n if (a.length != b.length) return false;\n for (var i = 0; i < a.length; i++)\n if (a[i] != b[i]) return false;\n return true;\n }\n\n function updateActiveLines(cm, ranges) {\n var active = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var option = cm.getOption(\"styleActiveLine\");\n if (typeof option == \"object\" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())\n continue\n var line = cm.getLineHandleVisualStart(range.head.line);\n if (active[active.length - 1] != line) active.push(line);\n }\n if (sameArray(cm.state.activeLines, active)) return;\n cm.operation(function() {\n clearActiveLines(cm);\n for (var i = 0; i < active.length; i++) {\n cm.addLineClass(active[i], \"wrap\", WRAP_CLASS);\n cm.addLineClass(active[i], \"background\", BACK_CLASS);\n cm.addLineClass(active[i], \"gutter\", GUTT_CLASS);\n }\n cm.state.activeLines = active;\n });\n }\n\n function selectionChange(cm, sel) {\n updateActiveLines(cm, sel.ranges);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var Pos = CodeMirror.Pos;\n\n function forEach(arr, f) {\n for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);\n }\n\n function arrayContains(arr, item) {\n if (!Array.prototype.indexOf) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n return true;\n }\n }\n return false;\n }\n return arr.indexOf(item) != -1;\n }\n\n function scriptHint(editor, keywords, getToken, options) {\n // Find the token at the cursor\n var cur = editor.getCursor(), token = getToken(editor, cur);\n if (/\\b(?:string|comment)\\b/.test(token.type)) return;\n var innerMode = CodeMirror.innerMode(editor.getMode(), token.state);\n if (innerMode.mode.helperType === \"json\") return;\n token.state = innerMode.state;\n\n // If it's not a 'word-style' token, ignore the token.\n if (!/^[\\w$_]*$/.test(token.string)) {\n token = {start: cur.ch, end: cur.ch, string: \"\", state: token.state,\n type: token.string == \".\" ? \"property\" : null};\n } else if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n\n var tprop = token;\n // If it is a property, find out what it is a property of.\n while (tprop.type == \"property\") {\n tprop = getToken(editor, Pos(cur.line, tprop.start));\n if (tprop.string != \".\") return;\n tprop = getToken(editor, Pos(cur.line, tprop.start));\n if (!context) var context = [];\n context.push(tprop);\n }\n return {list: getCompletions(token, context, keywords, options),\n from: Pos(cur.line, token.start),\n to: Pos(cur.line, token.end)};\n }\n\n function javascriptHint(editor, options) {\n return scriptHint(editor, javascriptKeywords,\n function (e, cur) {return e.getTokenAt(cur);},\n options);\n };\n CodeMirror.registerHelper(\"hint\", \"javascript\", javascriptHint);\n\n function getCoffeeScriptToken(editor, cur) {\n // This getToken, it is for coffeescript, imitates the behavior of\n // getTokenAt method in javascript.js, that is, returning \"property\"\n // type and treat \".\" as indepenent token.\n var token = editor.getTokenAt(cur);\n if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') {\n token.end = token.start;\n token.string = '.';\n token.type = \"property\";\n }\n else if (/^\\.[\\w$_]*$/.test(token.string)) {\n token.type = \"property\";\n token.start++;\n token.string = token.string.replace(/\\./, '');\n }\n return token;\n }\n\n function coffeescriptHint(editor, options) {\n return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options);\n }\n CodeMirror.registerHelper(\"hint\", \"coffeescript\", coffeescriptHint);\n\n var stringProps = (\"charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight \" +\n \"toUpperCase toLowerCase split concat match replace search\").split(\" \");\n var arrayProps = (\"length concat join splice push pop shift unshift slice reverse sort indexOf \" +\n \"lastIndexOf every some filter forEach map reduce reduceRight \").split(\" \");\n var funcProps = \"prototype apply call bind\".split(\" \");\n var javascriptKeywords = (\"break case catch class const continue debugger default delete do else export extends false finally for function \" +\n \"if in import instanceof new null return super switch this throw true try typeof var void while with yield\").split(\" \");\n var coffeescriptKeywords = (\"and break catch class continue delete do else extends false finally for \" +\n \"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes\").split(\" \");\n\n function forAllProps(obj, callback) {\n if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) {\n for (var name in obj) callback(name)\n } else {\n for (var o = obj; o; o = Object.getPrototypeOf(o))\n Object.getOwnPropertyNames(o).forEach(callback)\n }\n }\n\n function getCompletions(token, context, keywords, options) {\n var found = [], start = token.string, global = options && options.globalScope || window;\n function maybeAdd(str) {\n if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str);\n }\n function gatherCompletions(obj) {\n if (typeof obj == \"string\") forEach(stringProps, maybeAdd);\n else if (obj instanceof Array) forEach(arrayProps, maybeAdd);\n else if (obj instanceof Function) forEach(funcProps, maybeAdd);\n forAllProps(obj, maybeAdd)\n }\n\n if (context && context.length) {\n // If this is a property, see if it belongs to some object we can\n // find in the current environment.\n var obj = context.pop(), base;\n if (obj.type && obj.type.indexOf(\"variable\") === 0) {\n if (options && options.additionalContext)\n base = options.additionalContext[obj.string];\n if (!options || options.useGlobalScope !== false)\n base = base || global[obj.string];\n } else if (obj.type == \"string\") {\n base = \"\";\n } else if (obj.type == \"atom\") {\n base = 1;\n } else if (obj.type == \"function\") {\n if (global.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&\n (typeof global.jQuery == 'function'))\n base = global.jQuery();\n else if (global._ != null && (obj.string == '_') && (typeof global._ == 'function'))\n base = global._();\n }\n while (base != null && context.length)\n base = base[context.pop().string];\n if (base != null) gatherCompletions(base);\n } else {\n // If not, just look in the global object and any local scope\n // (reading into JS mode internals to get at the local and global variables)\n for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);\n for (var c = token.state.context; c; c = c.prev)\n for (var v = c.vars; v; v = v.next) maybeAdd(v.name)\n for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);\n if (!options || options.useGlobalScope !== false)\n gatherCompletions(global);\n forEach(keywords, maybeAdd);\n }\n return found;\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"), require(\"../clike/clike\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\", \"../clike/clike\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function keywords(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n\n // Helper for phpString\n function matchSequence(list, end, escapes) {\n if (list.length == 0) return phpString(end);\n return function (stream, state) {\n var patterns = list[0];\n for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) {\n state.tokenize = matchSequence(list.slice(1), end);\n return patterns[i][1];\n }\n state.tokenize = phpString(end, escapes);\n return \"string\";\n };\n }\n function phpString(closing, escapes) {\n return function(stream, state) { return phpString_(stream, state, closing, escapes); };\n }\n function phpString_(stream, state, closing, escapes) {\n // \"Complex\" syntax\n if (escapes !== false && stream.match(\"${\", false) || stream.match(\"{$\", false)) {\n state.tokenize = null;\n return \"string\";\n }\n\n // Simple syntax\n if (escapes !== false && stream.match(/^\\$[a-zA-Z_][a-zA-Z0-9_]*/)) {\n // After the variable name there may appear array or object operator.\n if (stream.match(\"[\", false)) {\n // Match array operator\n state.tokenize = matchSequence([\n [[\"[\", null]],\n [[/\\d[\\w\\.]*/, \"number\"],\n [/\\$[a-zA-Z_][a-zA-Z0-9_]*/, \"variable-2\"],\n [/[\\w\\$]+/, \"variable\"]],\n [[\"]\", null]]\n ], closing, escapes);\n }\n if (stream.match(/\\-\\>\\w/, false)) {\n // Match object operator\n state.tokenize = matchSequence([\n [[\"->\", null]],\n [[/[\\w]+/, \"variable\"]]\n ], closing, escapes);\n }\n return \"variable-2\";\n }\n\n var escaped = false;\n // Normal string\n while (!stream.eol() &&\n (escaped || escapes === false ||\n (!stream.match(\"{$\", false) &&\n !stream.match(/^(\\$[a-zA-Z_][a-zA-Z0-9_]*|\\$\\{)/, false)))) {\n if (!escaped && stream.match(closing)) {\n state.tokenize = null;\n state.tokStack.pop(); state.tokStack.pop();\n break;\n }\n escaped = stream.next() == \"\\\\\" && !escaped;\n }\n return \"string\";\n }\n\n var phpKeywords = \"abstract and array as break case catch class clone const continue declare default \" +\n \"do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final \" +\n \"for foreach function global goto if implements interface instanceof namespace \" +\n \"new or private protected public static switch throw trait try use var while xor \" +\n \"die echo empty exit eval include include_once isset list require require_once return \" +\n \"print unset __halt_compiler self static parent yield insteadof finally\";\n var phpAtoms = \"true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__\";\n var phpBuiltin = \"func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count\";\n CodeMirror.registerHelper(\"hintWords\", \"php\", [phpKeywords, phpAtoms, phpBuiltin].join(\" \").split(\" \"));\n CodeMirror.registerHelper(\"wordChars\", \"php\", /[\\w$]/);\n\n var phpConfig = {\n name: \"clike\",\n helperType: \"php\",\n keywords: keywords(phpKeywords),\n blockKeywords: keywords(\"catch do else elseif for foreach if switch try while finally\"),\n defKeywords: keywords(\"class function interface namespace trait\"),\n atoms: keywords(phpAtoms),\n builtin: keywords(phpBuiltin),\n multiLineStrings: true,\n hooks: {\n \"$\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"variable-2\";\n },\n \"<\": function(stream, state) {\n var before;\n if (before = stream.match(/<<\\s*/)) {\n var quoted = stream.eat(/['\"]/);\n stream.eatWhile(/[\\w\\.]/);\n var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1));\n if (quoted) stream.eat(quoted);\n if (delim) {\n (state.tokStack || (state.tokStack = [])).push(delim, 0);\n state.tokenize = phpString(delim, quoted != \"'\");\n return \"string\";\n }\n }\n return false;\n },\n \"#\": function(stream) {\n while (!stream.eol() && !stream.match(\"?>\", false)) stream.next();\n return \"comment\";\n },\n \"/\": function(stream) {\n if (stream.eat(\"/\")) {\n while (!stream.eol() && !stream.match(\"?>\", false)) stream.next();\n return \"comment\";\n }\n return false;\n },\n '\"': function(_stream, state) {\n (state.tokStack || (state.tokStack = [])).push('\"', 0);\n state.tokenize = phpString('\"');\n return \"string\";\n },\n \"{\": function(_stream, state) {\n if (state.tokStack && state.tokStack.length)\n state.tokStack[state.tokStack.length - 1]++;\n return false;\n },\n \"}\": function(_stream, state) {\n if (state.tokStack && state.tokStack.length > 0 &&\n !--state.tokStack[state.tokStack.length - 1]) {\n state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]);\n }\n return false;\n }\n }\n };\n\n CodeMirror.defineMode(\"php\", function(config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, (parserConfig && parserConfig.htmlMode) || \"text/html\");\n var phpMode = CodeMirror.getMode(config, phpConfig);\n\n function dispatch(stream, state) {\n var isPHP = state.curMode == phpMode;\n if (stream.sol() && state.pending && state.pending != '\"' && state.pending != \"'\") state.pending = null;\n if (!isPHP) {\n if (stream.match(/^<\\?\\w*/)) {\n state.curMode = phpMode;\n if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, \"\", \"\"))\n state.curState = state.php;\n return \"meta\";\n }\n if (state.pending == '\"' || state.pending == \"'\") {\n while (!stream.eol() && stream.next() != state.pending) {}\n var style = \"string\";\n } else if (state.pending && stream.pos < state.pending.end) {\n stream.pos = state.pending.end;\n var style = state.pending.style;\n } else {\n var style = htmlMode.token(stream, state.curState);\n }\n if (state.pending) state.pending = null;\n var cur = stream.current(), openPHP = cur.search(/<\\?/), m;\n if (openPHP != -1) {\n if (style == \"string\" && (m = cur.match(/[\\'\\\"]$/)) && !/\\?>/.test(cur)) state.pending = m[0];\n else state.pending = {end: stream.pos, style: style};\n stream.backUp(cur.length - openPHP);\n }\n return style;\n } else if (isPHP && state.php.tokenize == null && stream.match(\"?>\")) {\n state.curMode = htmlMode;\n state.curState = state.html;\n if (!state.php.context.prev) state.php = null;\n return \"meta\";\n } else {\n return phpMode.token(stream, state.curState);\n }\n }\n\n return {\n startState: function() {\n var html = CodeMirror.startState(htmlMode)\n var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null\n return {html: html,\n php: php,\n curMode: parserConfig.startOpen ? phpMode : htmlMode,\n curState: parserConfig.startOpen ? php : html,\n pending: null};\n },\n\n copyState: function(state) {\n var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),\n php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur;\n if (state.curMode == htmlMode) cur = htmlNew;\n else cur = phpNew;\n return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur,\n pending: state.pending};\n },\n\n token: dispatch,\n\n indent: function(state, textAfter, line) {\n if ((state.curMode != phpMode && /^\\s*<\\//.test(textAfter)) ||\n (state.curMode == phpMode && /^\\?>/.test(textAfter)))\n return htmlMode.indent(state.html, textAfter, line);\n return state.curMode.indent(state.curState, textAfter, line);\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\",\n\n innerMode: function(state) { return {state: state.curState, mode: state.curMode}; }\n };\n }, \"htmlmixed\", \"clike\");\n\n CodeMirror.defineMIME(\"application/x-httpd-php\", \"php\");\n CodeMirror.defineMIME(\"application/x-httpd-php-open\", {name: \"php\", startOpen: true});\n CodeMirror.defineMIME(\"text/x-php\", phpConfig);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction Context(indented, column, type, info, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.info = info;\n this.align = align;\n this.prev = prev;\n}\nfunction pushContext(state, col, type, info) {\n var indent = state.indented;\n if (state.context && state.context.type == \"statement\" && type != \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, info, null, state.context);\n}\nfunction popContext(state) {\n var t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n}\n\nfunction typeBefore(stream, state, pos) {\n if (state.prevToken == \"variable\" || state.prevToken == \"type\") return true;\n if (/\\S(?:[^- ]>|[*\\]])\\s*$|\\*$/.test(stream.string.slice(0, pos))) return true;\n if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;\n}\n\nfunction isTopScope(context) {\n for (;;) {\n if (!context || context.type == \"top\") return true;\n if (context.type == \"}\" && context.prev.info != \"namespace\") return false;\n context = context.prev;\n }\n}\n\nCodeMirror.defineMode(\"clike\", function(config, parserConfig) {\n var indentUnit = config.indentUnit,\n statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n dontAlignCalls = parserConfig.dontAlignCalls,\n keywords = parserConfig.keywords || {},\n types = parserConfig.types || {},\n builtin = parserConfig.builtin || {},\n blockKeywords = parserConfig.blockKeywords || {},\n defKeywords = parserConfig.defKeywords || {},\n atoms = parserConfig.atoms || {},\n hooks = parserConfig.hooks || {},\n multiLineStrings = parserConfig.multiLineStrings,\n indentStatements = parserConfig.indentStatements !== false,\n indentSwitch = parserConfig.indentSwitch !== false,\n namespaceSeparator = parserConfig.namespaceSeparator,\n isPunctuationChar = parserConfig.isPunctuationChar || /[\\[\\]{}\\(\\),;\\:\\.]/,\n numberStart = parserConfig.numberStart || /[\\d\\.]/,\n number = parserConfig.number || /^(?:0x[a-f\\d]+|0b[01]+|(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?)(u|ll?|l|f)?/i,\n isOperatorChar = parserConfig.isOperatorChar || /[+\\-*&%=<>!?|\\/]/,\n isIdentifierChar = parserConfig.isIdentifierChar || /[\\w\\$_\\xa1-\\uffff]/,\n // An optional function that takes a {string} token and returns true if it\n // should be treated as a builtin.\n isReservedIdentifier = parserConfig.isReservedIdentifier || false;\n\n var curPunc, isDefKeyword;\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (hooks[ch]) {\n var result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (isPunctuationChar.test(ch)) {\n curPunc = ch;\n return null;\n }\n if (numberStart.test(ch)) {\n stream.backUp(1)\n if (stream.match(number)) return \"number\"\n stream.next()\n }\n if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n }\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (isOperatorChar.test(ch)) {\n while (!stream.match(/^\\/[\\/*]/, false) && stream.eat(isOperatorChar)) {}\n return \"operator\";\n }\n stream.eatWhile(isIdentifierChar);\n if (namespaceSeparator) while (stream.match(namespaceSeparator))\n stream.eatWhile(isIdentifierChar);\n\n var cur = stream.current();\n if (contains(keywords, cur)) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n if (contains(defKeywords, cur)) isDefKeyword = true;\n return \"keyword\";\n }\n if (contains(types, cur)) return \"type\";\n if (contains(builtin, cur)\n || (isReservedIdentifier && isReservedIdentifier(cur))) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n return \"builtin\";\n }\n if (contains(atoms, cur)) return \"atom\";\n return \"variable\";\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) {end = true; break;}\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return \"comment\";\n }\n\n function maybeEOL(stream, state) {\n if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context))\n state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n return {\n tokenize: null,\n context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", null, false),\n indented: 0,\n startOfLine: true,\n prevToken: null\n };\n },\n\n token: function(stream, state) {\n var ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) { maybeEOL(stream, state); return null; }\n curPunc = isDefKeyword = null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\" || style == \"meta\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if (curPunc == \";\" || curPunc == \":\" || (curPunc == \",\" && stream.match(/^\\s*(?:\\/\\/.*)?$/, false)))\n while (state.context.type == \"statement\") popContext(state);\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements &&\n (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != \";\") ||\n (ctx.type == \"statement\" && curPunc == \"newstatement\"))) {\n pushContext(state, stream.column(), \"statement\", stream.current());\n }\n\n if (style == \"variable\" &&\n ((state.prevToken == \"def\" ||\n (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) &&\n isTopScope(state.context) && stream.match(/^\\s*\\(/, false)))))\n style = \"def\";\n\n if (hooks.token) {\n var result = hooks.token(stream, state, style);\n if (result !== undefined) style = result;\n }\n\n if (style == \"def\" && parserConfig.styleDefs === false) style = \"variable\";\n\n state.startOfLine = false;\n state.prevToken = isDefKeyword ? \"def\" : style || curPunc;\n maybeEOL(stream, state);\n return style;\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass;\n var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n var closing = firstChar == ctx.type;\n if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n if (parserConfig.dontIndentStatements)\n while (ctx.type == \"statement\" && parserConfig.dontIndentStatements.test(ctx.info))\n ctx = ctx.prev\n if (hooks.indent) {\n var hook = hooks.indent(state, ctx, textAfter, indentUnit);\n if (typeof hook == \"number\") return hook\n }\n var switchBlock = ctx.prev && ctx.prev.info == \"switch\";\n if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {\n while (ctx.type != \"top\" && ctx.type != \"}\") ctx = ctx.prev\n return ctx.indented\n }\n if (ctx.type == \"statement\")\n return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n if (ctx.align && (!dontAlignCalls || ctx.type != \")\"))\n return ctx.column + (closing ? 0 : 1);\n if (ctx.type == \")\" && !closing)\n return ctx.indented + statementIndentUnit;\n\n return ctx.indented + (closing ? 0 : indentUnit) +\n (!closing && switchBlock && !/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 0);\n },\n\n electricInput: indentSwitch ? /^\\s*(?:case .*?:|default:|\\{\\}?|\\})$/ : /^\\s*[{}]$/,\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"brace\"\n };\n});\n\n function words(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n function contains(words, word) {\n if (typeof words === \"function\") {\n return words(word);\n } else {\n return words.propertyIsEnumerable(word);\n }\n }\n var cKeywords = \"auto if break case register continue return default do sizeof \" +\n \"static else struct switch extern typedef union for goto while enum const \" +\n \"volatile inline restrict asm fortran\";\n\n // Keywords from https://en.cppreference.com/w/cpp/keyword includes C++20.\n var cppKeywords = \"alignas alignof and and_eq audit axiom bitand bitor catch \" +\n \"class compl concept constexpr const_cast decltype delete dynamic_cast \" +\n \"explicit export final friend import module mutable namespace new noexcept \" +\n \"not not_eq operator or or_eq override private protected public \" +\n \"reinterpret_cast requires static_assert static_cast template this \" +\n \"thread_local throw try typeid typename using virtual xor xor_eq\";\n\n var objCKeywords = \"bycopy byref in inout oneway out self super atomic nonatomic retain copy \" +\n \"readwrite readonly strong weak assign typeof nullable nonnull null_resettable _cmd \" +\n \"@interface @implementation @end @protocol @encode @property @synthesize @dynamic @class \" +\n \"@public @package @private @protected @required @optional @try @catch @finally @import \" +\n \"@selector @encode @defs @synchronized @autoreleasepool @compatibility_alias @available\";\n\n var objCBuiltins = \"FOUNDATION_EXPORT FOUNDATION_EXTERN NS_INLINE NS_FORMAT_FUNCTION \" +\n \" NS_RETURNS_RETAINEDNS_ERROR_ENUM NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER \" +\n \"NS_DESIGNATED_INITIALIZER NS_ENUM NS_OPTIONS NS_REQUIRES_NIL_TERMINATION \" +\n \"NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_SWIFT_NAME NS_REFINED_FOR_SWIFT\"\n\n // Do not use this. Use the cTypes function below. This is global just to avoid\n // excessive calls when cTypes is being called multiple times during a parse.\n var basicCTypes = words(\"int long char short double float unsigned signed \" +\n \"void bool\");\n\n // Do not use this. Use the objCTypes function below. This is global just to avoid\n // excessive calls when objCTypes is being called multiple times during a parse.\n var basicObjCTypes = words(\"SEL instancetype id Class Protocol BOOL\");\n\n // Returns true if identifier is a \"C\" type.\n // C type is defined as those that are reserved by the compiler (basicTypes),\n // and those that end in _t (Reserved by POSIX for types)\n // http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html\n function cTypes(identifier) {\n return contains(basicCTypes, identifier) || /.+_t$/.test(identifier);\n }\n\n // Returns true if identifier is a \"Objective C\" type.\n function objCTypes(identifier) {\n return cTypes(identifier) || contains(basicObjCTypes, identifier);\n }\n\n var cBlockKeywords = \"case do else for if switch while struct enum union\";\n var cDefKeywords = \"struct enum union\";\n\n function cppHook(stream, state) {\n if (!state.startOfLine) return false\n for (var ch, next = null; ch = stream.peek();) {\n if (ch == \"\\\\\" && stream.match(/^.$/)) {\n next = cppHook\n break\n } else if (ch == \"/\" && stream.match(/^\\/[\\/\\*]/, false)) {\n break\n }\n stream.next()\n }\n state.tokenize = next\n return \"meta\"\n }\n\n function pointerHook(_stream, state) {\n if (state.prevToken == \"type\") return \"type\";\n return false;\n }\n\n // For C and C++ (and ObjC): identifiers starting with __\n // or _ followed by a capital letter are reserved for the compiler.\n function cIsReservedIdentifier(token) {\n if (!token || token.length < 2) return false;\n if (token[0] != '_') return false;\n return (token[1] == '_') || (token[1] !== token[1].toLowerCase());\n }\n\n function cpp14Literal(stream) {\n stream.eatWhile(/[\\w\\.']/);\n return \"number\";\n }\n\n function cpp11StringHook(stream, state) {\n stream.backUp(1);\n // Raw strings.\n if (stream.match(/(R|u8R|uR|UR|LR)/)) {\n var match = stream.match(/\"([^\\s\\\\()]{0,16})\\(/);\n if (!match) {\n return false;\n }\n state.cpp11RawStringDelim = match[1];\n state.tokenize = tokenRawString;\n return tokenRawString(stream, state);\n }\n // Unicode strings/chars.\n if (stream.match(/(u8|u|U|L)/)) {\n if (stream.match(/[\"']/, /* eat */ false)) {\n return \"string\";\n }\n return false;\n }\n // Ignore this hook.\n stream.next();\n return false;\n }\n\n function cppLooksLikeConstructor(word) {\n var lastTwo = /(\\w+)::~?(\\w+)$/.exec(word);\n return lastTwo && lastTwo[1] == lastTwo[2];\n }\n\n // C#-style strings where \"\" escapes a quote.\n function tokenAtString(stream, state) {\n var next;\n while ((next = stream.next()) != null) {\n if (next == '\"' && !stream.eat('\"')) {\n state.tokenize = null;\n break;\n }\n }\n return \"string\";\n }\n\n // C++11 raw string literal is <prefix>\"<delim>( anything )<delim>\", where\n // <delim> can be a string up to 16 characters long.\n function tokenRawString(stream, state) {\n // Escape characters that have special regex meanings.\n var delim = state.cpp11RawStringDelim.replace(/[^\\w\\s]/g, '\\\\$&');\n var match = stream.match(new RegExp(\".*?\\\\)\" + delim + '\"'));\n if (match)\n state.tokenize = null;\n else\n stream.skipToEnd();\n return \"string\";\n }\n\n function def(mimes, mode) {\n if (typeof mimes == \"string\") mimes = [mimes];\n var words = [];\n function add(obj) {\n if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))\n words.push(prop);\n }\n add(mode.keywords);\n add(mode.types);\n add(mode.builtin);\n add(mode.atoms);\n if (words.length) {\n mode.helperType = mimes[0];\n CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n }\n\n for (var i = 0; i < mimes.length; ++i)\n CodeMirror.defineMIME(mimes[i], mode);\n }\n\n def([\"text/x-csrc\", \"text/x-c\", \"text/x-chdr\"], {\n name: \"clike\",\n keywords: words(cKeywords),\n types: cTypes,\n blockKeywords: words(cBlockKeywords),\n defKeywords: words(cDefKeywords),\n typeFirstDefinitions: true,\n atoms: words(\"NULL true false\"),\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n },\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def([\"text/x-c++src\", \"text/x-c++hdr\"], {\n name: \"clike\",\n keywords: words(cKeywords + \" \" + cppKeywords),\n types: cTypes,\n blockKeywords: words(cBlockKeywords + \" class try catch\"),\n defKeywords: words(cDefKeywords + \" class namespace\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false NULL nullptr\"),\n dontIndentStatements: /^template$/,\n isIdentifierChar: /[\\w\\$_~\\xa1-\\uffff]/,\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n \"u\": cpp11StringHook,\n \"U\": cpp11StringHook,\n \"L\": cpp11StringHook,\n \"R\": cpp11StringHook,\n \"0\": cpp14Literal,\n \"1\": cpp14Literal,\n \"2\": cpp14Literal,\n \"3\": cpp14Literal,\n \"4\": cpp14Literal,\n \"5\": cpp14Literal,\n \"6\": cpp14Literal,\n \"7\": cpp14Literal,\n \"8\": cpp14Literal,\n \"9\": cpp14Literal,\n token: function(stream, state, style) {\n if (style == \"variable\" && stream.peek() == \"(\" &&\n (state.prevToken == \";\" || state.prevToken == null ||\n state.prevToken == \"}\") &&\n cppLooksLikeConstructor(stream.current()))\n return \"def\";\n }\n },\n namespaceSeparator: \"::\",\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-java\", {\n name: \"clike\",\n keywords: words(\"abstract assert break case catch class const continue default \" +\n \"do else enum extends final finally for goto if implements import \" +\n \"instanceof interface native new package private protected public \" +\n \"return static strictfp super switch synchronized this throw throws transient \" +\n \"try volatile while @interface\"),\n types: words(\"byte short int long float double boolean char void Boolean Byte Character Double Float \" +\n \"Integer Long Number Object Short String StringBuffer StringBuilder Void\"),\n blockKeywords: words(\"catch class do else finally for if switch try while\"),\n defKeywords: words(\"class interface enum @interface\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false null\"),\n number: /^(?:0x[a-f\\d_]+|0b[01_]+|(?:[\\d_]+\\.?\\d*|\\.\\d+)(?:e[-+]?[\\d_]+)?)(u|ll?|l|f)?/i,\n hooks: {\n \"@\": function(stream) {\n // Don't match the @interface keyword.\n if (stream.match('interface', false)) return false;\n\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n }\n },\n modeProps: {fold: [\"brace\", \"import\"]}\n });\n\n def(\"text/x-csharp\", {\n name: \"clike\",\n keywords: words(\"abstract as async await base break case catch checked class const continue\" +\n \" default delegate do else enum event explicit extern finally fixed for\" +\n \" foreach goto if implicit in interface internal is lock namespace new\" +\n \" operator out override params private protected public readonly ref return sealed\" +\n \" sizeof stackalloc static struct switch this throw try typeof unchecked\" +\n \" unsafe using virtual void volatile while add alias ascending descending dynamic from get\" +\n \" global group into join let orderby partial remove select set value var yield\"),\n types: words(\"Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func\" +\n \" Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32\" +\n \" UInt64 bool byte char decimal double short int long object\" +\n \" sbyte float string ushort uint ulong\"),\n blockKeywords: words(\"catch class do else finally for foreach if struct switch try while\"),\n defKeywords: words(\"class interface namespace struct var\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false null\"),\n hooks: {\n \"@\": function(stream, state) {\n if (stream.eat('\"')) {\n state.tokenize = tokenAtString;\n return tokenAtString(stream, state);\n }\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n }\n }\n });\n\n function tokenTripleString(stream, state) {\n var escaped = false;\n while (!stream.eol()) {\n if (!escaped && stream.match('\"\"\"')) {\n state.tokenize = null;\n break;\n }\n escaped = stream.next() == \"\\\\\" && !escaped;\n }\n return \"string\";\n }\n\n function tokenNestedComment(depth) {\n return function (stream, state) {\n var ch\n while (ch = stream.next()) {\n if (ch == \"*\" && stream.eat(\"/\")) {\n if (depth == 1) {\n state.tokenize = null\n break\n } else {\n state.tokenize = tokenNestedComment(depth - 1)\n return state.tokenize(stream, state)\n }\n } else if (ch == \"/\" && stream.eat(\"*\")) {\n state.tokenize = tokenNestedComment(depth + 1)\n return state.tokenize(stream, state)\n }\n }\n return \"comment\"\n }\n }\n\n def(\"text/x-scala\", {\n name: \"clike\",\n keywords: words(\n /* scala */\n \"abstract case catch class def do else extends final finally for forSome if \" +\n \"implicit import lazy match new null object override package private protected return \" +\n \"sealed super this throw trait try type val var while with yield _ \" +\n\n /* package scala */\n \"assert assume require print println printf readLine readBoolean readByte readShort \" +\n \"readChar readInt readLong readFloat readDouble\"\n ),\n types: words(\n \"AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either \" +\n \"Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable \" +\n \"Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering \" +\n \"Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder \" +\n \"StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector \" +\n\n /* package java.lang */\n \"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable \" +\n \"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process \" +\n \"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String \" +\n \"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void\"\n ),\n multiLineStrings: true,\n blockKeywords: words(\"catch class enum do else finally for forSome if match switch try while\"),\n defKeywords: words(\"class enum def object package trait type val var\"),\n atoms: words(\"true false null\"),\n indentStatements: false,\n indentSwitch: false,\n isOperatorChar: /[+\\-*&%=<>!?|\\/#:@]/,\n hooks: {\n \"@\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '\"': function(stream, state) {\n if (!stream.match('\"\"')) return false;\n state.tokenize = tokenTripleString;\n return state.tokenize(stream, state);\n },\n \"'\": function(stream) {\n stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n return \"atom\";\n },\n \"=\": function(stream, state) {\n var cx = state.context\n if (cx.type == \"}\" && cx.align && stream.eat(\">\")) {\n state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev)\n return \"operator\"\n } else {\n return false\n }\n },\n\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false\n state.tokenize = tokenNestedComment(1)\n return state.tokenize(stream, state)\n }\n },\n modeProps: {closeBrackets: {pairs: '()[]{}\"\"', triples: '\"'}}\n });\n\n function tokenKotlinString(tripleString){\n return function (stream, state) {\n var escaped = false, next, end = false;\n while (!stream.eol()) {\n if (!tripleString && !escaped && stream.match('\"') ) {end = true; break;}\n if (tripleString && stream.match('\"\"\"')) {end = true; break;}\n next = stream.next();\n if(!escaped && next == \"$\" && stream.match('{'))\n stream.skipTo(\"}\");\n escaped = !escaped && next == \"\\\\\" && !tripleString;\n }\n if (end || !tripleString)\n state.tokenize = null;\n return \"string\";\n }\n }\n\n def(\"text/x-kotlin\", {\n name: \"clike\",\n keywords: words(\n /*keywords*/\n \"package as typealias class interface this super val operator \" +\n \"var fun for is in This throw return annotation \" +\n \"break continue object if else while do try when !in !is as? \" +\n\n /*soft keywords*/\n \"file import where by get set abstract enum open inner override private public internal \" +\n \"protected catch finally out final vararg reified dynamic companion constructor init \" +\n \"sealed field property receiver param sparam lateinit data inline noinline tailrec \" +\n \"external annotation crossinline const operator infix suspend actual expect setparam\"\n ),\n types: words(\n /* package java.lang */\n \"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable \" +\n \"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process \" +\n \"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String \" +\n \"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray \" +\n \"ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy \" +\n \"LazyThreadSafetyMode LongArray Nothing ShortArray Unit\"\n ),\n intendSwitch: false,\n indentStatements: false,\n multiLineStrings: true,\n number: /^(?:0x[a-f\\d_]+|0b[01_]+|(?:[\\d_]+(\\.\\d+)?|\\.\\d+)(?:e[-+]?[\\d_]+)?)(u|ll?|l|f)?/i,\n blockKeywords: words(\"catch class do else finally for if where try while enum\"),\n defKeywords: words(\"class val var object interface fun\"),\n atoms: words(\"true false null this\"),\n hooks: {\n \"@\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '*': function(_stream, state) {\n return state.prevToken == '.' ? 'variable' : 'operator';\n },\n '\"': function(stream, state) {\n state.tokenize = tokenKotlinString(stream.match('\"\"'));\n return state.tokenize(stream, state);\n },\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenNestedComment(1);\n return state.tokenize(stream, state)\n },\n indent: function(state, ctx, textAfter, indentUnit) {\n var firstChar = textAfter && textAfter.charAt(0);\n if ((state.prevToken == \"}\" || state.prevToken == \")\") && textAfter == \"\")\n return state.indented;\n if ((state.prevToken == \"operator\" && textAfter != \"}\" && state.context.type != \"}\") ||\n state.prevToken == \"variable\" && firstChar == \".\" ||\n (state.prevToken == \"}\" || state.prevToken == \")\") && firstChar == \".\")\n return indentUnit * 2 + ctx.indented;\n if (ctx.align && ctx.type == \"}\")\n return ctx.indented + (state.context.type == (textAfter || \"\").charAt(0) ? 0 : indentUnit);\n }\n },\n modeProps: {closeBrackets: {triples: '\"'}}\n });\n\n def([\"x-shader/x-vertex\", \"x-shader/x-fragment\"], {\n name: \"clike\",\n keywords: words(\"sampler1D sampler2D sampler3D samplerCube \" +\n \"sampler1DShadow sampler2DShadow \" +\n \"const attribute uniform varying \" +\n \"break continue discard return \" +\n \"for while do if else struct \" +\n \"in out inout\"),\n types: words(\"float int bool void \" +\n \"vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 \" +\n \"mat2 mat3 mat4\"),\n blockKeywords: words(\"for while do if else struct\"),\n builtin: words(\"radians degrees sin cos tan asin acos atan \" +\n \"pow exp log exp2 sqrt inversesqrt \" +\n \"abs sign floor ceil fract mod min max clamp mix step smoothstep \" +\n \"length distance dot cross normalize ftransform faceforward \" +\n \"reflect refract matrixCompMult \" +\n \"lessThan lessThanEqual greaterThan greaterThanEqual \" +\n \"equal notEqual any all not \" +\n \"texture1D texture1DProj texture1DLod texture1DProjLod \" +\n \"texture2D texture2DProj texture2DLod texture2DProjLod \" +\n \"texture3D texture3DProj texture3DLod texture3DProjLod \" +\n \"textureCube textureCubeLod \" +\n \"shadow1D shadow2D shadow1DProj shadow2DProj \" +\n \"shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod \" +\n \"dFdx dFdy fwidth \" +\n \"noise1 noise2 noise3 noise4\"),\n atoms: words(\"true false \" +\n \"gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex \" +\n \"gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 \" +\n \"gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 \" +\n \"gl_FogCoord gl_PointCoord \" +\n \"gl_Position gl_PointSize gl_ClipVertex \" +\n \"gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor \" +\n \"gl_TexCoord gl_FogFragCoord \" +\n \"gl_FragCoord gl_FrontFacing \" +\n \"gl_FragData gl_FragDepth \" +\n \"gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix \" +\n \"gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse \" +\n \"gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse \" +\n \"gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose \" +\n \"gl_ProjectionMatrixInverseTranspose \" +\n \"gl_ModelViewProjectionMatrixInverseTranspose \" +\n \"gl_TextureMatrixInverseTranspose \" +\n \"gl_NormalScale gl_DepthRange gl_ClipPlane \" +\n \"gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel \" +\n \"gl_FrontLightModelProduct gl_BackLightModelProduct \" +\n \"gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ \" +\n \"gl_FogParameters \" +\n \"gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords \" +\n \"gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats \" +\n \"gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits \" +\n \"gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits \" +\n \"gl_MaxDrawBuffers\"),\n indentSwitch: false,\n hooks: {\"#\": cppHook},\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-nesc\", {\n name: \"clike\",\n keywords: words(cKeywords + \" as atomic async call command component components configuration event generic \" +\n \"implementation includes interface module new norace nx_struct nx_union post provides \" +\n \"signal task uses abstract extends\"),\n types: cTypes,\n blockKeywords: words(cBlockKeywords),\n atoms: words(\"null true false\"),\n hooks: {\"#\": cppHook},\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-objectivec\", {\n name: \"clike\",\n keywords: words(cKeywords + \" \" + objCKeywords),\n types: objCTypes,\n builtin: words(objCBuiltins),\n blockKeywords: words(cBlockKeywords + \" @synthesize @try @catch @finally @autoreleasepool @synchronized\"),\n defKeywords: words(cDefKeywords + \" @interface @implementation @protocol @class\"),\n dontIndentStatements: /^@.*$/,\n typeFirstDefinitions: true,\n atoms: words(\"YES NO NULL Nil nil true false nullptr\"),\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n },\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-objectivec++\", {\n name: \"clike\",\n keywords: words(cKeywords + \" \" + objCKeywords + \" \" + cppKeywords),\n types: objCTypes,\n builtin: words(objCBuiltins),\n blockKeywords: words(cBlockKeywords + \" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch\"),\n defKeywords: words(cDefKeywords + \" @interface @implementation @protocol @class class namespace\"),\n dontIndentStatements: /^@.*$|^template$/,\n typeFirstDefinitions: true,\n atoms: words(\"YES NO NULL Nil nil true false nullptr\"),\n isReservedIdentifier: cIsReservedIdentifier,\n hooks: {\n \"#\": cppHook,\n \"*\": pointerHook,\n \"u\": cpp11StringHook,\n \"U\": cpp11StringHook,\n \"L\": cpp11StringHook,\n \"R\": cpp11StringHook,\n \"0\": cpp14Literal,\n \"1\": cpp14Literal,\n \"2\": cpp14Literal,\n \"3\": cpp14Literal,\n \"4\": cpp14Literal,\n \"5\": cpp14Literal,\n \"6\": cpp14Literal,\n \"7\": cpp14Literal,\n \"8\": cpp14Literal,\n \"9\": cpp14Literal,\n token: function(stream, state, style) {\n if (style == \"variable\" && stream.peek() == \"(\" &&\n (state.prevToken == \";\" || state.prevToken == null ||\n state.prevToken == \"}\") &&\n cppLooksLikeConstructor(stream.current()))\n return \"def\";\n }\n },\n namespaceSeparator: \"::\",\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n def(\"text/x-squirrel\", {\n name: \"clike\",\n keywords: words(\"base break clone continue const default delete enum extends function in class\" +\n \" foreach local resume return this throw typeof yield constructor instanceof static\"),\n types: cTypes,\n blockKeywords: words(\"case catch class else for foreach if switch try while\"),\n defKeywords: words(\"function local class\"),\n typeFirstDefinitions: true,\n atoms: words(\"true false null\"),\n hooks: {\"#\": cppHook},\n modeProps: {fold: [\"brace\", \"include\"]}\n });\n\n // Ceylon Strings need to deal with interpolation\n var stringTokenizer = null;\n function tokenCeylonString(type) {\n return function(stream, state) {\n var escaped = false, next, end = false;\n while (!stream.eol()) {\n if (!escaped && stream.match('\"') &&\n (type == \"single\" || stream.match('\"\"'))) {\n end = true;\n break;\n }\n if (!escaped && stream.match('``')) {\n stringTokenizer = tokenCeylonString(type);\n end = true;\n break;\n }\n next = stream.next();\n escaped = type == \"single\" && !escaped && next == \"\\\\\";\n }\n if (end)\n state.tokenize = null;\n return \"string\";\n }\n }\n\n def(\"text/x-ceylon\", {\n name: \"clike\",\n keywords: words(\"abstracts alias assembly assert assign break case catch class continue dynamic else\" +\n \" exists extends finally for function given if import in interface is let module new\" +\n \" nonempty object of out outer package return satisfies super switch then this throw\" +\n \" try value void while\"),\n types: function(word) {\n // In Ceylon all identifiers that start with an uppercase are types\n var first = word.charAt(0);\n return (first === first.toUpperCase() && first !== first.toLowerCase());\n },\n blockKeywords: words(\"case catch class dynamic else finally for function if interface module new object switch try while\"),\n defKeywords: words(\"class dynamic function interface module object package value\"),\n builtin: words(\"abstract actual aliased annotation by default deprecated doc final formal late license\" +\n \" native optional sealed see serializable shared suppressWarnings tagged throws variable\"),\n isPunctuationChar: /[\\[\\]{}\\(\\),;\\:\\.`]/,\n isOperatorChar: /[+\\-*&%=<>!?|^~:\\/]/,\n numberStart: /[\\d#$]/,\n number: /^(?:#[\\da-fA-F_]+|\\$[01_]+|[\\d_]+[kMGTPmunpf]?|[\\d_]+\\.[\\d_]+(?:[eE][-+]?\\d+|[kMGTPmunpf]|)|)/i,\n multiLineStrings: true,\n typeFirstDefinitions: true,\n atoms: words(\"true false null larger smaller equal empty finished\"),\n indentSwitch: false,\n styleDefs: false,\n hooks: {\n \"@\": function(stream) {\n stream.eatWhile(/[\\w\\$_]/);\n return \"meta\";\n },\n '\"': function(stream, state) {\n state.tokenize = tokenCeylonString(stream.match('\"\"') ? \"triple\" : \"single\");\n return state.tokenize(stream, state);\n },\n '`': function(stream, state) {\n if (!stringTokenizer || !stream.match('`')) return false;\n state.tokenize = stringTokenizer;\n stringTokenizer = null;\n return state.tokenize(stream, state);\n },\n \"'\": function(stream) {\n stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n return \"atom\";\n },\n token: function(_stream, state, style) {\n if ((style == \"variable\" || style == \"type\") &&\n state.prevToken == \".\") {\n return \"variable-2\";\n }\n }\n },\n modeProps: {\n fold: [\"brace\", \"import\"],\n closeBrackets: {triples: '\"'}\n }\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pug\", function (config) {\n // token types\n var KEYWORD = 'keyword';\n var DOCTYPE = 'meta';\n var ID = 'builtin';\n var CLASS = 'qualifier';\n\n var ATTRS_NEST = {\n '{': '}',\n '(': ')',\n '[': ']'\n };\n\n var jsMode = CodeMirror.getMode(config, 'javascript');\n\n function State() {\n this.javaScriptLine = false;\n this.javaScriptLineExcludesColon = false;\n\n this.javaScriptArguments = false;\n this.javaScriptArgumentsDepth = 0;\n\n this.isInterpolating = false;\n this.interpolationNesting = 0;\n\n this.jsState = CodeMirror.startState(jsMode);\n\n this.restOfLine = '';\n\n this.isIncludeFiltered = false;\n this.isEach = false;\n\n this.lastTag = '';\n this.scriptType = '';\n\n // Attributes Mode\n this.isAttrs = false;\n this.attrsNest = [];\n this.inAttributeName = true;\n this.attributeIsType = false;\n this.attrValue = '';\n\n // Indented Mode\n this.indentOf = Infinity;\n this.indentToken = '';\n\n this.innerMode = null;\n this.innerState = null;\n\n this.innerModeForLine = false;\n }\n /**\n * Safely copy a state\n *\n * @return {State}\n */\n State.prototype.copy = function () {\n var res = new State();\n res.javaScriptLine = this.javaScriptLine;\n res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n res.javaScriptArguments = this.javaScriptArguments;\n res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n res.isInterpolating = this.isInterpolating;\n res.interpolationNesting = this.interpolationNesting;\n\n res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n res.innerMode = this.innerMode;\n if (this.innerMode && this.innerState) {\n res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n }\n\n res.restOfLine = this.restOfLine;\n\n res.isIncludeFiltered = this.isIncludeFiltered;\n res.isEach = this.isEach;\n res.lastTag = this.lastTag;\n res.scriptType = this.scriptType;\n res.isAttrs = this.isAttrs;\n res.attrsNest = this.attrsNest.slice();\n res.inAttributeName = this.inAttributeName;\n res.attributeIsType = this.attributeIsType;\n res.attrValue = this.attrValue;\n res.indentOf = this.indentOf;\n res.indentToken = this.indentToken;\n\n res.innerModeForLine = this.innerModeForLine;\n\n return res;\n };\n\n function javaScript(stream, state) {\n if (stream.sol()) {\n // if javaScriptLine was set at end of line, ignore it\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n }\n if (state.javaScriptLine) {\n if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n return;\n }\n var tok = jsMode.token(stream, state.jsState);\n if (stream.eol()) state.javaScriptLine = false;\n return tok || true;\n }\n }\n function javaScriptArguments(stream, state) {\n if (state.javaScriptArguments) {\n if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n state.javaScriptArguments = false;\n return;\n }\n if (stream.peek() === '(') {\n state.javaScriptArgumentsDepth++;\n } else if (stream.peek() === ')') {\n state.javaScriptArgumentsDepth--;\n }\n if (state.javaScriptArgumentsDepth === 0) {\n state.javaScriptArguments = false;\n return;\n }\n\n var tok = jsMode.token(stream, state.jsState);\n return tok || true;\n }\n }\n\n function yieldStatement(stream) {\n if (stream.match(/^yield\\b/)) {\n return 'keyword';\n }\n }\n\n function doctype(stream) {\n if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n return DOCTYPE;\n }\n }\n\n function interpolation(stream, state) {\n if (stream.match('#{')) {\n state.isInterpolating = true;\n state.interpolationNesting = 0;\n return 'punctuation';\n }\n }\n\n function interpolationContinued(stream, state) {\n if (state.isInterpolating) {\n if (stream.peek() === '}') {\n state.interpolationNesting--;\n if (state.interpolationNesting < 0) {\n stream.next();\n state.isInterpolating = false;\n return 'punctuation';\n }\n } else if (stream.peek() === '{') {\n state.interpolationNesting++;\n }\n return jsMode.token(stream, state.jsState) || true;\n }\n }\n\n function caseStatement(stream, state) {\n if (stream.match(/^case\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function when(stream, state) {\n if (stream.match(/^when\\b/)) {\n state.javaScriptLine = true;\n state.javaScriptLineExcludesColon = true;\n return KEYWORD;\n }\n }\n\n function defaultStatement(stream) {\n if (stream.match(/^default\\b/)) {\n return KEYWORD;\n }\n }\n\n function extendsStatement(stream, state) {\n if (stream.match(/^extends?\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function append(stream, state) {\n if (stream.match(/^append\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function prepend(stream, state) {\n if (stream.match(/^prepend\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function block(stream, state) {\n if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n\n function include(stream, state) {\n if (stream.match(/^include\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function includeFiltered(stream, state) {\n if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n state.isIncludeFiltered = true;\n return KEYWORD;\n }\n }\n\n function includeFilteredContinued(stream, state) {\n if (state.isIncludeFiltered) {\n var tok = filter(stream, state);\n state.isIncludeFiltered = false;\n state.restOfLine = 'string';\n return tok;\n }\n }\n\n function mixin(stream, state) {\n if (stream.match(/^mixin\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function call(stream, state) {\n if (stream.match(/^\\+([-\\w]+)/)) {\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return 'variable';\n }\n if (stream.match(/^\\+#{/, false)) {\n stream.next();\n state.mixinCallAfter = true;\n return interpolation(stream, state);\n }\n }\n function callArguments(stream, state) {\n if (state.mixinCallAfter) {\n state.mixinCallAfter = false;\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return true;\n }\n }\n\n function conditional(stream, state) {\n if (stream.match(/^(if|unless|else if|else)\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function each(stream, state) {\n if (stream.match(/^(- *)?(each|for)\\b/)) {\n state.isEach = true;\n return KEYWORD;\n }\n }\n function eachContinued(stream, state) {\n if (state.isEach) {\n if (stream.match(/^ in\\b/)) {\n state.javaScriptLine = true;\n state.isEach = false;\n return KEYWORD;\n } else if (stream.sol() || stream.eol()) {\n state.isEach = false;\n } else if (stream.next()) {\n while (!stream.match(/^ in\\b/, false) && stream.next());\n return 'variable';\n }\n }\n }\n\n function whileStatement(stream, state) {\n if (stream.match(/^while\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function tag(stream, state) {\n var captures;\n if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n state.lastTag = captures[1].toLowerCase();\n if (state.lastTag === 'script') {\n state.scriptType = 'application/javascript';\n }\n return 'tag';\n }\n }\n\n function filter(stream, state) {\n if (stream.match(/^:([\\w\\-]+)/)) {\n var innerMode;\n if (config && config.innerModes) {\n innerMode = config.innerModes(stream.current().substring(1));\n }\n if (!innerMode) {\n innerMode = stream.current().substring(1);\n }\n if (typeof innerMode === 'string') {\n innerMode = CodeMirror.getMode(config, innerMode);\n }\n setInnerMode(stream, state, innerMode);\n return 'atom';\n }\n }\n\n function code(stream, state) {\n if (stream.match(/^(!?=|-)/)) {\n state.javaScriptLine = true;\n return 'punctuation';\n }\n }\n\n function id(stream) {\n if (stream.match(/^#([\\w-]+)/)) {\n return ID;\n }\n }\n\n function className(stream) {\n if (stream.match(/^\\.([\\w-]+)/)) {\n return CLASS;\n }\n }\n\n function attrs(stream, state) {\n if (stream.peek() == '(') {\n stream.next();\n state.isAttrs = true;\n state.attrsNest = [];\n state.inAttributeName = true;\n state.attrValue = '';\n state.attributeIsType = false;\n return 'punctuation';\n }\n }\n\n function attrsContinued(stream, state) {\n if (state.isAttrs) {\n if (ATTRS_NEST[stream.peek()]) {\n state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n }\n if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n state.attrsNest.pop();\n } else if (stream.eat(')')) {\n state.isAttrs = false;\n return 'punctuation';\n }\n if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n if (stream.peek() === '=' || stream.peek() === '!') {\n state.inAttributeName = false;\n state.jsState = CodeMirror.startState(jsMode);\n if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n state.attributeIsType = true;\n } else {\n state.attributeIsType = false;\n }\n }\n return 'attribute';\n }\n\n var tok = jsMode.token(stream, state.jsState);\n if (state.attributeIsType && tok === 'string') {\n state.scriptType = stream.current().toString();\n }\n if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n try {\n Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n state.inAttributeName = true;\n state.attrValue = '';\n stream.backUp(stream.current().length);\n return attrsContinued(stream, state);\n } catch (ex) {\n //not the end of an attribute\n }\n }\n state.attrValue += stream.current();\n return tok || true;\n }\n }\n\n function attributesBlock(stream, state) {\n if (stream.match(/^&attributes\\b/)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n return 'keyword';\n }\n }\n\n function indent(stream) {\n if (stream.sol() && stream.eatSpace()) {\n return 'indent';\n }\n }\n\n function comment(stream, state) {\n if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n state.indentOf = stream.indentation();\n state.indentToken = 'comment';\n return 'comment';\n }\n }\n\n function colon(stream) {\n if (stream.match(/^: */)) {\n return 'colon';\n }\n }\n\n function text(stream, state) {\n if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n return 'string';\n }\n if (stream.match(/^(<[^\\n]*)/, false)) {\n // html string\n setInnerMode(stream, state, 'htmlmixed');\n state.innerModeForLine = true;\n return innerMode(stream, state, true);\n }\n }\n\n function dot(stream, state) {\n if (stream.eat('.')) {\n var innerMode = null;\n if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n } else if (state.lastTag === 'style') {\n innerMode = 'css';\n }\n setInnerMode(stream, state, innerMode);\n return 'dot';\n }\n }\n\n function fail(stream) {\n stream.next();\n return null;\n }\n\n\n function setInnerMode(stream, state, mode) {\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = CodeMirror.getMode(config, mode);\n state.indentOf = stream.indentation();\n\n if (mode && mode.name !== 'null') {\n state.innerMode = mode;\n } else {\n state.indentToken = 'string';\n }\n }\n function innerMode(stream, state, force) {\n if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n if (state.innerMode) {\n if (!state.innerState) {\n state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};\n }\n return stream.hideFirstChars(state.indentOf + 2, function () {\n return state.innerMode.token(stream, state.innerState) || true;\n });\n } else {\n stream.skipToEnd();\n return state.indentToken;\n }\n } else if (stream.sol()) {\n state.indentOf = Infinity;\n state.indentToken = null;\n state.innerMode = null;\n state.innerState = null;\n }\n }\n function restOfLine(stream, state) {\n if (stream.sol()) {\n // if restOfLine was set at end of line, ignore it\n state.restOfLine = '';\n }\n if (state.restOfLine) {\n stream.skipToEnd();\n var tok = state.restOfLine;\n state.restOfLine = '';\n return tok;\n }\n }\n\n\n function startState() {\n return new State();\n }\n function copyState(state) {\n return state.copy();\n }\n /**\n * Get the next token in the stream\n *\n * @param {Stream} stream\n * @param {State} state\n */\n function nextToken(stream, state) {\n var tok = innerMode(stream, state)\n || restOfLine(stream, state)\n || interpolationContinued(stream, state)\n || includeFilteredContinued(stream, state)\n || eachContinued(stream, state)\n || attrsContinued(stream, state)\n || javaScript(stream, state)\n || javaScriptArguments(stream, state)\n || callArguments(stream, state)\n\n || yieldStatement(stream)\n || doctype(stream)\n || interpolation(stream, state)\n || caseStatement(stream, state)\n || when(stream, state)\n || defaultStatement(stream)\n || extendsStatement(stream, state)\n || append(stream, state)\n || prepend(stream, state)\n || block(stream, state)\n || include(stream, state)\n || includeFiltered(stream, state)\n || mixin(stream, state)\n || call(stream, state)\n || conditional(stream, state)\n || each(stream, state)\n || whileStatement(stream, state)\n || tag(stream, state)\n || filter(stream, state)\n || code(stream, state)\n || id(stream)\n || className(stream)\n || attrs(stream, state)\n || attributesBlock(stream, state)\n || indent(stream)\n || text(stream, state)\n || comment(stream, state)\n || colon(stream)\n || dot(stream, state)\n || fail(stream);\n\n return tok === true ? null : tok;\n }\n return {\n startState: startState,\n copyState: copyState,\n token: nextToken\n };\n}, 'javascript', 'css', 'htmlmixed');\n\nCodeMirror.defineMIME('text/x-pug', 'pug');\nCodeMirror.defineMIME('text/x-jade', 'pug');\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function (mod) {\n \"use strict\";\n if (typeof exports === \"object\" && typeof module === \"object\") {// CommonJS\n mod(require(\"../../lib/codemirror\"),\n require(\"../../addon/mode/overlay\"),\n require(\"../xml/xml\"),\n require(\"../javascript/javascript\"),\n require(\"../coffeescript/coffeescript\"),\n require(\"../css/css\"),\n require(\"../sass/sass\"),\n require(\"../stylus/stylus\"),\n require(\"../pug/pug\"),\n require(\"../handlebars/handlebars\"));\n } else if (typeof define === \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\",\n \"../../addon/mode/overlay\",\n \"../xml/xml\",\n \"../javascript/javascript\",\n \"../coffeescript/coffeescript\",\n \"../css/css\",\n \"../sass/sass\",\n \"../stylus/stylus\",\n \"../pug/pug\",\n \"../handlebars/handlebars\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function (CodeMirror) {\n var tagLanguages = {\n script: [\n [\"lang\", /coffee(script)?/, \"coffeescript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?coffee(?:script)?$/, \"coffeescript\"],\n [\"lang\", /^babel$/, \"javascript\"],\n [\"type\", /^text\\/babel$/, \"javascript\"],\n [\"type\", /^text\\/ecmascript-\\d+$/, \"javascript\"]\n ],\n style: [\n [\"lang\", /^stylus$/i, \"stylus\"],\n [\"lang\", /^sass$/i, \"sass\"],\n [\"lang\", /^less$/i, \"text/x-less\"],\n [\"lang\", /^scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?styl(us)?$/i, \"stylus\"],\n [\"type\", /^text\\/sass/i, \"sass\"],\n [\"type\", /^(text\\/)?(x-)?scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?less$/i, \"text/x-less\"]\n ],\n template: [\n [\"lang\", /^vue-template$/i, \"vue\"],\n [\"lang\", /^pug$/i, \"pug\"],\n [\"lang\", /^handlebars$/i, \"handlebars\"],\n [\"type\", /^(text\\/)?(x-)?pug$/i, \"pug\"],\n [\"type\", /^text\\/x-handlebars-template$/i, \"handlebars\"],\n [null, null, \"vue-template\"]\n ]\n };\n\n CodeMirror.defineMode(\"vue-template\", function (config, parserConfig) {\n var mustacheOverlay = {\n token: function (stream) {\n if (stream.match(/^\\{\\{.*?\\}\\}/)) return \"meta mustache\";\n while (stream.next() && !stream.match(\"{{\", false)) {}\n return null;\n }\n };\n return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || \"text/html\"), mustacheOverlay);\n });\n\n CodeMirror.defineMode(\"vue\", function (config) {\n return CodeMirror.getMode(config, {name: \"htmlmixed\", tags: tagLanguages});\n }, \"htmlmixed\", \"xml\", \"javascript\", \"coffeescript\", \"css\", \"sass\", \"stylus\", \"pug\", \"handlebars\");\n\n CodeMirror.defineMIME(\"script/x-vue\", \"vue\");\n CodeMirror.defineMIME(\"text/x-vue\", \"vue\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../scroll/annotatescrollbar\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../scroll/annotatescrollbar\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineExtension(\"showMatchesOnScrollbar\", function(query, caseFold, options) {\n if (typeof options == \"string\") options = {className: options};\n if (!options) options = {};\n return new SearchAnnotation(this, query, caseFold, options);\n });\n\n function SearchAnnotation(cm, query, caseFold, options) {\n this.cm = cm;\n this.options = options;\n var annotateOptions = {listenForChanges: false};\n for (var prop in options) annotateOptions[prop] = options[prop];\n if (!annotateOptions.className) annotateOptions.className = \"CodeMirror-search-match\";\n this.annotation = cm.annotateScrollbar(annotateOptions);\n this.query = query;\n this.caseFold = caseFold;\n this.gap = {from: cm.firstLine(), to: cm.lastLine() + 1};\n this.matches = [];\n this.update = null;\n\n this.findMatches();\n this.annotation.update(this.matches);\n\n var self = this;\n cm.on(\"change\", this.changeHandler = function(_cm, change) { self.onChange(change); });\n }\n\n var MAX_MATCHES = 1000;\n\n SearchAnnotation.prototype.findMatches = function() {\n if (!this.gap) return;\n for (var i = 0; i < this.matches.length; i++) {\n var match = this.matches[i];\n if (match.from.line >= this.gap.to) break;\n if (match.to.line >= this.gap.from) this.matches.splice(i--, 1);\n }\n var cursor = this.cm.getSearchCursor(this.query, CodeMirror.Pos(this.gap.from, 0), {caseFold: this.caseFold, multiline: this.options.multiline});\n var maxMatches = this.options && this.options.maxMatches || MAX_MATCHES;\n while (cursor.findNext()) {\n var match = {from: cursor.from(), to: cursor.to()};\n if (match.from.line >= this.gap.to) break;\n this.matches.splice(i++, 0, match);\n if (this.matches.length > maxMatches) break;\n }\n this.gap = null;\n };\n\n function offsetLine(line, changeStart, sizeChange) {\n if (line <= changeStart) return line;\n return Math.max(changeStart, line + sizeChange);\n }\n\n SearchAnnotation.prototype.onChange = function(change) {\n var startLine = change.from.line;\n var endLine = CodeMirror.changeEnd(change).line;\n var sizeChange = endLine - change.to.line;\n if (this.gap) {\n this.gap.from = Math.min(offsetLine(this.gap.from, startLine, sizeChange), change.from.line);\n this.gap.to = Math.max(offsetLine(this.gap.to, startLine, sizeChange), change.from.line);\n } else {\n this.gap = {from: change.from.line, to: endLine + 1};\n }\n\n if (sizeChange) for (var i = 0; i < this.matches.length; i++) {\n var match = this.matches[i];\n var newFrom = offsetLine(match.from.line, startLine, sizeChange);\n if (newFrom != match.from.line) match.from = CodeMirror.Pos(newFrom, match.from.ch);\n var newTo = offsetLine(match.to.line, startLine, sizeChange);\n if (newTo != match.to.line) match.to = CodeMirror.Pos(newTo, match.to.ch);\n }\n clearTimeout(this.update);\n var self = this;\n this.update = setTimeout(function() { self.updateAfterChange(); }, 250);\n };\n\n SearchAnnotation.prototype.updateAfterChange = function() {\n this.findMatches();\n this.annotation.update(this.matches);\n };\n\n SearchAnnotation.prototype.clear = function() {\n this.cm.off(\"change\", this.changeHandler);\n this.annotation.clear();\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n self.replaceRange(endString, to);\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode = function(name, states) {\n CodeMirror.defineMode(name, function(config) {\n return CodeMirror.simpleMode(config, states);\n });\n };\n\n CodeMirror.simpleMode = function(config, states) {\n ensureState(states, \"start\");\n var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n var list = states_[state] = [], orig = states[state];\n for (var i = 0; i < orig.length; i++) {\n var data = orig[i];\n list.push(new Rule(data, states));\n if (data.indent || data.dedent) hasIndentation = true;\n }\n }\n var mode = {\n startState: function() {\n return {state: \"start\", pending: null,\n local: null, localState: null,\n indent: hasIndentation ? [] : null};\n },\n copyState: function(state) {\n var s = {state: state.state, pending: state.pending,\n local: state.local, localState: null,\n indent: state.indent && state.indent.slice(0)};\n if (state.localState)\n s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n if (state.stack)\n s.stack = state.stack.slice(0);\n for (var pers = state.persistentStates; pers; pers = pers.next)\n s.persistentStates = {mode: pers.mode,\n spec: pers.spec,\n state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n next: s.persistentStates};\n return s;\n },\n token: tokenFunction(states_, config),\n innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n indent: indentFunction(states_, meta)\n };\n if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n mode[prop] = meta[prop];\n return mode;\n };\n\n function ensureState(states, name) {\n if (!states.hasOwnProperty(name))\n throw new Error(\"Undefined state \" + name + \" in simple mode\");\n }\n\n function toRegex(val, caret) {\n if (!val) return /(?:)/;\n var flags = \"\";\n if (val instanceof RegExp) {\n if (val.ignoreCase) flags = \"i\";\n val = val.source;\n } else {\n val = String(val);\n }\n return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n }\n\n function asToken(val) {\n if (!val) return null;\n if (val.apply) return val\n if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n var result = [];\n for (var i = 0; i < val.length; i++)\n result.push(val[i] && val[i].replace(/\\./g, \" \"));\n return result;\n }\n\n function Rule(data, states) {\n if (data.next || data.push) ensureState(states, data.next || data.push);\n this.regex = toRegex(data.regex);\n this.token = asToken(data.token);\n this.data = data;\n }\n\n function tokenFunction(states, config) {\n return function(stream, state) {\n if (state.pending) {\n var pend = state.pending.shift();\n if (state.pending.length == 0) state.pending = null;\n stream.pos += pend.text.length;\n return pend.token;\n }\n\n if (state.local) {\n if (state.local.end && stream.match(state.local.end)) {\n var tok = state.local.endToken || null;\n state.local = state.localState = null;\n return tok;\n } else {\n var tok = state.local.mode.token(stream, state.localState), m;\n if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n stream.pos = stream.start + m.index;\n return tok;\n }\n }\n\n var curState = states[state.state];\n for (var i = 0; i < curState.length; i++) {\n var rule = curState[i];\n var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n if (matches) {\n if (rule.data.next) {\n state.state = rule.data.next;\n } else if (rule.data.push) {\n (state.stack || (state.stack = [])).push(state.state);\n state.state = rule.data.push;\n } else if (rule.data.pop && state.stack && state.stack.length) {\n state.state = state.stack.pop();\n }\n\n if (rule.data.mode)\n enterLocalMode(config, state, rule.data.mode, rule.token);\n if (rule.data.indent)\n state.indent.push(stream.indentation() + config.indentUnit);\n if (rule.data.dedent)\n state.indent.pop();\n var token = rule.token\n if (token && token.apply) token = token(matches)\n if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n state.pending = [];\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n state.pending.push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n }\n\n function cmp(a, b) {\n if (a === b) return true;\n if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n var props = 0;\n for (var prop in a) if (a.hasOwnProperty(prop)) {\n if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n props++;\n }\n for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n return props == 0;\n }\n\n function enterLocalMode(config, state, spec, token) {\n var pers;\n if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n var lState = pers ? pers.state : CodeMirror.startState(mode);\n if (spec.persistent && !pers)\n state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n state.localState = lState;\n state.local = {mode: mode,\n end: spec.end && toRegex(spec.end),\n endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n endToken: token && token.join ? token[token.length - 1] : token};\n }\n\n function indexOf(val, arr) {\n for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n }\n\n function indentFunction(states, meta) {\n return function(state, textAfter, line) {\n if (state.local && state.local.mode.indent)\n return state.local.mode.indent(state.localState, textAfter, line);\n if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n return CodeMirror.Pass;\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"stylus\", function(config) {\n var indentUnit = config.indentUnit,\n indentUnitString = '',\n tagKeywords = keySet(tagKeywords_),\n tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,\n propertyKeywords = keySet(propertyKeywords_),\n nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),\n valueKeywords = keySet(valueKeywords_),\n colorKeywords = keySet(colorKeywords_),\n documentTypes = keySet(documentTypes_),\n documentTypesRegexp = wordRegexp(documentTypes_),\n mediaFeatures = keySet(mediaFeatures_),\n mediaTypes = keySet(mediaTypes_),\n fontProperties = keySet(fontProperties_),\n operatorsRegexp = /^\\s*([.]{2,3}|&&|\\|\\||\\*\\*|[?!=:]?=|[-+*\\/%<>]=?|\\?:|\\~)/,\n wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),\n blockKeywords = keySet(blockKeywords_),\n vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/i),\n commonAtoms = keySet(commonAtoms_),\n firstWordMatch = \"\",\n states = {},\n ch,\n style,\n type,\n override;\n\n while (indentUnitString.length < indentUnit) indentUnitString += ' ';\n\n /**\n * Tokenizers\n */\n function tokenBase(stream, state) {\n firstWordMatch = stream.string.match(/(^[\\w-]+\\s*=\\s*$)|(^\\s*[\\w-]+\\s*=\\s*[\\w-])|(^\\s*(\\.|#|@|\\$|\\&|\\[|\\d|\\+|::?|\\{|\\>|~|\\/)?\\s*[\\w-]*([a-z0-9-]|\\*|\\/\\*)(\\(|,)?)/);\n state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\\s*/, \"\") : \"\";\n state.context.line.indent = stream.indentation();\n ch = stream.peek();\n\n // Line comment\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n }\n // Block comment\n if (stream.match(\"/*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n // String\n if (ch == \"\\\"\" || ch == \"'\") {\n stream.next();\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n // Def\n if (ch == \"@\") {\n stream.next();\n stream.eatWhile(/[\\w\\\\-]/);\n return [\"def\", stream.current()];\n }\n // ID selector or Hex color\n if (ch == \"#\") {\n stream.next();\n // Hex color\n if (stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\\b/i)) {\n return [\"atom\", \"atom\"];\n }\n // ID selector\n if (stream.match(/^[a-z][\\w-]*/i)) {\n return [\"builtin\", \"hash\"];\n }\n }\n // Vendor prefixes\n if (stream.match(vendorPrefixesRegexp)) {\n return [\"meta\", \"vendor-prefixes\"];\n }\n // Numbers\n if (stream.match(/^-?[0-9]?\\.?[0-9]/)) {\n stream.eatWhile(/[a-z%]/i);\n return [\"number\", \"unit\"];\n }\n // !important|optional\n if (ch == \"!\") {\n stream.next();\n return [stream.match(/^(important|optional)/i) ? \"keyword\": \"operator\", \"important\"];\n }\n // Class\n if (ch == \".\" && stream.match(/^\\.[a-z][\\w-]*/i)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // url url-prefix domain regexp\n if (stream.match(documentTypesRegexp)) {\n if (stream.peek() == \"(\") state.tokenize = tokenParenthesized;\n return [\"property\", \"word\"];\n }\n // Mixins / Functions\n if (stream.match(/^[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"mixin\"];\n }\n // Block mixins\n if (stream.match(/^(\\+|-)[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"block-mixin\"];\n }\n // Parent Reference BEM naming\n if (stream.string.match(/^\\s*&/) && stream.match(/^[-_]+[a-z][\\w-]*/)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // / Root Reference & Parent Reference\n if (stream.match(/^(\\/|&)(-|_|:|\\.|#|[a-z])/)) {\n stream.backUp(1);\n return [\"variable-3\", \"reference\"];\n }\n if (stream.match(/^&{1}\\s*$/)) {\n return [\"variable-3\", \"reference\"];\n }\n // Word operator\n if (stream.match(wordOperatorKeywordsRegexp)) {\n return [\"operator\", \"operator\"];\n }\n // Word\n if (stream.match(/^\\$?[-_]*[a-z0-9]+[\\w-]*/i)) {\n // Variable\n if (stream.match(/^(\\.|\\[)[\\w-\\'\\\"\\]]+/i, false)) {\n if (!wordIsTag(stream.current())) {\n stream.match(/\\./);\n return [\"variable-2\", \"variable-name\"];\n }\n }\n return [\"variable-2\", \"word\"];\n }\n // Operators\n if (stream.match(operatorsRegexp)) {\n return [\"operator\", stream.current()];\n }\n // Delimiters\n if (/[:;,{}\\[\\]\\(\\)]/.test(ch)) {\n stream.next();\n return [null, ch];\n }\n // Non-detected items\n stream.next();\n return [null, null];\n }\n\n /**\n * Token comment\n */\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n /**\n * Token string\n */\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return [\"string\", \"string\"];\n };\n }\n\n /**\n * Token parenthesized\n */\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be \"(\"\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return [null, \"(\"];\n }\n\n /**\n * Context management\n */\n function Context(type, indent, prev, line) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n this.line = line || {firstWord: \"\", indent: 0};\n }\n\n function pushContext(state, stream, type, indent) {\n indent = indent >= 0 ? indent : indentUnit;\n state.context = new Context(type, stream.indentation() + indent, state.context);\n return type;\n }\n\n function popContext(state, currentIndent) {\n var contextIndent = state.context.indent - indentUnit;\n currentIndent = currentIndent || false;\n state.context = state.context.prev;\n if (currentIndent) state.context.indent = contextIndent;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n\n /**\n * Parser\n */\n function wordIsTag(word) {\n return word.toLowerCase() in tagKeywords;\n }\n\n function wordIsProperty(word) {\n word = word.toLowerCase();\n return word in propertyKeywords || word in fontProperties;\n }\n\n function wordIsBlock(word) {\n return word.toLowerCase() in blockKeywords;\n }\n\n function wordIsVendorPrefix(word) {\n return word.toLowerCase().match(vendorPrefixesRegexp);\n }\n\n function wordAsValue(word) {\n var wordLC = word.toLowerCase();\n var override = \"variable-2\";\n if (wordIsTag(word)) override = \"tag\";\n else if (wordIsBlock(word)) override = \"block-keyword\";\n else if (wordIsProperty(word)) override = \"property\";\n else if (wordLC in valueKeywords || wordLC in commonAtoms) override = \"atom\";\n else if (wordLC == \"return\" || wordLC in colorKeywords) override = \"keyword\";\n\n // Font family\n else if (word.match(/^[A-Z]/)) override = \"string\";\n return override;\n }\n\n function typeIsBlock(type, stream) {\n return ((endOfLine(stream) && (type == \"{\" || type == \"]\" || type == \"hash\" || type == \"qualifier\")) || type == \"block-mixin\");\n }\n\n function typeIsInterpolation(type, stream) {\n return type == \"{\" && stream.match(/^\\s*\\$?[\\w-]+/i, false);\n }\n\n function typeIsPseudo(type, stream) {\n return type == \":\" && stream.match(/^[a-z-]+/, false);\n }\n\n function startOfLine(stream) {\n return stream.sol() || stream.string.match(new RegExp(\"^\\\\s*\" + escapeRegExp(stream.current())));\n }\n\n function endOfLine(stream) {\n return stream.eol() || stream.match(/^\\s*$/, false);\n }\n\n function firstWordOfLine(line) {\n var re = /^\\s*[-_]*[a-z0-9]+[\\w-]*/i;\n var result = typeof line == \"string\" ? line.match(re) : line.string.match(re);\n return result ? result[0].replace(/^\\s*/, \"\") : \"\";\n }\n\n\n /**\n * Block\n */\n states.block = function(type, stream, state) {\n if ((type == \"comment\" && startOfLine(stream)) ||\n (type == \",\" && endOfLine(stream)) ||\n type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (endOfLine(stream) && type == \"]\") {\n if (!/^\\s*(\\.|#|:|\\[|\\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n }\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"}\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (type == \"variable-name\") {\n if (stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"variableName\");\n }\n else {\n return pushContext(state, stream, \"variableName\", 0);\n }\n }\n if (type == \"=\") {\n if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"*\") {\n if (endOfLine(stream) || stream.match(/\\s*(,|\\.|#|\\[|:|{)/,false)) {\n override = \"tag\";\n return pushContext(state, stream, \"block\");\n }\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (/@extends?/.test(type)) {\n return pushContext(state, stream, \"extend\", 0);\n }\n if (type && type.charAt(0) == \"@\") {\n\n // Property Lookup\n if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n return \"block\";\n }\n if (/(@import|@require|@charset)/.test(type)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"reference\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n\n if (type == \"vendor-prefixes\") {\n return pushContext(state, stream, \"vendorPrefixes\");\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n\n if (override == \"property\") {\n if (startOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n } else {\n override = \"atom\";\n return \"block\";\n }\n }\n\n if (override == \"tag\") {\n\n // tag is a css value\n if (/embed|menu|pre|progress|sub|table/.test(word)) {\n if (wordIsProperty(firstWordOfLine(stream))) {\n override = \"atom\";\n return \"block\";\n }\n }\n\n // tag is an attribute\n if (stream.string.match(new RegExp(\"\\\\[\\\\s*\" + word + \"|\" + word +\"\\\\s*\\\\]\"))) {\n override = \"atom\";\n return \"block\";\n }\n\n // tag is a variable\n if (tagVariablesRegexp.test(word)) {\n if ((startOfLine(stream) && stream.string.match(/=/)) ||\n (!startOfLine(stream) &&\n !stream.string.match(/^(\\s*\\.|#|\\&|\\[|\\/|>|\\*)/) &&\n !wordIsTag(firstWordOfLine(stream)))) {\n override = \"variable-2\";\n if (wordIsBlock(firstWordOfLine(stream))) return \"block\";\n return pushContext(state, stream, \"block\", 0);\n }\n }\n\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n }\n if (override == \"block-keyword\") {\n override = \"keyword\";\n\n // Postfix conditionals\n if (stream.current(/(if|unless)/) && !startOfLine(stream)) {\n return \"block\";\n }\n return pushContext(state, stream, \"block\");\n }\n if (word == \"return\") return pushContext(state, stream, \"block\", 0);\n\n // Placeholder selector\n if (override == \"variable-2\" && stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/)) {\n return pushContext(state, stream, \"block\");\n }\n }\n return state.context.type;\n };\n\n\n /**\n * Parens\n */\n states.parens = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \")\") {\n if (state.context.prev.type == \"parens\") {\n return popContext(state);\n }\n if ((stream.string.match(/^[a-z][\\w-]*\\(/i) && endOfLine(stream)) ||\n wordIsBlock(firstWordOfLine(stream)) ||\n /(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(firstWordOfLine(stream)) ||\n (!stream.string.match(/^-?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) &&\n wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (stream.string.match(/^[\\$-]?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) ||\n stream.string.match(/^\\s*(\\(|\\)|[0-9])/) ||\n stream.string.match(/^\\s+[a-z][\\w-]*\\(/i) ||\n stream.string.match(/^\\s+[\\$-]?[a-z]/i)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"block\", 0);\n }\n if (type && type.charAt(0) == \"@\" && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n if (override == \"tag\" && tagVariablesRegexp.test(word)) {\n override = \"variable-2\";\n }\n if (override == \"property\" || word == \"to\") override = \"atom\";\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\");\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n return state.context.type;\n };\n\n\n /**\n * Vendor prefixes\n */\n states.vendorPrefixes = function(type, stream, state) {\n if (type == \"word\") {\n override = \"property\";\n return pushContext(state, stream, \"block\", 0);\n }\n return popContext(state);\n };\n\n\n /**\n * Pseudo\n */\n states.pseudo = function(type, stream, state) {\n if (!wordIsProperty(firstWordOfLine(stream.string))) {\n stream.match(/^[a-z-]+/);\n override = \"variable-3\";\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n return popContext(state);\n }\n return popAndPass(type, stream, state);\n };\n\n\n /**\n * atBlock\n */\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (/^(only|not|and|or)$/.test(word))\n override = \"keyword\";\n else if (documentTypes.hasOwnProperty(word))\n override = \"tag\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else override = wordAsValue(stream.current());\n if (override == \"tag\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n }\n if (type == \"operator\" && /^(not|and|or)$/.test(stream.current())) {\n override = \"keyword\";\n }\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return state.context.type;\n if (type == \")\") {\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"atBlock\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n override = wordAsValue(word);\n if (/^(max|min)/.test(word)) override = \"property\";\n if (override == \"tag\") {\n tagVariablesRegexp.test(word) ? override = \"variable-2\" : override = \"atom\";\n }\n return state.context.type;\n }\n return states.atBlock(type, stream, state);\n };\n\n\n /**\n * Keyframes\n */\n states.keyframes = function(type, stream, state) {\n if (stream.indentation() == \"0\" && ((type == \"}\" && startOfLine(stream)) || type == \"]\" || type == \"hash\"\n || type == \"qualifier\" || wordIsTag(stream.current()))) {\n return popAndPass(type, stream, state);\n }\n if (type == \"{\") return pushContext(state, stream, \"keyframes\");\n if (type == \"}\") {\n if (startOfLine(stream)) return popContext(state, true);\n else return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"unit\" && /^[0-9]+\\%$/.test(stream.current())) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"block-keyword\") {\n override = \"keyword\";\n return pushContext(state, stream, \"keyframes\");\n }\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n return state.context.type;\n };\n\n\n /**\n * Interpolation\n */\n states.interpolation = function(type, stream, state) {\n if (type == \"{\") popContext(state) && pushContext(state, stream, \"block\");\n if (type == \"}\") {\n if (stream.string.match(/^\\s*(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/i) ||\n (stream.string.match(/^\\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (!stream.string.match(/^(\\{|\\s*\\&)/) ||\n stream.match(/\\s*[\\w-]/,false)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\", 0);\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"tag\") override = \"atom\";\n }\n return state.context.type;\n };\n\n\n /**\n * Extend/s\n */\n states.extend = function(type, stream, state) {\n if (type == \"[\" || type == \"=\") return \"extend\";\n if (type == \"]\") return popContext(state);\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n return \"extend\";\n }\n return popContext(state);\n };\n\n\n /**\n * Variable name\n */\n states.variableName = function(type, stream, state) {\n if (type == \"string\" || type == \"[\" || type == \"]\" || stream.current().match(/^(\\.|\\$)/)) {\n if (stream.current().match(/^\\.[\\w-]+/i)) override = \"variable-2\";\n return \"variableName\";\n }\n return popAndPass(type, stream, state);\n };\n\n\n return {\n startState: function(base) {\n return {\n tokenize: null,\n state: \"block\",\n context: new Context(\"block\", base || 0, null)\n };\n },\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n state.state = states[state.state](type, stream, state);\n return override;\n },\n indent: function(state, textAfter, line) {\n\n var cx = state.context,\n ch = textAfter && textAfter.charAt(0),\n indent = cx.indent,\n lineFirstWord = firstWordOfLine(textAfter),\n lineIndent = line.match(/^\\s*/)[0].replace(/\\t/g, indentUnitString).length,\n prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : \"\",\n prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;\n\n if (cx.prev &&\n (ch == \"}\" && (cx.type == \"block\" || cx.type == \"atBlock\" || cx.type == \"keyframes\") ||\n ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\"))) {\n indent = cx.indent - indentUnit;\n } else if (!(/(\\})/.test(ch))) {\n if (/@|\\$|\\d/.test(ch) ||\n /^\\{/.test(textAfter) ||\n/^\\s*\\/(\\/|\\*)/.test(textAfter) ||\n /^\\s*\\/\\*/.test(prevLineFirstWord) ||\n /^\\s*[\\w-\\.\\[\\]\\'\\\"]+\\s*(\\?|:|\\+)?=/i.test(textAfter) ||\n/^(\\+|-)?[a-z][\\w-]*\\(/i.test(textAfter) ||\n/^return/.test(textAfter) ||\n wordIsBlock(lineFirstWord)) {\n indent = lineIndent;\n } else if (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(ch) || wordIsTag(lineFirstWord)) {\n if (/\\,\\s*$/.test(prevLineFirstWord)) {\n indent = prevLineIndent;\n } else if (/^\\s+/.test(line) && (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n } else if (!/,\\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {\n if (wordIsBlock(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else if (/^\\{/.test(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;\n } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {\n indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;\n } else if (/^(\\.|#|:|\\[|\\*|&|@|\\+|\\-|>|~|\\/)/.test(prevLineFirstWord) ||\n /=\\s*$/.test(prevLineFirstWord) ||\n wordIsTag(prevLineFirstWord) ||\n /^\\$[\\w-\\.\\[\\]\\'\\\"]/.test(prevLineFirstWord)) {\n indent = prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n }\n }\n return indent;\n },\n electricChars: \"}\",\n lineComment: \"//\",\n fold: \"indent\"\n };\n });\n\n // developer.mozilla.org/en-US/docs/Web/HTML/Element\n var tagKeywords_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\", \"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\", \"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\", \"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\", \"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\", \"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\", \"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\", \"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\", \"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\", \"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\", \"u\",\"ul\",\"var\",\"video\"];\n\n // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js\n var documentTypes_ = [\"domain\", \"regexp\", \"url\", \"url-prefix\"];\n var mediaTypes_ = [\"all\",\"aural\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"embossed\"];\n var mediaFeatures_ = [\"width\",\"min-width\",\"max-width\",\"height\",\"min-height\",\"max-height\",\"device-width\",\"min-device-width\",\"max-device-width\",\"device-height\",\"min-device-height\",\"max-device-height\",\"aspect-ratio\",\"min-aspect-ratio\",\"max-aspect-ratio\",\"device-aspect-ratio\",\"min-device-aspect-ratio\",\"max-device-aspect-ratio\",\"color\",\"min-color\",\"max-color\",\"color-index\",\"min-color-index\",\"max-color-index\",\"monochrome\",\"min-monochrome\",\"max-monochrome\",\"resolution\",\"min-resolution\",\"max-resolution\",\"scan\",\"grid\"];\n var propertyKeywords_ = [\"align-content\",\"align-items\",\"align-self\",\"alignment-adjust\",\"alignment-baseline\",\"anchor-point\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"appearance\",\"azimuth\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"baseline-shift\",\"binding\",\"bleed\",\"bookmark-label\",\"bookmark-level\",\"bookmark-state\",\"bookmark-target\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"color\",\"color-profile\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"crop\",\"cue\",\"cue-after\",\"cue-before\",\"cursor\",\"direction\",\"display\",\"dominant-baseline\",\"drop-initial-after-adjust\",\"drop-initial-after-align\",\"drop-initial-before-adjust\",\"drop-initial-before-align\",\"drop-initial-size\",\"drop-initial-value\",\"elevation\",\"empty-cells\",\"fit\",\"fit-position\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"float-offset\",\"flow-from\",\"flow-into\",\"font\",\"font-feature-settings\",\"font-family\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-synthesis\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-variant-position\",\"font-weight\",\"grid\",\"grid-area\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-position\",\"grid-auto-rows\",\"grid-column\",\"grid-column-end\",\"grid-column-start\",\"grid-row\",\"grid-row-end\",\"grid-row-start\",\"grid-template\",\"grid-template-areas\",\"grid-template-columns\",\"grid-template-rows\",\"hanging-punctuation\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"inline-box-align\",\"justify-content\",\"left\",\"letter-spacing\",\"line-break\",\"line-height\",\"line-stacking\",\"line-stacking-ruby\",\"line-stacking-shift\",\"line-stacking-strategy\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marker-offset\",\"marks\",\"marquee-direction\",\"marquee-loop\",\"marquee-play-count\",\"marquee-speed\",\"marquee-style\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"move-to\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-style\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"page-policy\",\"pause\",\"pause-after\",\"pause-before\",\"perspective\",\"perspective-origin\",\"pitch\",\"pitch-range\",\"play-during\",\"position\",\"presentation-level\",\"punctuation-trim\",\"quotes\",\"region-break-after\",\"region-break-before\",\"region-break-inside\",\"region-fragment\",\"rendering-intent\",\"resize\",\"rest\",\"rest-after\",\"rest-before\",\"richness\",\"right\",\"rotation\",\"rotation-point\",\"ruby-align\",\"ruby-overhang\",\"ruby-position\",\"ruby-span\",\"shape-image-threshold\",\"shape-inside\",\"shape-margin\",\"shape-outside\",\"size\",\"speak\",\"speak-as\",\"speak-header\",\"speak-numeral\",\"speak-punctuation\",\"speech-rate\",\"stress\",\"string-set\",\"tab-size\",\"table-layout\",\"target\",\"target-name\",\"target-new\",\"target-position\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-skip\",\"text-decoration-style\",\"text-emphasis\",\"text-emphasis-color\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-height\",\"text-indent\",\"text-justify\",\"text-outline\",\"text-overflow\",\"text-shadow\",\"text-size-adjust\",\"text-space-collapse\",\"text-transform\",\"text-underline-position\",\"text-wrap\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"voice-balance\",\"voice-duration\",\"voice-family\",\"voice-pitch\",\"voice-range\",\"voice-rate\",\"voice-stress\",\"voice-volume\",\"volume\",\"white-space\",\"widows\",\"width\",\"will-change\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\",\"clip-path\",\"clip-rule\",\"mask\",\"enable-background\",\"filter\",\"flood-color\",\"flood-opacity\",\"lighting-color\",\"stop-color\",\"stop-opacity\",\"pointer-events\",\"color-interpolation\",\"color-interpolation-filters\",\"color-rendering\",\"fill\",\"fill-opacity\",\"fill-rule\",\"image-rendering\",\"marker\",\"marker-end\",\"marker-mid\",\"marker-start\",\"shape-rendering\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"text-rendering\",\"baseline-shift\",\"dominant-baseline\",\"glyph-orientation-horizontal\",\"glyph-orientation-vertical\",\"text-anchor\",\"writing-mode\",\"font-smoothing\",\"osx-font-smoothing\"];\n var nonStandardPropertyKeywords_ = [\"scrollbar-arrow-color\",\"scrollbar-base-color\",\"scrollbar-dark-shadow-color\",\"scrollbar-face-color\",\"scrollbar-highlight-color\",\"scrollbar-shadow-color\",\"scrollbar-3d-light-color\",\"scrollbar-track-color\",\"shape-inside\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"zoom\"];\n var fontProperties_ = [\"font-family\",\"src\",\"unicode-range\",\"font-variant\",\"font-feature-settings\",\"font-stretch\",\"font-weight\",\"font-style\"];\n var colorKeywords_ = [\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"rebeccapurple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n var valueKeywords_ = [\"above\",\"absolute\",\"activeborder\",\"additive\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alphabetic\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"attr\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"blink\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"bullets\",\"button\",\"button-bevel\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"calc\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"caption\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-decimal\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"contain\",\"content\",\"contents\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"counter\",\"counters\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"cyclic\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"disclosure-closed\",\"disclosure-open\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ethiopic-numeric\",\"ew-resize\",\"expanded\",\"extends\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"flex\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-flex\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"japanese-formal\",\"japanese-informal\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"korean-hangul-formal\",\"korean-hanja-formal\",\"korean-hanja-informal\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"linear-gradient\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"matrix\",\"matrix3d\",\"media-controls-background\",\"media-current-time-display\",\"media-fullscreen-button\",\"media-mute-button\",\"media-play-button\",\"media-return-to-realtime-button\",\"media-rewind-button\",\"media-seek-back-button\",\"media-seek-forward-button\",\"media-slider\",\"media-sliderthumb\",\"media-time-remaining-display\",\"media-volume-slider\",\"media-volume-slider-container\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menulist-text\",\"menulist-textfield\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"numbers\",\"numeric\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"perspective\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radial-gradient\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"rotate\",\"rotate3d\",\"rotateX\",\"rotateY\",\"rotateZ\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scale\",\"scale3d\",\"scaleX\",\"scaleY\",\"scaleZ\",\"scroll\",\"scrollbar\",\"scroll-position\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"simp-chinese-formal\",\"simp-chinese-informal\",\"single\",\"skew\",\"skewX\",\"skewY\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"spell-out\",\"square\",\"square-button\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"symbolic\",\"symbols\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"tamil\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textarea\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"trad-chinese-formal\",\"trad-chinese-informal\",\"translate\",\"translate3d\",\"translateX\",\"translateY\",\"translateZ\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"var\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"words\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\",\"row\",\"row-reverse\",\"wrap\",\"wrap-reverse\",\"column-reverse\",\"flex-start\",\"flex-end\",\"space-between\",\"space-around\", \"unset\"];\n\n var wordOperatorKeywords_ = [\"in\",\"and\",\"or\",\"not\",\"is not\",\"is a\",\"is\",\"isnt\",\"defined\",\"if unless\"],\n blockKeywords_ = [\"for\",\"if\",\"else\",\"unless\", \"from\", \"to\"],\n commonAtoms_ = [\"null\",\"true\",\"false\",\"href\",\"title\",\"type\",\"not-allowed\",\"readonly\",\"disabled\"],\n commonDef_ = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"];\n\n var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,\n propertyKeywords_,nonStandardPropertyKeywords_,\n colorKeywords_,valueKeywords_,fontProperties_,\n wordOperatorKeywords_,blockKeywords_,\n commonAtoms_,commonDef_);\n\n function wordRegexp(words) {\n words = words.sort(function(a,b){return b > a;});\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) keys[array[i]] = true;\n return keys;\n }\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/.test(stream.current().toLowerCase())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = \"string-2\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backface-visibility\",\n \"background\", \"background-attachment\", \"background-blend-mode\", \"background-clip\",\n \"background-color\", \"background-image\", \"background-origin\", \"background-position\",\n \"background-repeat\", \"background-size\", \"baseline-shift\", \"binding\",\n \"bleed\", \"bookmark-label\", \"bookmark-level\", \"bookmark-state\",\n \"bookmark-target\", \"border\", \"border-bottom\", \"border-bottom-color\",\n \"border-bottom-left-radius\", \"border-bottom-right-radius\",\n \"border-bottom-style\", \"border-bottom-width\", \"border-collapse\",\n \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\",\n \"border-left-style\", \"border-left-width\", \"border-radius\", \"border-right\",\n \"border-right-color\", \"border-right-style\", \"border-right-width\",\n \"border-spacing\", \"border-style\", \"border-top\", \"border-top-color\",\n \"border-top-left-radius\", \"border-top-right-radius\", \"border-top-style\",\n \"border-top-width\", \"border-width\", \"bottom\", \"box-decoration-break\",\n \"box-shadow\", \"box-sizing\", \"break-after\", \"break-before\", \"break-inside\",\n \"caption-side\", \"caret-color\", \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\",\n \"column-fill\", \"column-gap\", \"column-rule\", \"column-rule-color\",\n \"column-rule-style\", \"column-rule-width\", \"column-span\", \"column-width\",\n \"columns\", \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\",\n \"cue-after\", \"cue-before\", \"cursor\", \"direction\", \"display\",\n \"dominant-baseline\", \"drop-initial-after-adjust\",\n \"drop-initial-after-align\", \"drop-initial-before-adjust\",\n \"drop-initial-before-align\", \"drop-initial-size\", \"drop-initial-value\",\n \"elevation\", \"empty-cells\", \"fit\", \"fit-position\", \"flex\", \"flex-basis\",\n \"flex-direction\", \"flex-flow\", \"flex-grow\", \"flex-shrink\", \"flex-wrap\",\n \"float\", \"float-offset\", \"flow-from\", \"flow-into\", \"font\", \"font-feature-settings\",\n \"font-family\", \"font-kerning\", \"font-language-override\", \"font-size\", \"font-size-adjust\",\n \"font-stretch\", \"font-style\", \"font-synthesis\", \"font-variant\",\n \"font-variant-alternates\", \"font-variant-caps\", \"font-variant-east-asian\",\n \"font-variant-ligatures\", \"font-variant-numeric\", \"font-variant-position\",\n \"font-weight\", \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\",\n \"grid-auto-rows\", \"grid-column\", \"grid-column-end\", \"grid-column-gap\",\n \"grid-column-start\", \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\",\n \"grid-row-start\", \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\",\n \"icon\", \"image-orientation\", \"image-rendering\", \"image-resolution\",\n \"inline-box-align\", \"justify-content\", \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\",\n \"line-break\", \"line-height\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\",\n \"marks\", \"marquee-direction\", \"marquee-loop\",\n \"marquee-play-count\", \"marquee-speed\", \"marquee-style\", \"max-height\",\n \"max-width\", \"min-height\", \"min-width\", \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\",\n \"nav-left\", \"nav-right\", \"nav-up\", \"object-fit\", \"object-position\",\n \"opacity\", \"order\", \"orphans\", \"outline\",\n \"outline-color\", \"outline-offset\", \"outline-style\", \"outline-width\",\n \"overflow\", \"overflow-style\", \"overflow-wrap\", \"overflow-x\", \"overflow-y\",\n \"padding\", \"padding-bottom\", \"padding-left\", \"padding-right\", \"padding-top\",\n \"page\", \"page-break-after\", \"page-break-before\", \"page-break-inside\",\n \"page-policy\", \"pause\", \"pause-after\", \"pause-before\", \"perspective\",\n \"perspective-origin\", \"pitch\", \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\", \"position\",\n \"presentation-level\", \"punctuation-trim\", \"quotes\", \"region-break-after\",\n \"region-break-before\", \"region-break-inside\", \"region-fragment\",\n \"rendering-intent\", \"resize\", \"rest\", \"rest-after\", \"rest-before\", \"richness\",\n \"right\", \"rotation\", \"rotation-point\", \"ruby-align\", \"ruby-overhang\",\n \"ruby-position\", \"ruby-span\", \"shape-image-threshold\", \"shape-inside\", \"shape-margin\",\n \"shape-outside\", \"size\", \"speak\", \"speak-as\", \"speak-header\",\n \"speak-numeral\", \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\",\n \"tab-size\", \"table-layout\", \"target\", \"target-name\", \"target-new\",\n \"target-position\", \"text-align\", \"text-align-last\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-style\", \"text-emphasis\", \"text-emphasis-color\",\n \"text-emphasis-position\", \"text-emphasis-style\", \"text-height\",\n \"text-indent\", \"text-justify\", \"text-outline\", \"text-overflow\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\", \"text-underline-position\",\n \"text-wrap\", \"top\", \"transform\", \"transform-origin\", \"transform-style\",\n \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"unicode-bidi\",\n \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\", \"voice-duration\",\n \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\", \"voice-stress\",\n \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\", \"will-change\", \"word-break\",\n \"word-spacing\", \"word-wrap\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\"\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-3d-light-color\", \"scrollbar-track-color\", \"shape-inside\",\n \"searchfield-cancel-button\", \"searchfield-decoration\", \"searchfield-results-button\",\n \"searchfield-results-decoration\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-family\", \"src\", \"unicode-range\", \"font-variant\", \"font-feature-settings\",\n \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"sub\",\n \"subpixel-antialiased\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./input.vue?vue&type=style&index=0&id=657450cc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./input.vue?vue&type=style&index=0&id=657450cc&lang=scss&scoped=true&\"","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// A rough approximation of Sublime Text's keybindings\n// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/edit/matchbrackets\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/edit/matchbrackets\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\", type, startPos = start.ch;\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n if (state == \"start\") {\n if (cat != \"o\") { state = \"in\"; type = cat; }\n else startPos = pos + dir\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n if (type == \"W\" && cat == \"w\" && dir > 0) { // From uppercase to lowercase\n if (pos == startPos + 1) { type = \"w\"; continue; }\n else pos--;\n }\n break;\n }\n }\n }\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function(range) {\n if (cm.display.shift || cm.doc.extend || range.empty())\n return findPosSubword(cm.doc, range.head, dir);\n else\n return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };\n cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };\n\n cmds.scrollLineUp = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine)\n cm.execCommand(\"goLineUp\");\n }\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n cmds.scrollLineDown = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\")+1;\n if (cm.getCursor().line <= visibleTopLine)\n cm.execCommand(\"goLineDown\");\n }\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function(cm) {\n var ranges = cm.listSelections(), lineRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n for (var line = from.line; line <= to.line; ++line)\n if (!(to.line > from.line && line == to.line && to.ch == 0))\n lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)});\n }\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function(cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {scroll: false});\n };\n\n cmds.selectLine = function(cm) {\n var ranges = cm.listSelections(), extended = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)});\n }\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n cm.operation(function() {\n var len = cm.listSelections().length, newSelection = [], last = -1;\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({head: at, anchor: at});\n last = head.line + 1;\n }\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };\n\n cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };\n\n function wordAt(cm, pos) {\n var start = pos.ch, end = start, line = cm.getLine(pos.line);\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)};\n }\n\n cmds.selectNextOccurrence = function(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return\n cm.addSelection(cur.from(), cur.to());\n }\n if (fullWord)\n cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function(cm) {\n var prevAnchor = cm.getCursor(\"anchor\"), prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections()\n .filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n }\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(), newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(\n range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(\n range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ?\n range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ?\n range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {anchor: newAnchor, head: newHead};\n newRanges.push(range);\n newRanges.push(newRange);\n }\n cm.setSelections(newRanges);\n }\n cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1); };\n cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++)\n if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&\n CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true\n return false\n }\n\n var mirror = \"(){}[]\";\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(), newRanges = []\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&\n CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({anchor: startPos, head: closing.pos});\n break;\n }\n }\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function(cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n cmds.selectBetweenBrackets = function(cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined\n }\n\n cmds.goToBracket = function(cm) {\n cm.extendSelectionsBy(function(range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from().line - 1, to = range.to().line;\n newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)});\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine())\n cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n else\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i], from = range.to().line + 1, to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine())\n cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n else\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function(cm) {\n cm.toggleComment({ indent: true });\n }\n\n cmds.joinLines = function(cm) {\n var ranges = cm.listSelections(), joined = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from();\n var start = from.line, end = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end)\n end = ranges[++i].to().line;\n joined.push({start: start, end: end, anchor: !range.empty() && from});\n }\n cm.operation(function() {\n var offset = 0, ranges = [];\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head;\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n ranges.push({anchor: anchor || head, head: head});\n }\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function(cm) {\n cm.operation(function() {\n var rangeCount = cm.listSelections().length;\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty())\n cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n else\n cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n cm.scrollIntoView();\n });\n };\n\n\n function sortLines(cm, caseSensitive) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), toSort = [], selected;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line, to = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to)\n to = ranges[++i].to().line;\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n if (toSort.length) selected = true;\n else toSort.push(cm.firstLine(), cm.lastLine());\n\n cm.operation(function() {\n var ranges = [];\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i], to = toSort[i + 1];\n var start = Pos(from, 0), end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive)\n lines.sort();\n else\n lines.sort(function(a, b) {\n var au = a.toUpperCase(), bu = b.toUpperCase();\n if (au != bu) { a = au; b = bu; }\n return a < b ? -1 : a == b ? 0 : 1;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});\n }\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function(cm) { sortLines(cm, true); };\n cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false); };\n\n cmds.nextBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found)\n marks.pop();\n else\n return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function(cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n for (var k = 0; k < marks.length; k++)\n if (marks[k] == found[j])\n marks.splice(k--, 1);\n break;\n }\n }\n if (j == found.length)\n marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false}));\n }\n };\n\n cmds.clearBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks, ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found)\n marks.splice(i--, 0);\n else\n ranges.push({anchor: found.from, head: found.to});\n }\n if (ranges.length)\n cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function() {\n var ranges = cm.listSelections(), indices = [], replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) { indices.push(i); replacements.push(\"\"); }\n else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n cm.replaceSelections(replacements, \"around\", \"case\");\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function(cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n\n cm.operation(function() {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n\n // Delete by one character by default\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line,\n CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n\n // Smart delete only if we found a valid prevIndent location\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function(cm) {\n cm.operation(function() {\n var ranges = cm.listSelections();\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });\n };\n cmds.downcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });\n };\n\n cmds.setSublimeMark = function(cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n cmds.selectToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n cmds.deleteToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n var from = cm.getCursor(), to = found;\n if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; }\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n cmds.swapWithSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n cmds.sublimeYank = function(cm) {\n if (cm.state.sublimeKilled != null)\n cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function(cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n return {from: from, to: to, query: cm.getRange(from, to), word: word};\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)\n : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious())\n cm.setSelection(cur.from(), cur.to());\n else if (target.word)\n cm.setSelection(target.from, target.to);\n }\n };\n cmds.findUnder = function(cm) { findAndGoTo(cm, true); };\n cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };\n cmds.findAllUnder = function(cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n while (cur.findNext()) {\n matches.push({anchor: cur.from(), head: cur.to()});\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch)\n primaryIndex++;\n }\n cm.setSelections(matches, primaryIndex);\n };\n\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n this.cm.off(\"cursorActivity\", this.activityFunc);\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i];\n if (completion.hint) completion.hint(this.cm, data, completion);\n else this.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n this.close();\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n var scrolls = hints.scrollHeight > hints.clientHeight + 1\n var startScroll = cm.getScrollInfo();\n\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n this.scrollToActive()\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var node = this.hints.childNodes[this.selectedHint]\n if (node.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node.offsetTop - 3;\n else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnUnfocus: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n \"is\", \"isnt\", \"in\",\n \"instanceof\", \"typeof\"]);\n var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n indentKeywords = wordRegexp(indentKeywords);\n\n\n var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n var regexPrefixes = /^(\\/{3}|\\/)/;\n var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var constants = wordRegexp(commonConstants);\n\n // Tokenizers\n function tokenBase(stream, state) {\n // Handle scope changes\n if (stream.sol()) {\n if (state.scope.align === null) state.scope.align = false;\n var scopeOffset = state.scope.offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n return \"indent\";\n } else if (lineOffset < scopeOffset) {\n return \"dedent\";\n }\n return null;\n } else {\n if (scopeOffset > 0) {\n dedent(stream, state);\n }\n }\n }\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.peek();\n\n // Handle docco title comment (single line)\n if (stream.match(\"####\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle multi line comments\n if (stream.match(\"###\")) {\n state.tokenize = longComment;\n return state.tokenize(stream, state);\n }\n\n // Single line comment\n if (ch === \"#\") {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle number literals\n if (stream.match(/^-?[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\d+\\.\\d*/)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\.\\d+/)) {\n floatLiteral = true;\n }\n\n if (floatLiteral) {\n // prevent from getting extra . on 1..\n if (stream.peek() == \".\"){\n stream.backUp(1);\n }\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^-?0x[0-9a-f]+/i)) {\n intLiteral = true;\n }\n // Decimal\n if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^-?0(?![\\dx])/i)) {\n intLiteral = true;\n }\n if (intLiteral) {\n return \"number\";\n }\n }\n\n // Handle strings\n if (stream.match(stringPrefixes)) {\n state.tokenize = tokenFactory(stream.current(), false, \"string\");\n return state.tokenize(stream, state);\n }\n // Handle regex literals\n if (stream.match(regexPrefixes)) {\n if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n return state.tokenize(stream, state);\n } else {\n stream.backUp(1);\n }\n }\n\n\n\n // Handle operators and delimiters\n if (stream.match(operators) || stream.match(wordOperators)) {\n return \"operator\";\n }\n if (stream.match(delimiters)) {\n return \"punctuation\";\n }\n\n if (stream.match(constants)) {\n return \"atom\";\n }\n\n if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n return \"property\";\n }\n\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n\n if (stream.match(identifiers)) {\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function tokenFactory(delimiter, singleline, outclass) {\n return function(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\/\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol()) {\n return outclass;\n }\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenBase;\n return outclass;\n } else {\n stream.eat(/['\"\\/]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors) {\n outclass = ERRORCLASS;\n } else {\n state.tokenize = tokenBase;\n }\n }\n return outclass;\n };\n }\n\n function longComment(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^#]/);\n if (stream.match(\"###\")) {\n state.tokenize = tokenBase;\n break;\n }\n stream.eatWhile(\"#\");\n }\n return \"comment\";\n }\n\n function indent(stream, state, type) {\n type = type || \"coffee\";\n var offset = 0, align = false, alignOffset = null;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (scope.type === \"coffee\" || scope.type == \"}\") {\n offset = scope.offset + conf.indentUnit;\n break;\n }\n }\n if (type !== \"coffee\") {\n align = null;\n alignOffset = stream.column() + stream.current().length;\n } else if (state.scope.align) {\n state.scope.align = false;\n }\n state.scope = {\n offset: offset,\n type: type,\n prev: state.scope,\n align: align,\n alignOffset: alignOffset\n };\n }\n\n function dedent(stream, state) {\n if (!state.scope.prev) return;\n if (state.scope.type === \"coffee\") {\n var _indent = stream.indentation();\n var matched = false;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (_indent === scope.offset) {\n matched = true;\n break;\n }\n }\n if (!matched) {\n return true;\n }\n while (state.scope.prev && state.scope.offset !== _indent) {\n state.scope = state.scope.prev;\n }\n return false;\n } else {\n state.scope = state.scope.prev;\n return false;\n }\n }\n\n function tokenLexer(stream, state) {\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle scope changes.\n if (current === \"return\") {\n state.dedent = true;\n }\n if (((current === \"->\" || current === \"=>\") && stream.eol())\n || style === \"indent\") {\n indent(stream, state);\n }\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index !== -1) {\n indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n }\n if (indentKeywords.exec(current)){\n indent(stream, state);\n }\n if (current == \"then\"){\n dedent(stream, state);\n }\n\n\n if (style === \"dedent\") {\n if (dedent(stream, state)) {\n return ERRORCLASS;\n }\n }\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index !== -1) {\n while (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n if (state.scope.type == current)\n state.scope = state.scope.prev;\n }\n if (state.dedent && stream.eol()) {\n if (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n state.dedent = false;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n prop: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var fillAlign = state.scope.align === null && state.scope;\n if (fillAlign && stream.sol()) fillAlign.align = false;\n\n var style = tokenLexer(stream, state);\n if (style && style != \"comment\") {\n if (fillAlign) fillAlign.align = true;\n state.prop = style == \"punctuation\" && stream.current() == \".\"\n }\n\n return style;\n },\n\n indent: function(state, text) {\n if (state.tokenize != tokenBase) return 0;\n var scope = state.scope;\n var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n var closes = closer && scope.type === text.charAt(0);\n if (scope.align)\n return scope.alignOffset - (closes ? 1 : 0);\n else\n return (closes ? scope.prev : scope).offset;\n },\n\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var result = this.matches(reverse, this.doc.clipPos(reverse ? this.pos.from : this.pos.to))\n\n // Implements weird auto-growing behavior on null-matches for\n // backwards-compatiblity with the vim code (unfortunately)\n while (result && CodeMirror.cmpPos(result.from, result.to) == 0) {\n if (reverse) {\n if (result.from.ch) result.from = Pos(result.from.line, result.from.ch - 1)\n else if (result.from.line == this.doc.firstLine()) result = null\n else result = this.matches(reverse, this.doc.clipPos(Pos(result.from.line - 1)))\n } else {\n if (result.to.ch < this.doc.getLine(result.to.line).length) result.to = Pos(result.to.line, result.to.ch + 1)\n else if (result.to.line == this.doc.lastLine()) result = null\n else result = this.matches(reverse, Pos(result.to.line + 1, 0))\n }\n }\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName;\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(tagName)) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n if (tagAfter && tagAfter[1]) { // Closing tag spotted\n while (context) {\n if (context.tagName == tagAfter[2]) {\n context = context.prev;\n break;\n } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {\n context = context.prev;\n } else {\n break;\n }\n }\n } else if (tagAfter) { // Opening tag spotted\n while (context) {\n var grabbers = config.contextGrabbers[context.tagName];\n if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n context = context.prev;\n else\n break;\n }\n }\n while (context && context.prev && !context.startOfLine)\n context = context.prev;\n if (context) return context.indent + indentUnit;\n else return state.baseIndent || 0;\n },\n\n electricInput: /<\\/[\\s\\w:]+>$/,\n blockCommentStart: \"<!--\",\n blockCommentEnd: \"-->\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n if (cx.tagName) context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\s*\" + tagName + \"\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"interface-code codemirror-custom-styles\"},[_c('codemirror',{ref:\"codemirrorEl\",attrs:{\"options\":_vm.altOptions ? _vm.altOptions : _vm.cmOptions,\"value\":_vm.stringValue},on:{\"input\":_vm.onInput}}),(_vm.options.template)?_c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.$t('interfaces.code.fill_template')),expression:\"$t('interfaces.code.fill_template')\"}],on:{\"click\":_vm.fillTemplate}},[_c('v-icon',{attrs:{\"name\":\"playlist_add\"}})],1):_vm._e(),(_vm.language)?_c('small',{staticClass:\"line-count type-note\"},[_vm._v(\" \"+_vm._s(_vm.$tc('interfaces.code.loc', _vm.lineCount, { count: _vm.lineCount, lang: _vm.language }))+\" \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"interface-code codemirror-custom-styles\">\n\t\t<codemirror\n\t\t\tref=\"codemirrorEl\"\n\t\t\t:options=\"altOptions ? altOptions : cmOptions\"\n\t\t\t:value=\"stringValue\"\n\t\t\t@input=\"onInput\"\n\t\t></codemirror>\n\n\t\t<button\n\t\t\tv-if=\"options.template\"\n\t\t\tv-tooltip=\"$t('interfaces.code.fill_template')\"\n\t\t\t@click=\"fillTemplate\"\n\t\t>\n\t\t\t<v-icon name=\"playlist_add\" />\n\t\t</button>\n\n\t\t<small v-if=\"language\" class=\"line-count type-note\">\n\t\t\t{{\n\t\t\t\t$tc('interfaces.code.loc', lineCount, {\n\t\t\t\t\tcount: lineCount,\n\t\t\t\t\tlang: language\n\t\t\t\t})\n\t\t\t}}\n\t\t</small>\n\t</div>\n</template>\n\n<script>\nimport { codemirror } from 'vue-codemirror';\n\nimport 'codemirror/lib/codemirror.css';\n\nimport 'codemirror/mode/vue/vue.js';\nimport 'codemirror/mode/javascript/javascript.js';\nimport 'codemirror/mode/php/php.js';\n\nimport 'codemirror/addon/selection/active-line.js';\nimport 'codemirror/addon/selection/mark-selection.js';\nimport 'codemirror/addon/search/searchcursor.js';\nimport 'codemirror/addon/hint/show-hint.js';\nimport 'codemirror/addon/hint/show-hint.css';\nimport 'codemirror/addon/hint/javascript-hint.js';\nimport 'codemirror/addon/selection/active-line.js';\nimport 'codemirror/addon/scroll/annotatescrollbar.js';\nimport 'codemirror/addon/search/matchesonscrollbar.js';\nimport 'codemirror/addon/search/searchcursor.js';\nimport 'codemirror/addon/search/match-highlighter.js';\nimport 'codemirror/addon/edit/matchbrackets.js';\nimport 'codemirror/addon/comment/comment.js';\nimport 'codemirror/addon/dialog/dialog.js';\nimport 'codemirror/addon/dialog/dialog.css';\nimport 'codemirror/addon/search/searchcursor.js';\nimport 'codemirror/addon/search/search.js';\n\nimport 'codemirror/addon/display/autorefresh.js';\n\nimport 'codemirror/keymap/sublime.js';\n\nimport mixin from '@directus/extension-toolkit/mixins/interface';\n\nimport { isObject, isArray } from 'lodash';\n\nexport default {\n\tname: 'InterfaceCode',\n\tcomponents: {\n\t\tcodemirror\n\t},\n\tmixins: [mixin],\n\tprops: {\n\t\taltOptions: {\n\t\t\ttype: Object\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlineCount: 0,\n\n\t\t\tdefaultOptions: {\n\t\t\t\ttabSize: 4,\n\t\t\t\tautoRefresh: true,\n\t\t\t\tindentUnit: 4,\n\t\t\t\tstyleActiveLine: true,\n\t\t\t\tstyleSelectedText: true,\n\t\t\t\tline: true,\n\t\t\t\thighlightSelectionMatches: { showToken: /\\w/, annotateScrollbar: true },\n\t\t\t\thintOptions: {\n\t\t\t\t\tcompleteSingle: true\n\t\t\t\t},\n\t\t\t\tmatchBrackets: true,\n\t\t\t\tshowCursorWhenSelecting: true,\n\t\t\t\ttheme: 'default',\n\t\t\t\textraKeys: { Ctrl: 'autocomplete' }\n\t\t\t}\n\t\t};\n\t},\n\tcomputed: {\n\t\tavailableTypes() {\n\t\t\treturn {\n\t\t\t\t'text/plain': 'Plain Text',\n\t\t\t\t'text/javascript': 'JavaScript',\n\t\t\t\t'application/json': 'JSON',\n\t\t\t\t'text/x-vue': 'Vue',\n\t\t\t\t'application/x-httpd-php': 'PHP'\n\t\t\t};\n\t\t},\n\t\tlanguage() {\n\t\t\treturn this.availableTypes[this.options.language];\n\t\t},\n\t\tstringValue() {\n\t\t\tif (this.value == null) return null;\n\n\t\t\tif (typeof this.value === 'object') {\n\t\t\t\treturn JSON.stringify(this.value, null, 4);\n\t\t\t}\n\n\t\t\treturn this.value;\n\t\t},\n\t\tmode() {\n\t\t\t// There is no dedicated mode for JSON in codemirror. Switch to JS mode when JSON is selected\n\t\t\treturn this.options.language === 'application/json'\n\t\t\t\t? 'text/javascript'\n\t\t\t\t: this.options.language;\n\t\t},\n\t\tcmOptions() {\n\t\t\treturn Object.assign({}, this.defaultOptions, {\n\t\t\t\tlineNumbers: this.options.lineNumber,\n\t\t\t\treadOnly: this.readonly ? 'nocursor' : false,\n\t\t\t\tmode: this.mode\n\t\t\t});\n\t\t}\n\t},\n\tmounted() {\n\t\tconst { codemirror } = this.$refs.codemirrorEl;\n\t\tthis.lineCount = codemirror.lineCount();\n\t},\n\tmethods: {\n\t\tonInput(value) {\n\t\t\tconst { codemirror } = this.$refs.codemirrorEl;\n\n\t\t\tif (this.lineCount !== codemirror.lineCount()) {\n\t\t\t\tthis.lineCount = codemirror.lineCount();\n\t\t\t}\n\n\t\t\tif (this.options.language === 'application/json') {\n\t\t\t\ttry {\n\t\t\t\t\tthis.$emit('input', JSON.parse(value));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// silently ignore saving value if it's not valid json\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.$emit('input', value);\n\t\t\t}\n\t\t},\n\t\tfillTemplate() {\n\t\t\tif (isObject(this.options.template) || isArray(this.options.template)) {\n\t\t\t\treturn this.$emit('input', JSON.stringify(this.options.template, null, 4));\n\t\t\t}\n\n\t\t\tif (this.options.language === 'application/json') {\n\t\t\t\ttry {\n\t\t\t\t\tthis.$emit('input', JSON.parse(this.options.template));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// silently ignore saving value if it's not valid json\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.$emit('input', this.options.template);\n\t\t\t}\n\t\t}\n\t}\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.interface-code {\n\tposition: relative;\n\twidth: 100%;\n\tmax-width: var(--width-x-large);\n\t// border: var(--input-border-width) solid var(--input-border-color);\n\t// border-radius: var(--border-radius);\n\tfont-size: var(--input-font-size);\n\n\t&:focus {\n\t\tborder-color: var(--blue-grey-800);\n\t}\n}\n\nsmall {\n\tposition: absolute;\n\tright: 0;\n\tbottom: -20px;\n\tfont-style: italic;\n\ttext-align: right;\n}\n\nbutton {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tuser-select: none;\n\tcolor: var(--blue-grey-300);\n\tcursor: pointer;\n\ttransition: color var(--fast) var(--transition-out);\n\tz-index: 10;\n\n\t&:hover {\n\t\ttransition: none;\n\t\tcolor: var(--blue-grey-600);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./input.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./input.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./input.vue?vue&type=template&id=657450cc&scoped=true&\"\nimport script from \"./input.vue?vue&type=script&lang=js&\"\nexport * from \"./input.vue?vue&type=script&lang=js&\"\nimport style0 from \"./input.vue?vue&type=style&index=0&id=657450cc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"657450cc\",\n null\n \n)\n\nexport default component.exports","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/simple\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/simple\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode(\"handlebars-tags\", {\n start: [\n { regex: /\\{\\{\\{/, push: \"handlebars_raw\", token: \"tag\" },\n { regex: /\\{\\{!--/, push: \"dash_comment\", token: \"comment\" },\n { regex: /\\{\\{!/, push: \"comment\", token: \"comment\" },\n { regex: /\\{\\{/, push: \"handlebars\", token: \"tag\" }\n ],\n handlebars_raw: [\n { regex: /\\}\\}\\}/, pop: true, token: \"tag\" },\n ],\n handlebars: [\n { regex: /\\}\\}/, pop: true, token: \"tag\" },\n\n // Double and single quotes\n { regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/, token: \"string\" },\n { regex: /'(?:[^\\\\']|\\\\.)*'?/, token: \"string\" },\n\n // Handlebars keywords\n { regex: />|[#\\/]([A-Za-z_]\\w*)/, token: \"keyword\" },\n { regex: /(?:else|this)\\b/, token: \"keyword\" },\n\n // Numeral\n { regex: /\\d+/i, token: \"number\" },\n\n // Atoms like = and .\n { regex: /=|~|@|true|false/, token: \"atom\" },\n\n // Paths\n { regex: /(?:\\.\\.\\/)*(?:[A-Za-z_][\\w\\.]*)+/, token: \"variable-2\" }\n ],\n dash_comment: [\n { regex: /--\\}\\}/, pop: true, token: \"comment\" },\n\n // Commented code\n { regex: /./, token: \"comment\"}\n ],\n comment: [\n { regex: /\\}\\}/, pop: true, token: \"comment\" },\n { regex: /./, token: \"comment\" }\n ],\n meta: {\n blockCommentStart: \"{{--\",\n blockCommentEnd: \"--}}\"\n }\n });\n\n CodeMirror.defineMode(\"handlebars\", function(config, parserConfig) {\n var handlebars = CodeMirror.getMode(config, \"handlebars-tags\");\n if (!parserConfig || !parserConfig.base) return handlebars;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base),\n {open: \"{{\", close: /\\}\\}\\}?/, mode: handlebars, parseDelimiters: true}\n );\n });\n\n CodeMirror.defineMIME(\"text/x-handlebars-template\", \"handlebars\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.multiplexingMode = function(outer /*, others */) {\n // Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects\n var others = Array.prototype.slice.call(arguments, 1);\n\n function indexOf(string, pattern, from, returnEnd) {\n if (typeof pattern == \"string\") {\n var found = string.indexOf(pattern, from);\n return returnEnd && found > -1 ? found + pattern.length : found;\n }\n var m = pattern.exec(from ? string.slice(from) : string);\n return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;\n }\n\n return {\n startState: function() {\n return {\n outer: CodeMirror.startState(outer),\n innerActive: null,\n inner: null\n };\n },\n\n copyState: function(state) {\n return {\n outer: CodeMirror.copyState(outer, state.outer),\n innerActive: state.innerActive,\n inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner)\n };\n },\n\n token: function(stream, state) {\n if (!state.innerActive) {\n var cutOff = Infinity, oldContent = stream.string;\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n var found = indexOf(oldContent, other.open, stream.pos);\n if (found == stream.pos) {\n if (!other.parseDelimiters) stream.match(other.open);\n state.innerActive = other;\n\n // Get the outer indent, making sure to handle CodeMirror.Pass\n var outerIndent = 0;\n if (outer.indent) {\n var possibleOuterIndent = outer.indent(state.outer, \"\", \"\");\n if (possibleOuterIndent !== CodeMirror.Pass) outerIndent = possibleOuterIndent;\n }\n\n state.inner = CodeMirror.startState(other.mode, outerIndent);\n return other.delimStyle && (other.delimStyle + \" \" + other.delimStyle + \"-open\");\n } else if (found != -1 && found < cutOff) {\n cutOff = found;\n }\n }\n if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff);\n var outerToken = outer.token(stream, state.outer);\n if (cutOff != Infinity) stream.string = oldContent;\n return outerToken;\n } else {\n var curInner = state.innerActive, oldContent = stream.string;\n if (!curInner.close && stream.sol()) {\n state.innerActive = state.inner = null;\n return this.token(stream, state);\n }\n var found = curInner.close ? indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1;\n if (found == stream.pos && !curInner.parseDelimiters) {\n stream.match(curInner.close);\n state.innerActive = state.inner = null;\n return curInner.delimStyle && (curInner.delimStyle + \" \" + curInner.delimStyle + \"-close\");\n }\n if (found > -1) stream.string = oldContent.slice(0, found);\n var innerToken = curInner.mode.token(stream, state.inner);\n if (found > -1) stream.string = oldContent;\n\n if (found == stream.pos && curInner.parseDelimiters)\n state.innerActive = state.inner = null;\n\n if (curInner.innerStyle) {\n if (innerToken) innerToken = innerToken + \" \" + curInner.innerStyle;\n else innerToken = curInner.innerStyle;\n }\n\n return innerToken;\n }\n },\n\n indent: function(state, textAfter, line) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (!mode.indent) return CodeMirror.Pass;\n return mode.indent(state.innerActive ? state.inner : state.outer, textAfter, line);\n },\n\n blankLine: function(state) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (mode.blankLine) {\n mode.blankLine(state.innerActive ? state.inner : state.outer);\n }\n if (!state.innerActive) {\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n if (other.open === \"\\n\") {\n state.innerActive = other;\n state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, \"\", \"\") : 0);\n }\n }\n } else if (state.innerActive.close === \"\\n\") {\n state.innerActive = state.inner = null;\n }\n },\n\n electricChars: outer.electricChars,\n\n innerMode: function(state) {\n return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer};\n }\n };\n};\n\n});\n"],"sourceRoot":""}