corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) {
2 "use strict";
3  
4 var oop = require("../lib/oop");
5 var lang = require("../lib/lang");
6 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
7 var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|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-shadow|box-sizing|caption-side|clear|clip|color|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|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";
8 var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
9 var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero";
10 var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow";
11 var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace";
12  
13 var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
14 var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
15 var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
16  
17 var CssHighlightRules = function() {
18  
19 var keywordMapper = this.createKeywordMapper({
20 "support.function": supportFunction,
21 "support.constant": supportConstant,
22 "support.type": supportType,
23 "support.constant.color": supportConstantColor,
24 "support.constant.fonts": supportConstantFonts
25 }, "text", true);
26  
27 this.$rules = {
28 "start" : [{
29 token : "comment", // multi line comment
30 regex : "\\/\\*",
31 push : "comment"
32 }, {
33 token: "paren.lparen",
34 regex: "\\{",
35 push: "ruleset"
36 }, {
37 token: "string",
38 regex: "@.*?{",
39 push: "media"
40 }, {
41 token: "keyword",
42 regex: "#[a-z0-9-_]+"
43 }, {
44 token: "variable",
45 regex: "\\.[a-z0-9-_]+"
46 }, {
47 token: "string",
48 regex: ":[a-z0-9-_]+"
49 }, {
50 token: "constant",
51 regex: "[a-z0-9-_]+"
52 }, {
53 caseInsensitive: true
54 }],
55  
56 "media" : [{
57 token : "comment", // multi line comment
58 regex : "\\/\\*",
59 push : "comment"
60 }, {
61 token: "paren.lparen",
62 regex: "\\{",
63 push: "ruleset"
64 }, {
65 token: "string",
66 regex: "\\}",
67 next: "pop"
68 }, {
69 token: "keyword",
70 regex: "#[a-z0-9-_]+"
71 }, {
72 token: "variable",
73 regex: "\\.[a-z0-9-_]+"
74 }, {
75 token: "string",
76 regex: ":[a-z0-9-_]+"
77 }, {
78 token: "constant",
79 regex: "[a-z0-9-_]+"
80 }, {
81 caseInsensitive: true
82 }],
83  
84 "comment" : [{
85 token : "comment",
86 regex : "\\*\\/",
87 next : "pop"
88 }, {
89 defaultToken : "comment"
90 }],
91  
92 "ruleset" : [
93 {
94 token : "paren.rparen",
95 regex : "\\}",
96 next: "pop"
97 }, {
98 token : "comment", // multi line comment
99 regex : "\\/\\*",
100 push : "comment"
101 }, {
102 token : "string", // single line
103 regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
104 }, {
105 token : "string", // single line
106 regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
107 }, {
108 token : ["constant.numeric", "keyword"],
109 regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
110 }, {
111 token : "constant.numeric",
112 regex : numRe
113 }, {
114 token : "constant.numeric", // hex6 color
115 regex : "#[a-f0-9]{6}"
116 }, {
117 token : "constant.numeric", // hex3 color
118 regex : "#[a-f0-9]{3}"
119 }, {
120 token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
121 regex : pseudoElements
122 }, {
123 token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
124 regex : pseudoClasses
125 }, {
126 token : ["support.function", "string", "support.function"],
127 regex : "(url\\()(.*)(\\))"
128 }, {
129 token : keywordMapper,
130 regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
131 }, {
132 caseInsensitive: true
133 }]
134 };
135  
136 this.normalizeRules();
137 };
138  
139 oop.inherits(CssHighlightRules, TextHighlightRules);
140  
141 exports.CssHighlightRules = CssHighlightRules;
142  
143 });
144  
145 define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
146 "use strict";
147  
148 var oop = require("../lib/oop");
149 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
150  
151 var DocCommentHighlightRules = function() {
152 this.$rules = {
153 "start" : [ {
154 token : "comment.doc.tag",
155 regex : "@[\\w\\d_]+" // TODO: fix email addresses
156 },
157 DocCommentHighlightRules.getTagRule(),
158 {
159 defaultToken : "comment.doc",
160 caseInsensitive: true
161 }]
162 };
163 };
164  
165 oop.inherits(DocCommentHighlightRules, TextHighlightRules);
166  
167 DocCommentHighlightRules.getTagRule = function(start) {
168 return {
169 token : "comment.doc.tag.storage.type",
170 regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
171 };
172 }
173  
174 DocCommentHighlightRules.getStartRule = function(start) {
175 return {
176 token : "comment.doc", // doc comment
177 regex : "\\/\\*(?=\\*)",
178 next : start
179 };
180 };
181  
182 DocCommentHighlightRules.getEndRule = function (start) {
183 return {
184 token : "comment.doc", // closing comment
185 regex : "\\*\\/",
186 next : start
187 };
188 };
189  
190  
191 exports.DocCommentHighlightRules = DocCommentHighlightRules;
192  
193 });
194  
195 define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) {
196 "use strict";
197  
198 var oop = require("../lib/oop");
199 var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
200 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
201 var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";
202  
203 var JavaScriptHighlightRules = function(options) {
204 var keywordMapper = this.createKeywordMapper({
205 "variable.language":
206 "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
207 "Namespace|QName|XML|XMLList|" + // E4X
208 "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
209 "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
210 "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
211 "SyntaxError|TypeError|URIError|" +
212 "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
213 "isNaN|parseFloat|parseInt|" +
214 "JSON|Math|" + // Other
215 "this|arguments|prototype|window|document" , // Pseudo
216 "keyword":
217 "const|yield|import|get|set|async|await|" +
218 "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
219 "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" +
220 "__parent__|__count__|escape|unescape|with|__proto__|" +
221 "class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
222 "storage.type":
223 "const|let|var|function",
224 "constant.language":
225 "null|Infinity|NaN|undefined",
226 "support.function":
227 "alert",
228 "constant.language.boolean": "true|false"
229 }, "identifier");
230 var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";
231  
232 var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
233 "u[0-9a-fA-F]{4}|" + // unicode
234 "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
235 "[0-2][0-7]{0,2}|" + // oct
236 "3[0-7][0-7]?|" + // oct
237 "[4-7][0-7]?|" + //oct
238 ".)";
239  
240 this.$rules = {
241 "no_regex" : [
242 DocCommentHighlightRules.getStartRule("doc-start"),
243 comments("no_regex"),
244 {
245 token : "string",
246 regex : "'(?=.)",
247 next : "qstring"
248 }, {
249 token : "string",
250 regex : '"(?=.)',
251 next : "qqstring"
252 }, {
253 token : "constant.numeric", // hex
254 regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/
255 }, {
256 token : "constant.numeric", // float
257 regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
258 }, {
259 token : [
260 "storage.type", "punctuation.operator", "support.function",
261 "punctuation.operator", "entity.name.function", "text","keyword.operator"
262 ],
263 regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
264 next: "function_arguments"
265 }, {
266 token : [
267 "storage.type", "punctuation.operator", "entity.name.function", "text",
268 "keyword.operator", "text", "storage.type", "text", "paren.lparen"
269 ],
270 regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
271 next: "function_arguments"
272 }, {
273 token : [
274 "entity.name.function", "text", "keyword.operator", "text", "storage.type",
275 "text", "paren.lparen"
276 ],
277 regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
278 next: "function_arguments"
279 }, {
280 token : [
281 "storage.type", "punctuation.operator", "entity.name.function", "text",
282 "keyword.operator", "text",
283 "storage.type", "text", "entity.name.function", "text", "paren.lparen"
284 ],
285 regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
286 next: "function_arguments"
287 }, {
288 token : [
289 "storage.type", "text", "entity.name.function", "text", "paren.lparen"
290 ],
291 regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
292 next: "function_arguments"
293 }, {
294 token : [
295 "entity.name.function", "text", "punctuation.operator",
296 "text", "storage.type", "text", "paren.lparen"
297 ],
298 regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
299 next: "function_arguments"
300 }, {
301 token : [
302 "text", "text", "storage.type", "text", "paren.lparen"
303 ],
304 regex : "(:)(\\s*)(function)(\\s*)(\\()",
305 next: "function_arguments"
306 }, {
307 token : "keyword",
308 regex : "(?:" + kwBeforeRe + ")\\b",
309 next : "start"
310 }, {
311 token : ["support.constant"],
312 regex : /that\b/
313 }, {
314 token : ["storage.type", "punctuation.operator", "support.function.firebug"],
315 regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
316 }, {
317 token : keywordMapper,
318 regex : identifierRe
319 }, {
320 token : "punctuation.operator",
321 regex : /[.](?![.])/,
322 next : "property"
323 }, {
324 token : "keyword.operator",
325 regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
326 <+=?|> next : "start"
327 <+=?|> }, {
328 <+=?|> token : "punctuation.operator",
329 <+=?|> regex : /[?:,;.]/,
330 <+=?|> next : "start"
331 <+=?|> }, {
332 <+=?|> token : "paren.lparen",
333 <+=?|> regex : /[\[({]/,
334 <+=?|> next : "start"
335 <+=?|> }, {
336 <+=?|> token : "paren.rparen",
337 <+=?|> regex : /[\])}]/
338 <+=?|> }, {
339 <+=?|> token: "comment",
340 <+=?|> regex: /^#!.*$/
341 <+=?|> }
342 <+=?|> ],
343 <+=?|> property: [{
344 <+=?|> token : "text",
345 <+=?|> regex : "\\s+"
346 <+=?|> }, {
347 <+=?|> token : [
348 <+=?|> "storage.type", "punctuation.operator", "entity.name.function", "text",
349 <+=?|> "keyword.operator", "text",
350 <+=?|> "storage.type", "text", "entity.name.function", "text", "paren.lparen"
351 <+=?|> ],
352 <+=?|> regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
353 <+=?|> next: "function_arguments"
354 <+=?|> }, {
355 <+=?|> token : "punctuation.operator",
356 <+=?|> regex : /[.](?![.])/
357 <+=?|> }, {
358 <+=?|> token : "support.function",
359 <+=?|> regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
360 <+=?|> }, {
361 <+=?|> token : "support.function.dom",
362 <+=?|> regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
363 <+=?|> }, {
364 <+=?|> token : "support.constant",
365 <+=?|> regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
366 <+=?|> }, {
367 <+=?|> token : "identifier",
368 <+=?|> regex : identifierRe
369 <+=?|> }, {
370 <+=?|> regex: "",
371 <+=?|> token: "empty",
372 <+=?|> next: "no_regex"
373 <+=?|> }
374 <+=?|> ],
375 <+=?|> "start": [
376 <+=?|> DocCommentHighlightRules.getStartRule("doc-start"),
377 <+=?|> comments("start"),
378 <+=?|> {
379 <+=?|> token: "string.regexp",
380 <+=?|> regex: "\\/",
381 <+=?|> next: "regex"
382 <+=?|> }, {
383 <+=?|> token : "text",
384 <+=?|> regex : "\\s+|^$",
385 <+=?|> next : "start"
386 <+=?|> }, {
387 <+=?|> token: "empty",
388 <+=?|> regex: "",
389 <+=?|> next: "no_regex"
390 <+=?|> }
391 <+=?|> ],
392 <+=?|> "regex": [
393 <+=?|> {
394 <+=?|> token: "regexp.keyword.operator",
395 <+=?|> regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
396 <+=?|> }, {
397 <+=?|> token: "string.regexp",
398 <+=?|> regex: "/[sxngimy]*",
399 <+=?|> next: "no_regex"
400 <+=?|> }, {
401 <+=?|> token : "invalid",
402 <+=?|> regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
403 <+=?|> }, {
404 <+=?|> token : "constant.language.escape",
405 <+=?|> regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
406 <+=?|> }, {
407 <+=?|> token : "constant.language.delimiter",
408 <+=?|> regex: /\|/
409 <+=?|> }, {
410 <+=?|> token: "constant.language.escape",
411 <+=?|> regex: /\[\^?/,
412 <+=?|> next: "regex_character_class"
413 <+=?|> }, {
414 <+=?|> token: "empty",
415 <+=?|> regex: "$",
416 <+=?|> next: "no_regex"
417 <+=?|> }, {
418 <+=?|> defaultToken: "string.regexp"
419 <+=?|> }
420 <+=?|> ],
421 <+=?|> "regex_character_class": [
422 <+=?|> {
423 <+=?|> token: "regexp.charclass.keyword.operator",
424 <+=?|> regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
425 <+=?|> }, {
426 <+=?|> token: "constant.language.escape",
427 <+=?|> regex: "]",
428 <+=?|> next: "regex"
429 <+=?|> }, {
430 <+=?|> token: "constant.language.escape",
431 <+=?|> regex: "-"
432 <+=?|> }, {
433 <+=?|> token: "empty",
434 <+=?|> regex: "$",
435 <+=?|> next: "no_regex"
436 <+=?|> }, {
437 <+=?|> defaultToken: "string.regexp.charachterclass"
438 <+=?|> }
439 <+=?|> ],
440 <+=?|> "function_arguments": [
441 <+=?|> {
442 <+=?|> token: "variable.parameter",
443 <+=?|> regex: identifierRe
444 <+=?|> }, {
445 <+=?|> token: "punctuation.operator",
446 <+=?|> regex: "[, ]+"
447 <+=?|> }, {
448 <+=?|> token: "punctuation.operator",
449 <+=?|> regex: "$"
450 <+=?|> }, {
451 <+=?|> token: "empty",
452 <+=?|> regex: "",
453 <+=?|> next: "no_regex"
454 <+=?|> }
455 <+=?|> ],
456 <+=?|> "qqstring" : [
457 <+=?|> {
458 <+=?|> token : "constant.language.escape",
459 <+=?|> regex : escapedRe
460 <+=?|> }, {
461 <+=?|> token : "string",
462 <+=?|> regex : "\\\\$",
463 <+=?|> next : "qqstring"
464 <+=?|> }, {
465 <+=?|> token : "string",
466 <+=?|> regex : '"|$',
467 <+=?|> next : "no_regex"
468 <+=?|> }, {
469 <+=?|> defaultToken: "string"
470 <+=?|> }
471 <+=?|> ],
472 <+=?|> "qstring" : [
473 <+=?|> {
474 <+=?|> token : "constant.language.escape",
475 <+=?|> regex : escapedRe
476 <+=?|> }, {
477 <+=?|> token : "string",
478 <+=?|> regex : "\\\\$",
479 <+=?|> next : "qstring"
480 <+=?|> }, {
481 <+=?|> token : "string",
482 <+=?|> regex : "'|$",
483 <+=?|> next : "no_regex"
484 <+=?|> }, {
485 <+=?|> defaultToken: "string"
486 <+=?|> }
487 <+=?|> ]
488 <+=?|> };
489  
490  
491 <+=?|> if (!options || !options.noES6) {
492 <+=?|> this.$rules.no_regex.unshift({
493 <+=?|> regex: "[{}]", onMatch: function(val, state, stack) {
494 <+=?|> this.next = val == "{" ? this.nextState : "";
495 <+=?|> if (val == "{" && stack.length) {
496 <+=?|> stack.unshift("start", state);
497 <+=?|> }
498 <+=?|> else if (val == "}" && stack.length) {
499 <+=?|> stack.shift();
500 <+=?|> this.next = stack.shift();
501 <+=?|> if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1)
502 <+=?|> return "paren.quasi.end";
503 <+=?|> }
504 <+=?|> return val == "{" ? "paren.lparen" : "paren.rparen";
505 <+=?|> },
506 <+=?|> nextState: "start"
507 <+=?|> }, {
508 <+=?|> token : "string.quasi.start",
509 <+=?|> regex : /`/,
510 <+=?|> push : [{
511 <+=?|> token : "constant.language.escape",
512 <+=?|> regex : escapedRe
513 <+=?|> }, {
514 <+=?|> token : "paren.quasi.start",
515 <+=?|> regex : /\${/,
516 <+=?|> push : "start"
517 <+=?|> }, {
518 <+=?|> token : "string.quasi.end",
519 <+=?|> regex : /`/,
520 <+=?|> next : "pop"
521 <+=?|> }, {
522 <+=?|> defaultToken: "string.quasi"
523 <+=?|> }]
524 <+=?|> });
525  
526 <+=?|> if (!options || options.jsx != false)
527 <+=?|> JSX.call(this);
528 <+=?|> }
529  
530 <+=?|> this.embedRules(DocCommentHighlightRules, "doc-",
531 <+=?|> [ DocCommentHighlightRules.getEndRule("no_regex") ]);
532  
533 <+=?|> this.normalizeRules();
534 <+=?|>};
535  
536 <+=?|>oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
537  
538 <+=?|>function JSX() {
539 <+=?|> var tagRegex = identifierRe.replace("\\d", "\\d\\-");
540 <+=?|> var jsxTag = {
541 <+=?|> onMatch : function(val, state, stack) {
542 <+=?|> var offset = val.charAt(1) == "/" ? 2 : 1;
543 <+=?|> if (offset == 1) {
544 <+=?|> if (state != this.nextState)
545 <+=?|> stack.unshift(this.next, this.nextState, 0);
546 <+=?|> else
547 <+=?|> stack.unshift(this.next);
548 <+=?|> stack[2]++;
549 <+=?|> } else if (offset == 2) {
550 <+=?|> if (state == this.nextState) {
551 <+=?|> stack[1]--;
552 <+=?|> if (!stack[1] || stack[1] < 0) {
553 <+=?|> stack.shift();
554 <+=?|> stack.shift();
555 <+=?|> }
556 <+=?|> }
557 <+=?|> }
558 <+=?|> return [{
559 <+=?|> type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
560 <+=?|> value: val.slice(0, offset)
561 <+=?|> }, {
562 <+=?|> type: "meta.tag.tag-name.xml",
563 <+=?|> value: val.substr(offset)
564 <+=?|> }];
565 <+=?|> },
566 <+=?|> regex : "</?" + tagRegex + "",
567 <+=?|> next: "jsxAttributes",
568 <+=?|> nextState: "jsx"
569 <+=?|> };
570 <+=?|> this.$rules.start.unshift(jsxTag);
571 <+=?|> var jsxJsRule = {
572 <+=?|> regex: "{",
573 <+=?|> token: "paren.quasi.start",
574 <+=?|> push: "start"
575 <+=?|> };
576 <+=?|> this.$rules.jsx = [
577 <+=?|> jsxJsRule,
578 <+=?|> jsxTag,
579 <+=?|> {include : "reference"},
580 <+=?|> {defaultToken: "string"}
581 <+=?|> ];
582 <+=?|> this.$rules.jsxAttributes = [{
583 <+=?|> token : "meta.tag.punctuation.tag-close.xml",
584 <+=?|> regex : "/?>",
585 <+=?|> onMatch : function(value, currentState, stack) {
586 <+=?|> if (currentState == stack[0])
587 <+=?|> stack.shift();
588 <+=?|> if (value.length == 2) {
589 <+=?|> if (stack[0] == this.nextState)
590 <+=?|> stack[1]--;
591 <+=?|> if (!stack[1] || stack[1] < 0) {
592 <+=?|> stack.splice(0, 2);
593 <+=?|> }
594 <+=?|> }
595 <+=?|> this.next = stack[0] || "start";
596 <+=?|> return [{type: this.token, value: value}];
597 <+=?|> },
598 <+=?|> nextState: "jsx"
599 <+=?|> },
600 <+=?|> jsxJsRule,
601 <+=?|> comments("jsxAttributes"),
602 <+=?|> {
603 <+=?|> token : "entity.other.attribute-name.xml",
604 <+=?|> regex : tagRegex
605 <+=?|> }, {
606 <+=?|> token : "keyword.operator.attribute-equals.xml",
607 <+=?|> regex : "="
608 <+=?|> }, {
609 <+=?|> token : "text.tag-whitespace.xml",
610 <+=?|> regex : "\\s+"
611 <+=?|> }, {
612 <+=?|> token : "string.attribute-value.xml",
613 <+=?|> regex : "'",
614 <+=?|> stateName : "jsx_attr_q",
615 <+=?|> push : [
616 <+=?|> {token : "string.attribute-value.xml", regex: "'", next: "pop"},
617 <+=?|> {include : "reference"},
618 <+=?|> {defaultToken : "string.attribute-value.xml"}
619 <+=?|> ]
620 <+=?|> }, {
621 <+=?|> token : "string.attribute-value.xml",
622 <+=?|> regex : '"',
623 <+=?|> stateName : "jsx_attr_qq",
624 <+=?|> push : [
625 <+=?|> {token : "string.attribute-value.xml", regex: '"', next: "pop"},
626 <+=?|> {include : "reference"},
627 <+=?|> {defaultToken : "string.attribute-value.xml"}
628 <+=?|> ]
629 <+=?|> },
630 <+=?|> jsxTag
631 <+=?|> ];
632 <+=?|> this.$rules.reference = [{
633 <+=?|> token : "constant.language.escape.reference.xml",
634 <+=?|> regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
635 <+=?|> }];
636 <+=?|>}
637  
638 <+=?|>function comments(next) {
639 <+=?|> return [
640 <+=?|> {
641 <+=?|> token : "comment", // multi line comment
642 <+=?|> regex : /\/\*/,
643 <+=?|> next: [
644 <+=?|> DocCommentHighlightRules.getTagRule(),
645 <+=?|> {token : "comment", regex : "\\*\\/", next : next || "pop"},
646 <+=?|> {defaultToken : "comment", caseInsensitive: true}
647 <+=?|> ]
648 <+=?|> }, {
649 <+=?|> token : "comment",
650 <+=?|> regex : "\\/\\/",
651 <+=?|> next: [
652 <+=?|> DocCommentHighlightRules.getTagRule(),
653 <+=?|> {token : "comment", regex : "$|^", next : next || "pop"},
654 <+=?|> {defaultToken : "comment", caseInsensitive: true}
655 <+=?|> ]
656 <+=?|> }
657 <+=?|> ];
658 <+=?|>}
659 <+=?|>exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
660 <+=?|>});
661  
662 <+=?|>define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
663 <+=?|>"use strict";
664  
665 <+=?|>var oop = require("../lib/oop");
666 <+=?|>var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
667  
668 <+=?|>var XmlHighlightRules = function(normalize) {
669 <+=?|> var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";
670  
671 <+=?|> this.$rules = {
672 <+=?|> start : [
673 <+=?|> {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"},
674 <+=?|> {
675 <+=?|> token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"],
676 <+=?|> regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true
677 <+=?|> },
678 <+=?|> {
679 <+=?|> token : ["punctuation.instruction.xml", "keyword.instruction.xml"],
680 <+=?|> regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction"
681 <+=?|> },
682 <+=?|> {token : "comment.xml", regex : "<\\!--", next : "comment"},
683 <+=?|> {
684 <+=?|> token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
685 <+=?|> regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true
686 <+=?|> },
687 <+=?|> {include : "tag"},
688 <+=?|> {token : "text.end-tag-open.xml", regex: "</"},
689 <+=?|> {token : "text.tag-open.xml", regex: "<"},
690 <+=?|> {include : "reference"},
691 <+=?|> {defaultToken : "text.xml"}
692 <+=?|> ],
693  
694 <+=?|> xml_decl : [{
695 <+=?|> token : "entity.other.attribute-name.decl-attribute-name.xml",
696 <+=?|> regex : "(?:" + tagRegex + ":)?" + tagRegex + ""
697 <+=?|> }, {
698 <+=?|> token : "keyword.operator.decl-attribute-equals.xml",
699 <+=?|> regex : "="
700 <+=?|> }, {
701 <+=?|> include: "whitespace"
702 <+=?|> }, {
703 <+=?|> include: "string"
704 <+=?|> }, {
705 <+=?|> token : "punctuation.xml-decl.xml",
706 <+=?|> regex : "\\?>",
707 <+=?|> next : "start"
708 <+=?|> }],
709  
710 <+=?|> processing_instruction : [
711 <+=?|> {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"},
712 <+=?|> {defaultToken : "instruction.xml"}
713 <+=?|> ],
714  
715 <+=?|> doctype : [
716 <+=?|> {include : "whitespace"},
717 <+=?|> {include : "string"},
718 <+=?|> {token : "xml-pe.doctype.xml", regex : ">", next : "start"},
719 <+=?|> {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"},
720 <+=?|> {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"}
721 <+=?|> ],
722  
723 <+=?|> int_subset : [{
724 <+=?|> token : "text.xml",
725 <+=?|> regex : "\\s+"
726 <+=?|> }, {
727 <+=?|> token: "punctuation.int-subset.xml",
728 <+=?|> regex: "]",
729 <+=?|> next: "pop"
730 <+=?|> }, {
731 <+=?|> token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
732 <+=?|> regex : "(<\\!)(" + tagRegex + ")",
733 <+=?|> push : [{
734 <+=?|> token : "text",
735 <+=?|> regex : "\\s+"
736 <+=?|> },
737 <+=?|> {
738 <+=?|> token : "punctuation.markup-decl.xml",
739 <+=?|> regex : ">",
740 <+=?|> next : "pop"
741 <+=?|> },
742 <+=?|> {include : "string"}]
743 <+=?|> }],
744  
745 <+=?|> cdata : [
746 <+=?|> {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"},
747 <+=?|> {token : "text.xml", regex : "\\s+"},
748 <+=?|> {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"}
749 <+=?|> ],
750  
751 <+=?|> comment : [
752 <+=?|> {token : "comment.xml", regex : "-->", next : "start"},
753 <+=?|> {defaultToken : "comment.xml"}
754 <+=?|> ],
755  
756 <+=?|> reference : [{
757 <+=?|> token : "constant.language.escape.reference.xml",
758 <+=?|> regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
759 <+=?|> }],
760  
761 <+=?|> attr_reference : [{
762 <+=?|> token : "constant.language.escape.reference.attribute-value.xml",
763 <+=?|> regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
764 <+=?|> }],
765  
766 <+=?|> tag : [{
767 <+=?|> token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
768 <+=?|> regex : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
769 <+=?|> next: [
770 <+=?|> {include : "attributes"},
771 <+=?|> {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
772 <+=?|> ]
773 <+=?|> }],
774  
775 <+=?|> tag_whitespace : [
776 <+=?|> {token : "text.tag-whitespace.xml", regex : "\\s+"}
777 <+=?|> ],
778 <+=?|> whitespace : [
779 <+=?|> {token : "text.whitespace.xml", regex : "\\s+"}
780 <+=?|> ],
781 <+=?|> string: [{
782 <+=?|> token : "string.xml",
783 <+=?|> regex : "'",
784 <+=?|> push : [
785 <+=?|> {token : "string.xml", regex: "'", next: "pop"},
786 <+=?|> {defaultToken : "string.xml"}
787 <+=?|> ]
788 <+=?|> }, {
789 <+=?|> token : "string.xml",
790 <+=?|> regex : '"',
791 <+=?|> push : [
792 <+=?|> {token : "string.xml", regex: '"', next: "pop"},
793 <+=?|> {defaultToken : "string.xml"}
794 <+=?|> ]
795 <+=?|> }],
796  
797 <+=?|> attributes: [{
798 <+=?|> token : "entity.other.attribute-name.xml",
799 <+=?|> regex : "(?:" + tagRegex + ":)?" + tagRegex + ""
800 <+=?|> }, {
801 <+=?|> token : "keyword.operator.attribute-equals.xml",
802 <+=?|> regex : "="
803 <+=?|> }, {
804 <+=?|> include: "tag_whitespace"
805 <+=?|> }, {
806 <+=?|> include: "attribute_value"
807 <+=?|> }],
808  
809 <+=?|> attribute_value: [{
810 <+=?|> token : "string.attribute-value.xml",
811 <+=?|> regex : "'",
812 <+=?|> push : [
813 <+=?|> {token : "string.attribute-value.xml", regex: "'", next: "pop"},
814 <+=?|> {include : "attr_reference"},
815 <+=?|> {defaultToken : "string.attribute-value.xml"}
816 <+=?|> ]
817 <+=?|> }, {
818 <+=?|> token : "string.attribute-value.xml",
819 <+=?|> regex : '"',
820 <+=?|> push : [
821 <+=?|> {token : "string.attribute-value.xml", regex: '"', next: "pop"},
822 <+=?|> {include : "attr_reference"},
823 <+=?|> {defaultToken : "string.attribute-value.xml"}
824 <+=?|> ]
825 <+=?|> }]
826 <+=?|> };
827  
828 <+=?|> if (this.constructor === XmlHighlightRules)
829 <+=?|> this.normalizeRules();
830 <+=?|>};
831  
832  
833 <+=?|>(function() {
834  
835 <+=?|> this.embedTagRules = function(HighlightRules, prefix, tag){
836 <+=?|> this.$rules.tag.unshift({
837 <+=?|> token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
838 <+=?|> regex : "(<)(" + tag + "(?=\\s|>|$))",
839 <+=?|> next: [
840 <+=?|> {include : "attributes"},
841 <+=?|> {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"}
842 <+=?|> ]
843 <+=?|> });
844  
845 <+=?|> this.$rules[tag + "-end"] = [
846 <+=?|> {include : "attributes"},
847 <+=?|> {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start",
848 <+=?|> onMatch : function(value, currentState, stack) {
849 <+=?|> stack.splice(0);
850 <+=?|> return this.token;
851 <+=?|> }}
852 <+=?|> ]
853  
854 <+=?|> this.embedRules(HighlightRules, prefix, [{
855 <+=?|> token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
856 <+=?|> regex : "(</)(" + tag + "(?=\\s|>|$))",
857 <+=?|> next: tag + "-end"
858 <+=?|> }, {
859 <+=?|> token: "string.cdata.xml",
860 <+=?|> regex : "<\\!\\[CDATA\\["
861 <+=?|> }, {
862 <+=?|> token: "string.cdata.xml",
863 <+=?|> regex : "\\]\\]>"
864 <+=?|> }]);
865 <+=?|> };
866  
867 <+=?|>}).call(TextHighlightRules.prototype);
868  
869 <+=?|>oop.inherits(XmlHighlightRules, TextHighlightRules);
870  
871 <+=?|>exports.XmlHighlightRules = XmlHighlightRules;
872 <+=?|>});
873  
874 <+=?|>define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) {
875 <+=?|>"use strict";
876  
877 <+=?|>var oop = require("../lib/oop");
878 <+=?|>var lang = require("../lib/lang");
879 <+=?|>var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
880 <+=?|>var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
881 <+=?|>var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
882  
883 <+=?|>var tagMap = lang.createMap({
884 <+=?|> a : 'anchor',
885 <+=?|> button : 'form',
886 <+=?|> form : 'form',
887 <+=?|> img : 'image',
888 <+=?|> input : 'form',
889 <+=?|> label : 'form',
890 <+=?|> option : 'form',
891 <+=?|> script : 'script',
892 <+=?|> select : 'form',
893 <+=?|> textarea : 'form',
894 <+=?|> style : 'style',
895 <+=?|> table : 'table',
896 <+=?|> tbody : 'table',
897 <+=?|> td : 'table',
898 <+=?|> tfoot : 'table',
899 <+=?|> th : 'table',
900 <+=?|> tr : 'table'
901 <+=?|>});
902  
903 <+=?|>var HtmlHighlightRules = function() {
904 <+=?|> XmlHighlightRules.call(this);
905  
906 <+=?|> this.addRules({
907 <+=?|> attributes: [{
908 <+=?|> include : "tag_whitespace"
909 <+=?|> }, {
910 <+=?|> token : "entity.other.attribute-name.xml",
911 <+=?|> regex : "[-_a-zA-Z0-9:.]+"
912 <+=?|> }, {
913 <+=?|> token : "keyword.operator.attribute-equals.xml",
914 <+=?|> regex : "=",
915 <+=?|> push : [{
916 <+=?|> include: "tag_whitespace"
917 <+=?|> }, {
918 <+=?|> token : "string.unquoted.attribute-value.html",
919 <+=?|> regex : "[^<>='\"`\\s]+",
920 <+=?|> next : "pop"
921 <+=?|> }, {
922 <+=?|> token : "empty",
923 <+=?|> regex : "",
924 <+=?|> next : "pop"
925 <+=?|> }]
926 <+=?|> }, {
927 <+=?|> include : "attribute_value"
928 <+=?|> }],
929 <+=?|> tag: [{
930 <+=?|> token : function(start, tag) {
931 <+=?|> var group = tagMap[tag];
932 <+=?|> return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
933 <+=?|> "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
934 <+=?|> },
935 <+=?|> regex : "(</?)([-_a-zA-Z0-9:.]+)",
936 <+=?|> next: "tag_stuff"
937 <+=?|> }],
938 <+=?|> tag_stuff: [
939 <+=?|> {include : "attributes"},
940 <+=?|> {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
941 <+=?|> ]
942 <+=?|> });
943  
944 <+=?|> this.embedTagRules(CssHighlightRules, "css-", "style");
945 <+=?|> this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script");
946  
947 <+=?|> if (this.constructor === HtmlHighlightRules)
948 <+=?|> this.normalizeRules();
949 <+=?|>};
950  
951 <+=?|>oop.inherits(HtmlHighlightRules, XmlHighlightRules);
952  
953 <+=?|>exports.HtmlHighlightRules = HtmlHighlightRules;
954 <+=?|>});
955  
956 <+=?|>define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
957 <+=?|>"use strict";
958  
959 <+=?|>var oop = require("../lib/oop");
960 <+=?|>var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
961  
962 <+=?|>var ElixirHighlightRules = function() {
963  
964 <+=?|> this.$rules = { start:
965 <+=?|> [ { token:
966 <+=?|> [ 'meta.module.elixir',
967 <+=?|> 'keyword.control.module.elixir',
968 <+=?|> 'meta.module.elixir',
969 <+=?|> 'entity.name.type.module.elixir' ],
970 <+=?|> regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' },
971 <+=?|> { token: 'comment.documentation.heredoc',
972 <+=?|> regex: '@(?:module|type)?doc (?:~[a-z])?"""',
973 <+=?|> push:
974 <+=?|> [ { token: 'comment.documentation.heredoc',
975 <+=?|> regex: '\\s*"""',
976 <+=?|> next: 'pop' },
977 <+=?|> { include: '#interpolated_elixir' },
978 <+=?|> { include: '#escaped_char' },
979 <+=?|> { defaultToken: 'comment.documentation.heredoc' } ],
980 <+=?|> comment: '@doc with heredocs is treated as documentation' },
981 <+=?|> { token: 'comment.documentation.heredoc',
982 <+=?|> regex: '@(?:module|type)?doc ~[A-Z]"""',
983 <+=?|> push:
984 <+=?|> [ { token: 'comment.documentation.heredoc',
985 <+=?|> regex: '\\s*"""',
986 <+=?|> next: 'pop' },
987 <+=?|> { defaultToken: 'comment.documentation.heredoc' } ],
988 <+=?|> comment: '@doc with heredocs is treated as documentation' },
989 <+=?|> { token: 'comment.documentation.heredoc',
990 <+=?|> regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'',
991 <+=?|> push:
992 <+=?|> [ { token: 'comment.documentation.heredoc',
993 <+=?|> regex: '\\s*\'\'\'',
994 <+=?|> next: 'pop' },
995 <+=?|> { include: '#interpolated_elixir' },
996 <+=?|> { include: '#escaped_char' },
997 <+=?|> { defaultToken: 'comment.documentation.heredoc' } ],
998 <+=?|> comment: '@doc with heredocs is treated as documentation' },
999 <+=?|> { token: 'comment.documentation.heredoc',
1000 <+=?|> regex: '@(?:module|type)?doc ~[A-Z]\'\'\'',
1001 <+=?|> push:
1002 <+=?|> [ { token: 'comment.documentation.heredoc',
1003 <+=?|> regex: '\\s*\'\'\'',
1004 <+=?|> next: 'pop' },
1005 <+=?|> { defaultToken: 'comment.documentation.heredoc' } ],
1006 <+=?|> comment: '@doc with heredocs is treated as documentation' },
1007 <+=?|> { token: 'comment.documentation.false',
1008 <+=?|> regex: '@(?:module|type)?doc false',
1009 <+=?|> comment: '@doc false is treated as documentation' },
1010 <+=?|> { token: 'comment.documentation.string',
1011 <+=?|> regex: '@(?:module|type)?doc "',
1012 <+=?|> push:
1013 <+=?|> [ { token: 'comment.documentation.string',
1014 <+=?|> regex: '"',
1015 <+=?|> next: 'pop' },
1016 <+=?|> { include: '#interpolated_elixir' },
1017 <+=?|> { include: '#escaped_char' },
1018 <+=?|> { defaultToken: 'comment.documentation.string' } ],
1019 <+=?|> comment: '@doc with string is treated as documentation' },
1020 <+=?|> { token: 'keyword.control.elixir',
1021 <+=?|> regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])',
1022 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1023 <+=?|> originalRegex: '(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])' },
1024 <+=?|> { token: 'keyword.operator.elixir',
1025 <+=?|> regex: '\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b',
1026 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1027 <+=?|> originalRegex: '(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b',
1028 <+=?|> comment: ' as above, just doesn\'t need a \'end\' and does a logic operation' },
1029 <+=?|> { token: 'constant.language.elixir',
1030 <+=?|> regex: '\\b(?:nil|true|false)\\b(?![?!])' },
1031 <+=?|> { token: 'variable.language.elixir',
1032 <+=?|> regex: '\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])' },
1033 <+=?|> { token:
1034 <+=?|> [ 'punctuation.definition.variable.elixir',
1035 <+=?|> 'variable.other.readwrite.module.elixir' ],
1036 <+=?|> regex: '(@)([a-zA-Z_]\\w*)' },
1037 <+=?|> { token:
1038 <+=?|> [ 'punctuation.definition.variable.elixir',
1039 <+=?|> 'variable.other.anonymous.elixir' ],
1040 <+=?|> regex: '(&)(\\d*)' },
1041 <+=?|> { token: 'variable.other.constant.elixir',
1042 <+=?|> regex: '\\b[A-Z]\\w*\\b' },
1043 <+=?|> { token: 'constant.numeric.elixir',
1044 <+=?|> regex: '\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b',
1045 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1046 <+=?|> originalRegex: '\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' },
1047 <+=?|> { token: 'punctuation.definition.constant.elixir',
1048 <+=?|> regex: ':\'',
1049 <+=?|> push:
1050 <+=?|> [ { token: 'punctuation.definition.constant.elixir',
1051 <+=?|> regex: '\'',
1052 <+=?|> next: 'pop' },
1053 <+=?|> { include: '#interpolated_elixir' },
1054 <+=?|> { include: '#escaped_char' },
1055 <+=?|> { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] },
1056 <+=?|> { token: 'punctuation.definition.constant.elixir',
1057 <+=?|> regex: ':"',
1058 <+=?|> push:
1059 <+=?|> [ { token: 'punctuation.definition.constant.elixir',
1060 <+=?|> regex: '"',
1061 <+=?|> next: 'pop' },
1062 <+=?|> { include: '#interpolated_elixir' },
1063 <+=?|> { include: '#escaped_char' },
1064 <+=?|> { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] },
1065 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1066 <+=?|> regex: '(?:\'\'\')',
1067 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1068 <+=?|> originalRegex: '(?>\'\'\')',
1069 <+=?|> push:
1070 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1071 <+=?|> regex: '^\\s*\'\'\'',
1072 <+=?|> next: 'pop' },
1073 <+=?|> { include: '#interpolated_elixir' },
1074 <+=?|> { include: '#escaped_char' },
1075 <+=?|> { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ],
1076 <+=?|> comment: 'Single-quoted heredocs' },
1077 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1078 <+=?|> regex: '\'',
1079 <+=?|> push:
1080 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1081 <+=?|> regex: '\'',
1082 <+=?|> next: 'pop' },
1083 <+=?|> { include: '#interpolated_elixir' },
1084 <+=?|> { include: '#escaped_char' },
1085 <+=?|> { defaultToken: 'support.function.variable.quoted.single.elixir' } ],
1086 <+=?|> comment: 'single quoted string (allows for interpolation)' },
1087 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1088 <+=?|> regex: '(?:""")',
1089 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1090 <+=?|> originalRegex: '(?>""")',
1091 <+=?|> push:
1092 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1093 <+=?|> regex: '^\\s*"""',
1094 <+=?|> next: 'pop' },
1095 <+=?|> { include: '#interpolated_elixir' },
1096 <+=?|> { include: '#escaped_char' },
1097 <+=?|> { defaultToken: 'string.quoted.double.heredoc.elixir' } ],
1098 <+=?|> comment: 'Double-quoted heredocs' },
1099 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1100 <+=?|> regex: '"',
1101 <+=?|> push:
1102 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1103 <+=?|> regex: '"',
1104 <+=?|> next: 'pop' },
1105 <+=?|> { include: '#interpolated_elixir' },
1106 <+=?|> { include: '#escaped_char' },
1107 <+=?|> { defaultToken: 'string.quoted.double.elixir' } ],
1108 <+=?|> comment: 'double quoted string (allows for interpolation)' },
1109 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1110 <+=?|> regex: '~[a-z](?:""")',
1111 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1112 <+=?|> originalRegex: '~[a-z](?>""")',
1113 <+=?|> push:
1114 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1115 <+=?|> regex: '^\\s*"""',
1116 <+=?|> next: 'pop' },
1117 <+=?|> { include: '#interpolated_elixir' },
1118 <+=?|> { include: '#escaped_char' },
1119 <+=?|> { defaultToken: 'string.quoted.double.heredoc.elixir' } ],
1120 <+=?|> comment: 'Double-quoted heredocs sigils' },
1121 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1122 <+=?|> regex: '~[a-z]\\{',
1123 <+=?|> push:
1124 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1125 <+=?|> regex: '\\}[a-z]*',
1126 <+=?|> next: 'pop' },
1127 <+=?|> { include: '#interpolated_elixir' },
1128 <+=?|> { include: '#escaped_char' },
1129 <+=?|> { defaultToken: 'string.interpolated.elixir' } ],
1130 <+=?|> comment: 'sigil (allow for interpolation)' },
1131 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1132 <+=?|> regex: '~[a-z]\\[',
1133 <+=?|> push:
1134 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1135 <+=?|> regex: '\\][a-z]*',
1136 <+=?|> next: 'pop' },
1137 <+=?|> { include: '#interpolated_elixir' },
1138 <+=?|> { include: '#escaped_char' },
1139 <+=?|> { defaultToken: 'string.interpolated.elixir' } ],
1140 <+=?|> comment: 'sigil (allow for interpolation)' },
1141 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1142 <+=?|> regex: '~[a-z]\\<',
1143 <+=?|> push:
1144 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1145 <+=?|> regex: '\\>[a-z]*',
1146 <+=?|> next: 'pop' },
1147 <+=?|> { include: '#interpolated_elixir' },
1148 <+=?|> { include: '#escaped_char' },
1149 <+=?|> { defaultToken: 'string.interpolated.elixir' } ],
1150 <+=?|> comment: 'sigil (allow for interpolation)' },
1151 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1152 <+=?|> regex: '~[a-z]\\(',
1153 <+=?|> push:
1154 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1155 <+=?|> regex: '\\)[a-z]*',
1156 <+=?|> next: 'pop' },
1157 <+=?|> { include: '#interpolated_elixir' },
1158 <+=?|> { include: '#escaped_char' },
1159 <+=?|> { defaultToken: 'string.interpolated.elixir' } ],
1160 <+=?|> comment: 'sigil (allow for interpolation)' },
1161 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1162 <+=?|> regex: '~[a-z][^\\w]',
1163 <+=?|> push:
1164 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1165 <+=?|> regex: '[^\\w][a-z]*',
1166 <+=?|> next: 'pop' },
1167 <+=?|> { include: '#interpolated_elixir' },
1168 <+=?|> { include: '#escaped_char' },
1169 <+=?|> { include: '#escaped_char' },
1170 <+=?|> { defaultToken: 'string.interpolated.elixir' } ],
1171 <+=?|> comment: 'sigil (allow for interpolation)' },
1172 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1173 <+=?|> regex: '~[A-Z](?:""")',
1174 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1175 <+=?|> originalRegex: '~[A-Z](?>""")',
1176 <+=?|> push:
1177 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1178 <+=?|> regex: '^\\s*"""',
1179 <+=?|> next: 'pop' },
1180 <+=?|> { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1181 <+=?|> comment: 'Double-quoted heredocs sigils' },
1182 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1183 <+=?|> regex: '~[A-Z]\\{',
1184 <+=?|> push:
1185 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1186 <+=?|> regex: '\\}[a-z]*',
1187 <+=?|> next: 'pop' },
1188 <+=?|> { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1189 <+=?|> comment: 'sigil (without interpolation)' },
1190 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1191 <+=?|> regex: '~[A-Z]\\[',
1192 <+=?|> push:
1193 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1194 <+=?|> regex: '\\][a-z]*',
1195 <+=?|> next: 'pop' },
1196 <+=?|> { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1197 <+=?|> comment: 'sigil (without interpolation)' },
1198 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1199 <+=?|> regex: '~[A-Z]\\<',
1200 <+=?|> push:
1201 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1202 <+=?|> regex: '\\>[a-z]*',
1203 <+=?|> next: 'pop' },
1204 <+=?|> { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1205 <+=?|> comment: 'sigil (without interpolation)' },
1206 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1207 <+=?|> regex: '~[A-Z]\\(',
1208 <+=?|> push:
1209 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1210 <+=?|> regex: '\\)[a-z]*',
1211 <+=?|> next: 'pop' },
1212 <+=?|> { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1213 <+=?|> comment: 'sigil (without interpolation)' },
1214 <+=?|> { token: 'punctuation.definition.string.begin.elixir',
1215 <+=?|> regex: '~[A-Z][^\\w]',
1216 <+=?|> push:
1217 <+=?|> [ { token: 'punctuation.definition.string.end.elixir',
1218 <+=?|> regex: '[^\\w][a-z]*',
1219 <+=?|> next: 'pop' },
1220 <+=?|> { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],
1221 <+=?|> comment: 'sigil (without interpolation)' },
1222 <+=?|> { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'],
1223 <+=?|> regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)',
1224 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1225 <+=?|> originalRegex: '(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)',
1226 <+=?|> comment: 'symbols' },
1227 <+=?|> { token: 'punctuation.definition.constant.elixir',
1228 <+=?|> regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)',
1229 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1230 <+=?|> originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)',
1231 <+=?|> comment: 'symbols' },
1232 <+=?|> { token:
1233 <+=?|> [ 'punctuation.definition.comment.elixir',
1234 <+=?|> 'comment.line.number-sign.elixir' ],
1235 <+=?|> regex: '(#)(.*)' },
1236 <+=?|> { token: 'constant.numeric.elixir',
1237 <+=?|> regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])',
1238 <+=?|> TODO: 'FIXME: regexp doesn\'t have js equivalent',
1239 <+=?|> originalRegex: '(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])',
1240 <+=?|> comment: '\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (3rd alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t' },
1241 <+=?|> { token: 'keyword.operator.assignment.augmented.elixir',
1242 <+=?|> regex: '\\+=|\\-=|\\|\\|=|~=|&&=' },
1243 <+=?|> { token: 'keyword.operator.comparison.elixir',
1244 <+=?|> regex: '===?|!==?|<=?|>=?' },
1245 <+=?|> { token: 'keyword.operator.bitwise.elixir',
1246 <+=?|> regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' },
1247 <+=?|> { token: 'keyword.operator.logical.elixir',
1248 <+=?|> regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b',
1249 <+=?|> originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' },
1250 <+=?|> { token: 'keyword.operator.arithmetic.elixir',
1251 <+=?|> regex: '\\*|\\+|\\-|/' },
1252 <+=?|> { token: 'keyword.operator.other.elixir',
1253 <+=?|> regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' },
1254 <+=?|> { token: 'keyword.operator.assignment.elixir', regex: '=' },
1255 <+=?|> { token: 'punctuation.separator.other.elixir', regex: ':' },
1256 <+=?|> { token: 'punctuation.separator.statement.elixir',
1257 <+=?|> regex: '\\;' },
1258 <+=?|> { token: 'punctuation.separator.object.elixir', regex: ',' },
1259 <+=?|> { token: 'punctuation.separator.method.elixir', regex: '\\.' },
1260 <+=?|> { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' },
1261 <+=?|> { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' },
1262 <+=?|> { token: 'punctuation.section.function.elixir',
1263 <+=?|> regex: '\\(|\\)' } ],
1264 <+=?|> '#escaped_char':
1265 <+=?|> [ { token: 'constant.character.escape.elixir',
1266 <+=?|> regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ],
1267 <+=?|> '#interpolated_elixir':
1268 <+=?|> [ { token:
1269 <+=?|> [ 'source.elixir.embedded.source',
1270 <+=?|> 'source.elixir.embedded.source.empty' ],
1271 <+=?|> regex: '(#\\{)(\\})' },
1272 <+=?|> { todo:
1273 <+=?|> { token: 'punctuation.section.embedded.elixir',
1274 <+=?|> regex: '#\\{',
1275 <+=?|> push:
1276 <+=?|> [ { token: 'punctuation.section.embedded.elixir',
1277 <+=?|> regex: '\\}',
1278 <+=?|> next: 'pop' },
1279 <+=?|> { include: '#nest_curly_and_self' },
1280 <+=?|> { include: '$self' },
1281 <+=?|> { defaultToken: 'source.elixir.embedded.source' } ] } } ],
1282 <+=?|> '#nest_curly_and_self':
1283 <+=?|> [ { token: 'punctuation.section.scope.elixir',
1284 <+=?|> regex: '\\{',
1285 <+=?|> push:
1286 <+=?|> [ { token: 'punctuation.section.scope.elixir',
1287 <+=?|> regex: '\\}',
1288 <+=?|> next: 'pop' },
1289 <+=?|> { include: '#nest_curly_and_self' } ] },
1290 <+=?|> { include: '$self' } ],
1291 <+=?|> '#regex_sub':
1292 <+=?|> [ { include: '#interpolated_elixir' },
1293 <+=?|> { include: '#escaped_char' },
1294 <+=?|> { token:
1295 <+=?|> [ 'punctuation.definition.arbitrary-repitition.elixir',
1296 <+=?|> 'string.regexp.arbitrary-repitition.elixir',
1297 <+=?|> 'string.regexp.arbitrary-repitition.elixir',
1298 <+=?|> 'punctuation.definition.arbitrary-repitition.elixir' ],
1299 <+=?|> regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' },
1300 <+=?|> { token: 'punctuation.definition.character-class.elixir',
1301 <+=?|> regex: '\\[(?:\\^?\\])?',
1302 <+=?|> push:
1303 <+=?|> [ { token: 'punctuation.definition.character-class.elixir',
1304 <+=?|> regex: '\\]',
1305 <+=?|> next: 'pop' },
1306 <+=?|> { include: '#escaped_char' },
1307 <+=?|> { defaultToken: 'string.regexp.character-class.elixir' } ] },
1308 <+=?|> { token: 'punctuation.definition.group.elixir',
1309 <+=?|> regex: '\\(',
1310 <+=?|> push:
1311 <+=?|> [ { token: 'punctuation.definition.group.elixir',
1312 <+=?|> regex: '\\)',
1313 <+=?|> next: 'pop' },
1314 <+=?|> { include: '#regex_sub' },
1315 <+=?|> { defaultToken: 'string.regexp.group.elixir' } ] },
1316 <+=?|> { token:
1317 <+=?|> [ 'punctuation.definition.comment.elixir',
1318 <+=?|> 'comment.line.number-sign.elixir' ],
1319 <+=?|> regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)',
1320 <+=?|> originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$',
1321 <+=?|> comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] }
1322  
1323 <+=?|> this.normalizeRules();
1324 <+=?|>};
1325  
1326 <+=?|>ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.',
1327 <+=?|> fileTypes: [ 'ex', 'exs' ],
1328 <+=?|> firstLineMatch: '^#!/.*\\belixir',
1329 <+=?|> foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$',
1330 <+=?|> foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)',
1331 <+=?|> keyEquivalent: '^~E',
1332 <+=?|> name: 'Elixir',
1333 <+=?|> scopeName: 'source.elixir' }
1334  
1335  
1336 <+=?|>oop.inherits(ElixirHighlightRules, TextHighlightRules);
1337  
1338 <+=?|>exports.ElixirHighlightRules = ElixirHighlightRules;
1339 <+=?|>});
1340  
1341 <+=?|>define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"], function(require, exports, module) {
1342 <+=?|> "use strict";
1343  
1344 <+=?|> var oop = require("../lib/oop");
1345 <+=?|> var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
1346 <+=?|> var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules;
1347  
1348 <+=?|> var HtmlElixirHighlightRules = function() {
1349 <+=?|> HtmlHighlightRules.call(this);
1350  
1351 <+=?|> var startRules = [
1352 <+=?|> {
1353 <+=?|> regex: "<%%|%%>",
1354 <+=?|> token: "constant.language.escape"
1355 <+=?|> }, {
1356 <+=?|> token : "comment.start.eex",
1357 <+=?|> regex : "<%#",
1358 <+=?|> push : [{
1359 <+=?|> token : "comment.end.eex",
1360 <+=?|> regex: "%>",
1361 <+=?|> next: "pop",
1362 <+=?|> defaultToken:"comment"
1363 <+=?|> }]
1364 <+=?|> }, {
1365 <+=?|> token : "support.elixir_tag",
1366 <+=?|> regex : "<%+(?!>)[-=]?",
1367 <+=?|> push : "elixir-start"
1368 <+=?|> }
1369 <+=?|> ];
1370  
1371 <+=?|> var endRules = [
1372 <+=?|> {
1373 <+=?|> token : "support.elixir_tag",
1374 <+=?|> regex : "%>",
1375 <+=?|> next : "pop"
1376 <+=?|> }, {
1377 <+=?|> token: "comment",
1378 <+=?|> regex: "#(?:[^%]|%[^>])*"
1379 <+=?|> }
1380 <+=?|> ];
1381  
1382 <+=?|> for (var key in this.$rules)
1383 <+=?|> this.$rules[key].unshift.apply(this.$rules[key], startRules);
1384  
1385 <+=?|> this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]);
1386  
1387 <+=?|> this.normalizeRules();
1388 <+=?|> };
1389  
1390  
1391 <+=?|> oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules);
1392  
1393 <+=?|> exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules;
1394 <+=?|>});
1395  
1396 <+=?|>define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) {
1397 <+=?|>"use strict";
1398  
1399 <+=?|>var Range = require("../range").Range;
1400  
1401 <+=?|>var MatchingBraceOutdent = function() {};
1402  
1403 <+=?|>(function() {
1404  
1405 <+=?|> this.checkOutdent = function(line, input) {
1406 <+=?|> if (! /^\s+$/.test(line))
1407 <+=?|> return false;
1408  
1409 <+=?|> return /^\s*\}/.test(input);
1410 <+=?|> };
1411  
1412 <+=?|> this.autoOutdent = function(doc, row) {
1413 <+=?|> var line = doc.getLine(row);
1414 <+=?|> var match = line.match(/^(\s*\})/);
1415  
1416 <+=?|> if (!match) return 0;
1417  
1418 <+=?|> var column = match[1].length;
1419 <+=?|> var openBracePos = doc.findMatchingBracket({row: row, column: column});
1420  
1421 <+=?|> if (!openBracePos || openBracePos.row == row) return 0;
1422  
1423 <+=?|> var indent = this.$getIndent(doc.getLine(openBracePos.row));
1424 <+=?|> doc.replace(new Range(row, 0, row, column-1), indent);
1425 <+=?|> };
1426  
1427 <+=?|> this.$getIndent = function(line) {
1428 <+=?|> return line.match(/^\s*/)[0];
1429 <+=?|> };
1430  
1431 <+=?|>}).call(MatchingBraceOutdent.prototype);
1432  
1433 <+=?|>exports.MatchingBraceOutdent = MatchingBraceOutdent;
1434 <+=?|>});
1435  
1436 <+=?|>define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
1437 <+=?|>"use strict";
1438  
1439 <+=?|>var oop = require("../../lib/oop");
1440 <+=?|>var Range = require("../../range").Range;
1441 <+=?|>var BaseFoldMode = require("./fold_mode").FoldMode;
1442  
1443 <+=?|>var FoldMode = exports.FoldMode = function(commentRegex) {
1444 <+=?|> if (commentRegex) {
1445 <+=?|> this.foldingStartMarker = new RegExp(
1446 <+=?|> this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
1447 <+=?|> );
1448 <+=?|> this.foldingStopMarker = new RegExp(
1449 <+=?|> this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
1450 <+=?|> );
1451 <+=?|> }
1452 <+=?|>};
1453 <+=?|>oop.inherits(FoldMode, BaseFoldMode);
1454  
1455 <+=?|>(function() {
1456  
1457 <+=?|> this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
1458 <+=?|> this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
1459 <+=?|> this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
1460 <+=?|> this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
1461 <+=?|> this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
1462 <+=?|> this._getFoldWidgetBase = this.getFoldWidget;
1463 <+=?|> this.getFoldWidget = function(session, foldStyle, row) {
1464 <+=?|> var line = session.getLine(row);
1465  
1466 <+=?|> if (this.singleLineBlockCommentRe.test(line)) {
1467 <+=?|> if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
1468 <+=?|> return "";
1469 <+=?|> }
1470  
1471 <+=?|> var fw = this._getFoldWidgetBase(session, foldStyle, row);
1472  
1473 <+=?|> if (!fw && this.startRegionRe.test(line))
1474 <+=?|> return "start"; // lineCommentRegionStart
1475  
1476 <+=?|> return fw;
1477 <+=?|> };
1478  
1479 <+=?|> this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
1480 <+=?|> var line = session.getLine(row);
1481  
1482 <+=?|> if (this.startRegionRe.test(line))
1483 <+=?|> return this.getCommentRegionBlock(session, line, row);
1484  
1485 <+=?|> var match = line.match(this.foldingStartMarker);
1486 <+=?|> if (match) {
1487 <+=?|> var i = match.index;
1488  
1489 <+=?|> if (match[1])
1490 <+=?|> return this.openingBracketBlock(session, match[1], row, i);
1491  
1492 <+=?|> var range = session.getCommentFoldRange(row, i + match[0].length, 1);
1493  
1494 <+=?|> if (range && !range.isMultiLine()) {
1495 <+=?|> if (forceMultiline) {
1496 <+=?|> range = this.getSectionRange(session, row);
1497 <+=?|> } else if (foldStyle != "all")
1498 <+=?|> range = null;
1499 <+=?|> }
1500  
1501 <+=?|> return range;
1502 <+=?|> }
1503  
1504 <+=?|> if (foldStyle === "markbegin")
1505 <+=?|> return;
1506  
1507 <+=?|> var match = line.match(this.foldingStopMarker);
1508 <+=?|> if (match) {
1509 <+=?|> var i = match.index + match[0].length;
1510  
1511 <+=?|> if (match[1])
1512 <+=?|> return this.closingBracketBlock(session, match[1], row, i);
1513  
1514 <+=?|> return session.getCommentFoldRange(row, i, -1);
1515 <+=?|> }
1516 <+=?|> };
1517  
1518 <+=?|> this.getSectionRange = function(session, row) {
1519 <+=?|> var line = session.getLine(row);
1520 <+=?|> var startIndent = line.search(/\S/);
1521 <+=?|> var startRow = row;
1522 <+=?|> var startColumn = line.length;
1523 <+=?|> row = row + 1;
1524 <+=?|> var endRow = row;
1525 <+=?|> var maxRow = session.getLength();
1526 <+=?|> while (++row < maxRow) {
1527 <+=?|> line = session.getLine(row);
1528 <+=?|> var indent = line.search(/\S/);
1529 <+=?|> if (indent === -1)
1530 <+=?|> continue;
1531 <+=?|> if (startIndent > indent)
1532 <+=?|> break;
1533 <+=?|> var subRange = this.getFoldWidgetRange(session, "all", row);
1534  
1535 <+=?|> if (subRange) {
1536 <+=?|> if (subRange.start.row <= startRow) {
1537 <+=?|> break;
1538 <+=?|> } else if (subRange.isMultiLine()) {
1539 <+=?|> row = subRange.end.row;
1540 <+=?|> } else if (startIndent == indent) {
1541 <+=?|> break;
1542 <+=?|> }
1543 <+=?|> }
1544 <+=?|> endRow = row;
1545 <+=?|> }
1546  
1547 <+=?|> return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
1548 <+=?|> };
1549 <+=?|> this.getCommentRegionBlock = function(session, line, row) {
1550 <+=?|> var startColumn = line.search(/\s*$/);
1551 <+=?|> var maxRow = session.getLength();
1552 <+=?|> var startRow = row;
1553  
1554 <+=?|> var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
1555 <+=?|> var depth = 1;
1556 <+=?|> while (++row < maxRow) {
1557 <+=?|> line = session.getLine(row);
1558 <+=?|> var m = re.exec(line);
1559 <+=?|> if (!m) continue;
1560 <+=?|> if (m[1]) depth--;
1561 <+=?|> else depth++;
1562  
1563 <+=?|> if (!depth) break;
1564 <+=?|> }
1565  
1566 <+=?|> var endRow = row;
1567 <+=?|> if (endRow > startRow) {
1568 <+=?|> return new Range(startRow, startColumn, endRow, line.length);
1569 <+=?|> }
1570 <+=?|> };
1571  
1572 <+=?|>}).call(FoldMode.prototype);
1573  
1574 <+=?|>});
1575  
1576 <+=?|>define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) {
1577 <+=?|>"use strict";
1578  
1579 <+=?|>var oop = require("../lib/oop");
1580 <+=?|>var TextMode = require("./text").Mode;
1581 <+=?|>var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
1582 <+=?|>var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
1583 <+=?|>var WorkerClient = require("../worker/worker_client").WorkerClient;
1584 <+=?|>var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
1585 <+=?|>var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1586  
1587 <+=?|>var Mode = function() {
1588 <+=?|> this.HighlightRules = JavaScriptHighlightRules;
1589  
1590 <+=?|> this.$outdent = new MatchingBraceOutdent();
1591 <+=?|> this.$behaviour = new CstyleBehaviour();
1592 <+=?|> this.foldingRules = new CStyleFoldMode();
1593 <+=?|>};
1594 <+=?|>oop.inherits(Mode, TextMode);
1595  
1596 <+=?|>(function() {
1597  
1598 <+=?|> this.lineCommentStart = "//";
1599 <+=?|> this.blockComment = {start: "/*", end: "*/"};
1600  
1601 <+=?|> this.getNextLineIndent = function(state, line, tab) {
1602 <+=?|> var indent = this.$getIndent(line);
1603  
1604 <+=?|> var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
1605 <+=?|> var tokens = tokenizedLine.tokens;
1606 <+=?|> var endState = tokenizedLine.state;
1607  
1608 <+=?|> if (tokens.length && tokens[tokens.length-1].type == "comment") {
1609 <+=?|> return indent;
1610 <+=?|> }
1611  
1612 <+=?|> if (state == "start" || state == "no_regex") {
1613 <+=?|> var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
1614 <+=?|> if (match) {
1615 <+=?|> indent += tab;
1616 <+=?|> }
1617 <+=?|> } else if (state == "doc-start") {
1618 <+=?|> if (endState == "start" || endState == "no_regex") {
1619 <+=?|> return "";
1620 <+=?|> }
1621 <+=?|> var match = line.match(/^\s*(\/?)\*/);
1622 <+=?|> if (match) {
1623 <+=?|> if (match[1]) {
1624 <+=?|> indent += " ";
1625 <+=?|> }
1626 <+=?|> indent += "* ";
1627 <+=?|> }
1628 <+=?|> }
1629  
1630 <+=?|> return indent;
1631 <+=?|> };
1632  
1633 <+=?|> this.checkOutdent = function(state, line, input) {
1634 <+=?|> return this.$outdent.checkOutdent(line, input);
1635 <+=?|> };
1636  
1637 <+=?|> this.autoOutdent = function(state, doc, row) {
1638 <+=?|> this.$outdent.autoOutdent(doc, row);
1639 <+=?|> };
1640  
1641 <+=?|> this.createWorker = function(session) {
1642 <+=?|> var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
1643 <+=?|> worker.attachToDocument(session.getDocument());
1644  
1645 <+=?|> worker.on("annotate", function(results) {
1646 <+=?|> session.setAnnotations(results.data);
1647 <+=?|> });
1648  
1649 <+=?|> worker.on("terminate", function() {
1650 <+=?|> session.clearAnnotations();
1651 <+=?|> });
1652  
1653 <+=?|> return worker;
1654 <+=?|> };
1655  
1656 <+=?|> this.$id = "ace/mode/javascript";
1657 <+=?|>}).call(Mode.prototype);
1658  
1659 <+=?|>exports.Mode = Mode;
1660 <+=?|>});
1661  
1662 <+=?|>define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) {
1663 <+=?|>"use strict";
1664  
1665 <+=?|>var propertyMap = {
1666 <+=?|> "background": {"#$0": 1},
1667 <+=?|> "background-color": {"#$0": 1, "transparent": 1, "fixed": 1},
1668 <+=?|> "background-image": {"url('/$0')": 1},
1669 <+=?|> "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1},
1670 <+=?|> "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2},
1671 <+=?|> "background-attachment": {"scroll": 1, "fixed": 1},
1672 <+=?|> "background-size": {"cover": 1, "contain": 1},
1673 <+=?|> "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1},
1674 <+=?|> "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1},
1675 <+=?|> "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1},
1676 <+=?|> "border-color": {"#$0": 1},
1677 <+=?|> "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2},
1678 <+=?|> "border-collapse": {"collapse": 1, "separate": 1},
1679 <+=?|> "bottom": {"px": 1, "em": 1, "%": 1},
1680 <+=?|> "clear": {"left": 1, "right": 1, "both": 1, "none": 1},
1681 <+=?|> "color": {"#$0": 1, "rgb(#$00,0,0)": 1},
1682 <+=?|> "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1},
1683 <+=?|> "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1},
1684 <+=?|> "empty-cells": {"show": 1, "hide": 1},
1685 <+=?|> "float": {"left": 1, "right": 1, "none": 1},
1686 <+=?|> "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1},
1687 <+=?|> "font-size": {"px": 1, "em": 1, "%": 1},
1688 <+=?|> "font-weight": {"bold": 1, "normal": 1},
1689 <+=?|> "font-style": {"italic": 1, "normal": 1},
1690 <+=?|> "font-variant": {"normal": 1, "small-caps": 1},
1691 <+=?|> "height": {"px": 1, "em": 1, "%": 1},
1692 <+=?|> "left": {"px": 1, "em": 1, "%": 1},
1693 <+=?|> "letter-spacing": {"normal": 1},
1694 <+=?|> "line-height": {"normal": 1},
1695 <+=?|> "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1},
1696 <+=?|> "margin": {"px": 1, "em": 1, "%": 1},
1697 <+=?|> "margin-right": {"px": 1, "em": 1, "%": 1},
1698 <+=?|> "margin-left": {"px": 1, "em": 1, "%": 1},
1699 <+=?|> "margin-top": {"px": 1, "em": 1, "%": 1},
1700 <+=?|> "margin-bottom": {"px": 1, "em": 1, "%": 1},
1701 <+=?|> "max-height": {"px": 1, "em": 1, "%": 1},
1702 <+=?|> "max-width": {"px": 1, "em": 1, "%": 1},
1703 <+=?|> "min-height": {"px": 1, "em": 1, "%": 1},
1704 <+=?|> "min-width": {"px": 1, "em": 1, "%": 1},
1705 <+=?|> "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1706 <+=?|> "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1707 <+=?|> "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1708 <+=?|> "padding": {"px": 1, "em": 1, "%": 1},
1709 <+=?|> "padding-top": {"px": 1, "em": 1, "%": 1},
1710 <+=?|> "padding-right": {"px": 1, "em": 1, "%": 1},
1711 <+=?|> "padding-bottom": {"px": 1, "em": 1, "%": 1},
1712 <+=?|> "padding-left": {"px": 1, "em": 1, "%": 1},
1713 <+=?|> "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1714 <+=?|> "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1715 <+=?|> "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1},
1716 <+=?|> "right": {"px": 1, "em": 1, "%": 1},
1717 <+=?|> "table-layout": {"fixed": 1, "auto": 1},
1718 <+=?|> "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1},
1719 <+=?|> "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1},
1720 <+=?|> "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1},
1721 <+=?|> "top": {"px": 1, "em": 1, "%": 1},
1722 <+=?|> "vertical-align": {"top": 1, "bottom": 1},
1723 <+=?|> "visibility": {"hidden": 1, "visible": 1},
1724 <+=?|> "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1},
1725 <+=?|> "width": {"px": 1, "em": 1, "%": 1},
1726 <+=?|> "word-spacing": {"normal": 1},
1727 <+=?|> "filter": {"alpha(opacity=$0100)": 1},
1728  
1729 <+=?|> "text-shadow": {"$02px 2px 2px #777": 1},
1730 <+=?|> "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1},
1731 <+=?|> "-moz-border-radius": 1,
1732 <+=?|> "-moz-border-radius-topright": 1,
1733 <+=?|> "-moz-border-radius-bottomright": 1,
1734 <+=?|> "-moz-border-radius-topleft": 1,
1735 <+=?|> "-moz-border-radius-bottomleft": 1,
1736 <+=?|> "-webkit-border-radius": 1,
1737 <+=?|> "-webkit-border-top-right-radius": 1,
1738 <+=?|> "-webkit-border-top-left-radius": 1,
1739 <+=?|> "-webkit-border-bottom-right-radius": 1,
1740 <+=?|> "-webkit-border-bottom-left-radius": 1,
1741 <+=?|> "-moz-box-shadow": 1,
1742 <+=?|> "-webkit-box-shadow": 1,
1743 <+=?|> "transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1744 <+=?|> "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1745 <+=?|> "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 }
1746 <+=?|>};
1747  
1748 <+=?|>var CssCompletions = function() {
1749  
1750 <+=?|>};
1751  
1752 <+=?|>(function() {
1753  
1754 <+=?|> this.completionsDefined = false;
1755  
1756 <+=?|> this.defineCompletions = function() {
1757 <+=?|> if (document) {
1758 <+=?|> var style = document.createElement('c').style;
1759  
1760 <+=?|> for (var i in style) {
1761 <+=?|> if (typeof style[i] !== 'string')
1762 <+=?|> continue;
1763  
1764 <+=?|> var name = i.replace(/[A-Z]/g, function(x) {
1765 <+=?|> return '-' + x.toLowerCase();
1766 <+=?|> });
1767  
1768 <+=?|> if (!propertyMap.hasOwnProperty(name))
1769 <+=?|> propertyMap[name] = 1;
1770 <+=?|> }
1771 <+=?|> }
1772  
1773 <+=?|> this.completionsDefined = true;
1774 <+=?|> }
1775  
1776 <+=?|> this.getCompletions = function(state, session, pos, prefix) {
1777 <+=?|> if (!this.completionsDefined) {
1778 <+=?|> this.defineCompletions();
1779 <+=?|> }
1780  
1781 <+=?|> var token = session.getTokenAt(pos.row, pos.column);
1782  
1783 <+=?|> if (!token)
1784 <+=?|> return [];
1785 <+=?|> if (state==='ruleset'){
1786 <+=?|> var line = session.getLine(pos.row).substr(0, pos.column);
1787 <+=?|> if (/:[^;]+$/.test(line)) {
1788 <+=?|> /([\w\-]+):[^:]*$/.test(line);
1789  
1790 <+=?|> return this.getPropertyValueCompletions(state, session, pos, prefix);
1791 <+=?|> } else {
1792 <+=?|> return this.getPropertyCompletions(state, session, pos, prefix);
1793 <+=?|> }
1794 <+=?|> }
1795  
1796 <+=?|> return [];
1797 <+=?|> };
1798  
1799 <+=?|> this.getPropertyCompletions = function(state, session, pos, prefix) {
1800 <+=?|> var properties = Object.keys(propertyMap);
1801 <+=?|> return properties.map(function(property){
1802 <+=?|> return {
1803 <+=?|> caption: property,
1804 <+=?|> snippet: property + ': $0',
1805 <+=?|> meta: "property",
1806 <+=?|> score: Number.MAX_VALUE
1807 <+=?|> };
1808 <+=?|> });
1809 <+=?|> };
1810  
1811 <+=?|> this.getPropertyValueCompletions = function(state, session, pos, prefix) {
1812 <+=?|> var line = session.getLine(pos.row).substr(0, pos.column);
1813 <+=?|> var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
1814  
1815 <+=?|> if (!property)
1816 <+=?|> return [];
1817 <+=?|> var values = [];
1818 <+=?|> if (property in propertyMap && typeof propertyMap[property] === "object") {
1819 <+=?|> values = Object.keys(propertyMap[property]);
1820 <+=?|> }
1821 <+=?|> return values.map(function(value){
1822 <+=?|> return {
1823 <+=?|> caption: value,
1824 <+=?|> snippet: value,
1825 <+=?|> meta: "property value",
1826 <+=?|> score: Number.MAX_VALUE
1827 <+=?|> };
1828 <+=?|> });
1829 <+=?|> };
1830  
1831 <+=?|>}).call(CssCompletions.prototype);
1832  
1833 <+=?|>exports.CssCompletions = CssCompletions;
1834 <+=?|>});
1835  
1836 <+=?|>define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) {
1837 <+=?|>"use strict";
1838  
1839 <+=?|>var oop = require("../../lib/oop");
1840 <+=?|>var Behaviour = require("../behaviour").Behaviour;
1841 <+=?|>var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
1842 <+=?|>var TokenIterator = require("../../token_iterator").TokenIterator;
1843  
1844 <+=?|>var CssBehaviour = function () {
1845  
1846 <+=?|> this.inherit(CstyleBehaviour);
1847  
1848 <+=?|> this.add("colon", "insertion", function (state, action, editor, session, text) {
1849 <+=?|> if (text === ':') {
1850 <+=?|> var cursor = editor.getCursorPosition();
1851 <+=?|> var iterator = new TokenIterator(session, cursor.row, cursor.column);
1852 <+=?|> var token = iterator.getCurrentToken();
1853 <+=?|> if (token && token.value.match(/\s+/)) {
1854 <+=?|> token = iterator.stepBackward();
1855 <+=?|> }
1856 <+=?|> if (token && token.type === 'support.type') {
1857 <+=?|> var line = session.doc.getLine(cursor.row);
1858 <+=?|> var rightChar = line.substring(cursor.column, cursor.column + 1);
1859 <+=?|> if (rightChar === ':') {
1860 <+=?|> return {
1861 <+=?|> text: '',
1862 <+=?|> selection: [1, 1]
1863 <+=?|> }
1864 <+=?|> }
1865 <+=?|> if (!line.substring(cursor.column).match(/^\s*;/)) {
1866 <+=?|> return {
1867 <+=?|> text: ':;',
1868 <+=?|> selection: [1, 1]
1869 <+=?|> }
1870 <+=?|> }
1871 <+=?|> }
1872 <+=?|> }
1873 <+=?|> });
1874  
1875 <+=?|> this.add("colon", "deletion", function (state, action, editor, session, range) {
1876 <+=?|> var selected = session.doc.getTextRange(range);
1877 <+=?|> if (!range.isMultiLine() && selected === ':') {
1878 <+=?|> var cursor = editor.getCursorPosition();
1879 <+=?|> var iterator = new TokenIterator(session, cursor.row, cursor.column);
1880 <+=?|> var token = iterator.getCurrentToken();
1881 <+=?|> if (token && token.value.match(/\s+/)) {
1882 <+=?|> token = iterator.stepBackward();
1883 <+=?|> }
1884 <+=?|> if (token && token.type === 'support.type') {
1885 <+=?|> var line = session.doc.getLine(range.start.row);
1886 <+=?|> var rightChar = line.substring(range.end.column, range.end.column + 1);
1887 <+=?|> if (rightChar === ';') {
1888 <+=?|> range.end.column ++;
1889 <+=?|> return range;
1890 <+=?|> }
1891 <+=?|> }
1892 <+=?|> }
1893 <+=?|> });
1894  
1895 <+=?|> this.add("semicolon", "insertion", function (state, action, editor, session, text) {
1896 <+=?|> if (text === ';') {
1897 <+=?|> var cursor = editor.getCursorPosition();
1898 <+=?|> var line = session.doc.getLine(cursor.row);
1899 <+=?|> var rightChar = line.substring(cursor.column, cursor.column + 1);
1900 <+=?|> if (rightChar === ';') {
1901 <+=?|> return {
1902 <+=?|> text: '',
1903 <+=?|> selection: [1, 1]
1904 <+=?|> }
1905 <+=?|> }
1906 <+=?|> }
1907 <+=?|> });
1908  
1909 <+=?|>}
1910 <+=?|>oop.inherits(CssBehaviour, CstyleBehaviour);
1911  
1912 <+=?|>exports.CssBehaviour = CssBehaviour;
1913 <+=?|>});
1914  
1915 <+=?|>define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) {
1916 <+=?|>"use strict";
1917  
1918 <+=?|>var oop = require("../lib/oop");
1919 <+=?|>var TextMode = require("./text").Mode;
1920 <+=?|>var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
1921 <+=?|>var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
1922 <+=?|>var WorkerClient = require("../worker/worker_client").WorkerClient;
1923 <+=?|>var CssCompletions = require("./css_completions").CssCompletions;
1924 <+=?|>var CssBehaviour = require("./behaviour/css").CssBehaviour;
1925 <+=?|>var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1926  
1927 <+=?|>var Mode = function() {
1928 <+=?|> this.HighlightRules = CssHighlightRules;
1929 <+=?|> this.$outdent = new MatchingBraceOutdent();
1930 <+=?|> this.$behaviour = new CssBehaviour();
1931 <+=?|> this.$completer = new CssCompletions();
1932 <+=?|> this.foldingRules = new CStyleFoldMode();
1933 <+=?|>};
1934 <+=?|>oop.inherits(Mode, TextMode);
1935  
1936 <+=?|>(function() {
1937  
1938 <+=?|> this.foldingRules = "cStyle";
1939 <+=?|> this.blockComment = {start: "/*", end: "*/"};
1940  
1941 <+=?|> this.getNextLineIndent = function(state, line, tab) {
1942 <+=?|> var indent = this.$getIndent(line);
1943 <+=?|> var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
1944 <+=?|> if (tokens.length && tokens[tokens.length-1].type == "comment") {
1945 <+=?|> return indent;
1946 <+=?|> }
1947  
1948 <+=?|> var match = line.match(/^.*\{\s*$/);
1949 <+=?|> if (match) {
1950 <+=?|> indent += tab;
1951 <+=?|> }
1952  
1953 <+=?|> return indent;
1954 <+=?|> };
1955  
1956 <+=?|> this.checkOutdent = function(state, line, input) {
1957 <+=?|> return this.$outdent.checkOutdent(line, input);
1958 <+=?|> };
1959  
1960 <+=?|> this.autoOutdent = function(state, doc, row) {
1961 <+=?|> this.$outdent.autoOutdent(doc, row);
1962 <+=?|> };
1963  
1964 <+=?|> this.getCompletions = function(state, session, pos, prefix) {
1965 <+=?|> return this.$completer.getCompletions(state, session, pos, prefix);
1966 <+=?|> };
1967  
1968 <+=?|> this.createWorker = function(session) {
1969 <+=?|> var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
1970 <+=?|> worker.attachToDocument(session.getDocument());
1971  
1972 <+=?|> worker.on("annotate", function(e) {
1973 <+=?|> session.setAnnotations(e.data);
1974 <+=?|> });
1975  
1976 <+=?|> worker.on("terminate", function() {
1977 <+=?|> session.clearAnnotations();
1978 <+=?|> });
1979  
1980 <+=?|> return worker;
1981 <+=?|> };
1982  
1983 <+=?|> this.$id = "ace/mode/css";
1984 <+=?|>}).call(Mode.prototype);
1985  
1986 <+=?|>exports.Mode = Mode;
1987  
1988 <+=?|>});
1989  
1990 <+=?|>define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) {
1991 <+=?|>"use strict";
1992  
1993 <+=?|>var oop = require("../../lib/oop");
1994 <+=?|>var Behaviour = require("../behaviour").Behaviour;
1995 <+=?|>var TokenIterator = require("../../token_iterator").TokenIterator;
1996 <+=?|>var lang = require("../../lib/lang");
1997  
1998 <+=?|>function is(token, type) {
1999 <+=?|> return token.type.lastIndexOf(type + ".xml") > -1;
2000 <+=?|>}
2001  
2002 <+=?|>var XmlBehaviour = function () {
2003  
2004 <+=?|> this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
2005 <+=?|> if (text == '"' || text == "'") {
2006 <+=?|> var quote = text;
2007 <+=?|> var selected = session.doc.getTextRange(editor.getSelectionRange());
2008 <+=?|> if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) {
2009 <+=?|> return {
2010 <+=?|> text: quote + selected + quote,
2011 <+=?|> selection: false
2012 <+=?|> };
2013 <+=?|> }
2014  
2015 <+=?|> var cursor = editor.getCursorPosition();
2016 <+=?|> var line = session.doc.getLine(cursor.row);
2017 <+=?|> var rightChar = line.substring(cursor.column, cursor.column + 1);
2018 <+=?|> var iterator = new TokenIterator(session, cursor.row, cursor.column);
2019 <+=?|> var token = iterator.getCurrentToken();
2020  
2021 <+=?|> if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) {
2022 <+=?|> return {
2023 <+=?|> text: "",
2024 <+=?|> selection: [1, 1]
2025 <+=?|> };
2026 <+=?|> }
2027  
2028 <+=?|> if (!token)
2029 <+=?|> token = iterator.stepBackward();
2030  
2031 <+=?|> if (!token)
2032 <+=?|> return;
2033  
2034 <+=?|> while (is(token, "tag-whitespace") || is(token, "whitespace")) {
2035 <+=?|> token = iterator.stepBackward();
2036 <+=?|> }
2037 <+=?|> var rightSpace = !rightChar || rightChar.match(/\s/);
2038 <+=?|> if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) {
2039 <+=?|> return {
2040 <+=?|> text: quote + quote,
2041 <+=?|> selection: [1, 1]
2042 <+=?|> };
2043 <+=?|> }
2044 <+=?|> }
2045 <+=?|> });
2046  
2047 <+=?|> this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {
2048 <+=?|> var selected = session.doc.getTextRange(range);
2049 <+=?|> if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
2050 <+=?|> var line = session.doc.getLine(range.start.row);
2051 <+=?|> var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
2052 <+=?|> if (rightChar == selected) {
2053 <+=?|> range.end.column++;
2054 <+=?|> return range;
2055 <+=?|> }
2056 <+=?|> }
2057 <+=?|> });
2058  
2059 <+=?|> this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
2060 <+=?|> if (text == '>') {
2061 <+=?|> var position = editor.getSelectionRange().start;
2062 <+=?|> var iterator = new TokenIterator(session, position.row, position.column);
2063 <+=?|> var token = iterator.getCurrentToken() || iterator.stepBackward();
2064 <+=?|> if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value")))
2065 <+=?|> return;
2066 <+=?|> if (is(token, "reference.attribute-value"))
2067 <+=?|> return;
2068 <+=?|> if (is(token, "attribute-value")) {
2069 <+=?|> var firstChar = token.value.charAt(0);
2070 <+=?|> if (firstChar == '"' || firstChar == "'") {
2071 <+=?|> var lastChar = token.value.charAt(token.value.length - 1);
2072 <+=?|> var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;
2073 <+=?|> if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)
2074 <+=?|> return;
2075 <+=?|> }
2076 <+=?|> }
2077 <+=?|> while (!is(token, "tag-name")) {
2078 <+=?|> token = iterator.stepBackward();
2079 <+=?|> if (token.value == "<") {
2080 <+=?|> token = iterator.stepForward();
2081 <+=?|> break;
2082 <+=?|> }
2083 <+=?|> }
2084  
2085 <+=?|> var tokenRow = iterator.getCurrentTokenRow();
2086 <+=?|> var tokenColumn = iterator.getCurrentTokenColumn();
2087 <+=?|> if (is(iterator.stepBackward(), "end-tag-open"))
2088 <+=?|> return;
2089  
2090 <+=?|> var element = token.value;
2091 <+=?|> if (tokenRow == position.row)
2092 <+=?|> element = element.substring(0, position.column - tokenColumn);
2093  
2094 <+=?|> if (this.voidElements.hasOwnProperty(element.toLowerCase()))
2095 <+=?|> return;
2096  
2097 <+=?|> return {
2098 <+=?|> text: ">" + "</" + element + ">",
2099 <+=?|> selection: [1, 1]
2100 <+=?|> };
2101 <+=?|> }
2102 <+=?|> });
2103  
2104 <+=?|> this.add("autoindent", "insertion", function (state, action, editor, session, text) {
2105 <+=?|> if (text == "\n") {
2106 <+=?|> var cursor = editor.getCursorPosition();
2107 <+=?|> var line = session.getLine(cursor.row);
2108 <+=?|> var iterator = new TokenIterator(session, cursor.row, cursor.column);
2109 <+=?|> var token = iterator.getCurrentToken();
2110  
2111 <+=?|> if (token && token.type.indexOf("tag-close") !== -1) {
2112 <+=?|> if (token.value == "/>")
2113 <+=?|> return;
2114 <+=?|> while (token && token.type.indexOf("tag-name") === -1) {
2115 <+=?|> token = iterator.stepBackward();
2116 <+=?|> }
2117  
2118 <+=?|> if (!token) {
2119 <+=?|> return;
2120 <+=?|> }
2121  
2122 <+=?|> var tag = token.value;
2123 <+=?|> var row = iterator.getCurrentTokenRow();
2124 <+=?|> token = iterator.stepBackward();
2125 <+=?|> if (!token || token.type.indexOf("end-tag") !== -1) {
2126 <+=?|> return;
2127 <+=?|> }
2128  
2129 <+=?|> if (this.voidElements && !this.voidElements[tag]) {
2130 <+=?|> var nextToken = session.getTokenAt(cursor.row, cursor.column+1);
2131 <+=?|> var line = session.getLine(row);
2132 <+=?|> var nextIndent = this.$getIndent(line);
2133 <+=?|> var indent = nextIndent + session.getTabString();
2134  
2135 <+=?|> if (nextToken && nextToken.value === "</") {
2136 <+=?|> return {
2137 <+=?|> text: "\n" + indent + "\n" + nextIndent,
2138 <+=?|> selection: [1, indent.length, 1, indent.length]
2139 <+=?|> };
2140 <+=?|> } else {
2141 <+=?|> return {
2142 <+=?|> text: "\n" + indent
2143 <+=?|> };
2144 <+=?|> }
2145 <+=?|> }
2146 <+=?|> }
2147 <+=?|> }
2148 <+=?|> });
2149  
2150 <+=?|>};
2151  
2152 <+=?|>oop.inherits(XmlBehaviour, Behaviour);
2153  
2154 <+=?|>exports.XmlBehaviour = XmlBehaviour;
2155 <+=?|>});
2156  
2157 <+=?|>define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) {
2158 <+=?|>"use strict";
2159  
2160 <+=?|>var oop = require("../../lib/oop");
2161 <+=?|>var BaseFoldMode = require("./fold_mode").FoldMode;
2162  
2163 <+=?|>var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
2164 <+=?|> this.defaultMode = defaultMode;
2165 <+=?|> this.subModes = subModes;
2166 <+=?|>};
2167 <+=?|>oop.inherits(FoldMode, BaseFoldMode);
2168  
2169 <+=?|>(function() {
2170  
2171  
2172 <+=?|> this.$getMode = function(state) {
2173 <+=?|> if (typeof state != "string")
2174 <+=?|> state = state[0];
2175 <+=?|> for (var key in this.subModes) {
2176 <+=?|> if (state.indexOf(key) === 0)
2177 <+=?|> return this.subModes[key];
2178 <+=?|> }
2179 <+=?|> return null;
2180 <+=?|> };
2181  
2182 <+=?|> this.$tryMode = function(state, session, foldStyle, row) {
2183 <+=?|> var mode = this.$getMode(state);
2184 <+=?|> return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
2185 <+=?|> };
2186  
2187 <+=?|> this.getFoldWidget = function(session, foldStyle, row) {
2188 <+=?|> return (
2189 <+=?|> this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
2190 <+=?|> this.$tryMode(session.getState(row), session, foldStyle, row) ||
2191 <+=?|> this.defaultMode.getFoldWidget(session, foldStyle, row)
2192 <+=?|> );
2193 <+=?|> };
2194  
2195 <+=?|> this.getFoldWidgetRange = function(session, foldStyle, row) {
2196 <+=?|> var mode = this.$getMode(session.getState(row-1));
2197  
2198 <+=?|> if (!mode || !mode.getFoldWidget(session, foldStyle, row))
2199 <+=?|> mode = this.$getMode(session.getState(row));
2200  
2201 <+=?|> if (!mode || !mode.getFoldWidget(session, foldStyle, row))
2202 <+=?|> mode = this.defaultMode;
2203  
2204 <+=?|> return mode.getFoldWidgetRange(session, foldStyle, row);
2205 <+=?|> };
2206  
2207 <+=?|>}).call(FoldMode.prototype);
2208  
2209 <+=?|>});
2210  
2211 <+=?|>define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module) {
2212 <+=?|>"use strict";
2213  
2214 <+=?|>var oop = require("../../lib/oop");
2215 <+=?|>var lang = require("../../lib/lang");
2216 <+=?|>var Range = require("../../range").Range;
2217 <+=?|>var BaseFoldMode = require("./fold_mode").FoldMode;
2218 <+=?|>var TokenIterator = require("../../token_iterator").TokenIterator;
2219  
2220 <+=?|>var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) {
2221 <+=?|> BaseFoldMode.call(this);
2222 <+=?|> this.voidElements = voidElements || {};
2223 <+=?|> this.optionalEndTags = oop.mixin({}, this.voidElements);
2224 <+=?|> if (optionalEndTags)
2225 <+=?|> oop.mixin(this.optionalEndTags, optionalEndTags);
2226  
2227 <+=?|>};
2228 <+=?|>oop.inherits(FoldMode, BaseFoldMode);
2229  
2230 <+=?|>var Tag = function() {
2231 <+=?|> this.tagName = "";
2232 <+=?|> this.closing = false;
2233 <+=?|> this.selfClosing = false;
2234 <+=?|> this.start = {row: 0, column: 0};
2235 <+=?|> this.end = {row: 0, column: 0};
2236 <+=?|>};
2237  
2238 <+=?|>function is(token, type) {
2239 <+=?|> return token.type.lastIndexOf(type + ".xml") > -1;
2240 <+=?|>}
2241  
2242 <+=?|>(function() {
2243  
2244 <+=?|> this.getFoldWidget = function(session, foldStyle, row) {
2245 <+=?|> var tag = this._getFirstTagInLine(session, row);
2246  
2247 <+=?|> if (!tag)
2248 <+=?|> return "";
2249  
2250 <+=?|> if (tag.closing || (!tag.tagName && tag.selfClosing))
2251 <+=?|> return foldStyle == "markbeginend" ? "end" : "";
2252  
2253 <+=?|> if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))
2254 <+=?|> return "";
2255  
2256 <+=?|> if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))
2257 <+=?|> return "";
2258  
2259 <+=?|> return "start";
2260 <+=?|> };
2261 <+=?|> this._getFirstTagInLine = function(session, row) {
2262 <+=?|> var tokens = session.getTokens(row);
2263 <+=?|> var tag = new Tag();
2264  
2265 <+=?|> for (var i = 0; i < tokens.length; i++) {
2266 <+=?|> var token = tokens[i];
2267 <+=?|> if (is(token, "tag-open")) {
2268 <+=?|> tag.end.column = tag.start.column + token.value.length;
2269 <+=?|> tag.closing = is(token, "end-tag-open");
2270 <+=?|> token = tokens[++i];
2271 <+=?|> if (!token)
2272 <+=?|> return null;
2273 <+=?|> tag.tagName = token.value;
2274 <+=?|> tag.end.column += token.value.length;
2275 <+=?|> for (i++; i < tokens.length; i++) {
2276 <+=?|> token = tokens[i];
2277 <+=?|> tag.end.column += token.value.length;
2278 <+=?|> if (is(token, "tag-close")) {
2279 <+=?|> tag.selfClosing = token.value == '/>';
2280 <+=?|> break;
2281 <+=?|> }
2282 <+=?|> }
2283 <+=?|> return tag;
2284 <+=?|> } else if (is(token, "tag-close")) {
2285 <+=?|> tag.selfClosing = token.value == '/>';
2286 <+=?|> return tag;
2287 <+=?|> }
2288 <+=?|> tag.start.column += token.value.length;
2289 <+=?|> }
2290  
2291 <+=?|> return null;
2292 <+=?|> };
2293  
2294 <+=?|> this._findEndTagInLine = function(session, row, tagName, startColumn) {
2295 <+=?|> var tokens = session.getTokens(row);
2296 <+=?|> var column = 0;
2297 <+=?|> for (var i = 0; i < tokens.length; i++) {
2298 <+=?|> var token = tokens[i];
2299 <+=?|> column += token.value.length;
2300 <+=?|> if (column < startColumn)
2301 <+=?|> continue;
2302 <+=?|> if (is(token, "end-tag-open")) {
2303 <+=?|> token = tokens[i + 1];
2304 <+=?|> if (token && token.value == tagName)
2305 <+=?|> return true;
2306 <+=?|> }
2307 <+=?|> }
2308 <+=?|> return false;
2309 <+=?|> };
2310 <+=?|> this._readTagForward = function(iterator) {
2311 <+=?|> var token = iterator.getCurrentToken();
2312 <+=?|> if (!token)
2313 <+=?|> return null;
2314  
2315 <+=?|> var tag = new Tag();
2316 <+=?|> do {
2317 <+=?|> if (is(token, "tag-open")) {
2318 <+=?|> tag.closing = is(token, "end-tag-open");
2319 <+=?|> tag.start.row = iterator.getCurrentTokenRow();
2320 <+=?|> tag.start.column = iterator.getCurrentTokenColumn();
2321 <+=?|> } else if (is(token, "tag-name")) {
2322 <+=?|> tag.tagName = token.value;
2323 <+=?|> } else if (is(token, "tag-close")) {
2324 <+=?|> tag.selfClosing = token.value == "/>";
2325 <+=?|> tag.end.row = iterator.getCurrentTokenRow();
2326 <+=?|> tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
2327 <+=?|> iterator.stepForward();
2328 <+=?|> return tag;
2329 <+=?|> }
2330 <+=?|> } while(token = iterator.stepForward());
2331  
2332 <+=?|> return null;
2333 <+=?|> };
2334  
2335 <+=?|> this._readTagBackward = function(iterator) {
2336 <+=?|> var token = iterator.getCurrentToken();
2337 <+=?|> if (!token)
2338 <+=?|> return null;
2339  
2340 <+=?|> var tag = new Tag();
2341 <+=?|> do {
2342 <+=?|> if (is(token, "tag-open")) {
2343 <+=?|> tag.closing = is(token, "end-tag-open");
2344 <+=?|> tag.start.row = iterator.getCurrentTokenRow();
2345 <+=?|> tag.start.column = iterator.getCurrentTokenColumn();
2346 <+=?|> iterator.stepBackward();
2347 <+=?|> return tag;
2348 <+=?|> } else if (is(token, "tag-name")) {
2349 <+=?|> tag.tagName = token.value;
2350 <+=?|> } else if (is(token, "tag-close")) {
2351 <+=?|> tag.selfClosing = token.value == "/>";
2352 <+=?|> tag.end.row = iterator.getCurrentTokenRow();
2353 <+=?|> tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
2354 <+=?|> }
2355 <+=?|> } while(token = iterator.stepBackward());
2356  
2357 <+=?|> return null;
2358 <+=?|> };
2359  
2360 <+=?|> this._pop = function(stack, tag) {
2361 <+=?|> while (stack.length) {
2362  
2363 <+=?|> var top = stack[stack.length-1];
2364 <+=?|> if (!tag || top.tagName == tag.tagName) {
2365 <+=?|> return stack.pop();
2366 <+=?|> }
2367 <+=?|> else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
2368 <+=?|> stack.pop();
2369 <+=?|> continue;
2370 <+=?|> } else {
2371 <+=?|> return null;
2372 <+=?|> }
2373 <+=?|> }
2374 <+=?|> };
2375  
2376 <+=?|> this.getFoldWidgetRange = function(session, foldStyle, row) {
2377 <+=?|> var firstTag = this._getFirstTagInLine(session, row);
2378  
2379 <+=?|> if (!firstTag)
2380 <+=?|> return null;
2381  
2382 <+=?|> var isBackward = firstTag.closing || firstTag.selfClosing;
2383 <+=?|> var stack = [];
2384 <+=?|> var tag;
2385  
2386 <+=?|> if (!isBackward) {
2387 <+=?|> var iterator = new TokenIterator(session, row, firstTag.start.column);
2388 <+=?|> var start = {
2389 <+=?|> row: row,
2390 <+=?|> column: firstTag.start.column + firstTag.tagName.length + 2
2391 <+=?|> };
2392 <+=?|> if (firstTag.start.row == firstTag.end.row)
2393 <+=?|> start.column = firstTag.end.column;
2394 <+=?|> while (tag = this._readTagForward(iterator)) {
2395 <+=?|> if (tag.selfClosing) {
2396 <+=?|> if (!stack.length) {
2397 <+=?|> tag.start.column += tag.tagName.length + 2;
2398 <+=?|> tag.end.column -= 2;
2399 <+=?|> return Range.fromPoints(tag.start, tag.end);
2400 <+=?|> } else
2401 <+=?|> continue;
2402 <+=?|> }
2403  
2404 <+=?|> if (tag.closing) {
2405 <+=?|> this._pop(stack, tag);
2406 <+=?|> if (stack.length == 0)
2407 <+=?|> return Range.fromPoints(start, tag.start);
2408 <+=?|> }
2409 <+=?|> else {
2410 <+=?|> stack.push(tag);
2411 <+=?|> }
2412 <+=?|> }
2413 <+=?|> }
2414 <+=?|> else {
2415 <+=?|> var iterator = new TokenIterator(session, row, firstTag.end.column);
2416 <+=?|> var end = {
2417 <+=?|> row: row,
2418 <+=?|> column: firstTag.start.column
2419 <+=?|> };
2420  
2421 <+=?|> while (tag = this._readTagBackward(iterator)) {
2422 <+=?|> if (tag.selfClosing) {
2423 <+=?|> if (!stack.length) {
2424 <+=?|> tag.start.column += tag.tagName.length + 2;
2425 <+=?|> tag.end.column -= 2;
2426 <+=?|> return Range.fromPoints(tag.start, tag.end);
2427 <+=?|> } else
2428 <+=?|> continue;
2429 <+=?|> }
2430  
2431 <+=?|> if (!tag.closing) {
2432 <+=?|> this._pop(stack, tag);
2433 <+=?|> if (stack.length == 0) {
2434 <+=?|> tag.start.column += tag.tagName.length + 2;
2435 <+=?|> if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)
2436 <+=?|> tag.start.column = tag.end.column;
2437 <+=?|> return Range.fromPoints(tag.start, end);
2438 <+=?|> }
2439 <+=?|> }
2440 <+=?|> else {
2441 <+=?|> stack.push(tag);
2442 <+=?|> }
2443 <+=?|> }
2444 <+=?|> }
2445  
2446 <+=?|> };
2447  
2448 <+=?|>}).call(FoldMode.prototype);
2449  
2450 <+=?|>});
2451  
2452 <+=?|>define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) {
2453 <+=?|>"use strict";
2454  
2455 <+=?|>var oop = require("../../lib/oop");
2456 <+=?|>var MixedFoldMode = require("./mixed").FoldMode;
2457 <+=?|>var XmlFoldMode = require("./xml").FoldMode;
2458 <+=?|>var CStyleFoldMode = require("./cstyle").FoldMode;
2459  
2460 <+=?|>var FoldMode = exports.FoldMode = function(voidElements, optionalTags) {
2461 <+=?|> MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {
2462 <+=?|> "js-": new CStyleFoldMode(),
2463 <+=?|> "css-": new CStyleFoldMode()
2464 <+=?|> });
2465 <+=?|>};
2466  
2467 <+=?|>oop.inherits(FoldMode, MixedFoldMode);
2468  
2469 <+=?|>});
2470  
2471 <+=?|>define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) {
2472 <+=?|>"use strict";
2473  
2474 <+=?|>var TokenIterator = require("../token_iterator").TokenIterator;
2475  
2476 <+=?|>var commonAttributes = [
2477 <+=?|> "accesskey",
2478 <+=?|> "class",
2479 <+=?|> "contenteditable",
2480 <+=?|> "contextmenu",
2481 <+=?|> "dir",
2482 <+=?|> "draggable",
2483 <+=?|> "dropzone",
2484 <+=?|> "hidden",
2485 <+=?|> "id",
2486 <+=?|> "inert",
2487 <+=?|> "itemid",
2488 <+=?|> "itemprop",
2489 <+=?|> "itemref",
2490 <+=?|> "itemscope",
2491 <+=?|> "itemtype",
2492 <+=?|> "lang",
2493 <+=?|> "spellcheck",
2494 <+=?|> "style",
2495 <+=?|> "tabindex",
2496 <+=?|> "title",
2497 <+=?|> "translate"
2498 <+=?|>];
2499  
2500 <+=?|>var eventAttributes = [
2501 <+=?|> "onabort",
2502 <+=?|> "onblur",
2503 <+=?|> "oncancel",
2504 <+=?|> "oncanplay",
2505 <+=?|> "oncanplaythrough",
2506 <+=?|> "onchange",
2507 <+=?|> "onclick",
2508 <+=?|> "onclose",
2509 <+=?|> "oncontextmenu",
2510 <+=?|> "oncuechange",
2511 <+=?|> "ondblclick",
2512 <+=?|> "ondrag",
2513 <+=?|> "ondragend",
2514 <+=?|> "ondragenter",
2515 <+=?|> "ondragleave",
2516 <+=?|> "ondragover",
2517 <+=?|> "ondragstart",
2518 <+=?|> "ondrop",
2519 <+=?|> "ondurationchange",
2520 <+=?|> "onemptied",
2521 <+=?|> "onended",
2522 <+=?|> "onerror",
2523 <+=?|> "onfocus",
2524 <+=?|> "oninput",
2525 <+=?|> "oninvalid",
2526 <+=?|> "onkeydown",
2527 <+=?|> "onkeypress",
2528 <+=?|> "onkeyup",
2529 <+=?|> "onload",
2530 <+=?|> "onloadeddata",
2531 <+=?|> "onloadedmetadata",
2532 <+=?|> "onloadstart",
2533 <+=?|> "onmousedown",
2534 <+=?|> "onmousemove",
2535 <+=?|> "onmouseout",
2536 <+=?|> "onmouseover",
2537 <+=?|> "onmouseup",
2538 <+=?|> "onmousewheel",
2539 <+=?|> "onpause",
2540 <+=?|> "onplay",
2541 <+=?|> "onplaying",
2542 <+=?|> "onprogress",
2543 <+=?|> "onratechange",
2544 <+=?|> "onreset",
2545 <+=?|> "onscroll",
2546 <+=?|> "onseeked",
2547 <+=?|> "onseeking",
2548 <+=?|> "onselect",
2549 <+=?|> "onshow",
2550 <+=?|> "onstalled",
2551 <+=?|> "onsubmit",
2552 <+=?|> "onsuspend",
2553 <+=?|> "ontimeupdate",
2554 <+=?|> "onvolumechange",
2555 <+=?|> "onwaiting"
2556 <+=?|>];
2557  
2558 <+=?|>var globalAttributes = commonAttributes.concat(eventAttributes);
2559  
2560 <+=?|>var attributeMap = {
2561 <+=?|> "html": {"manifest": 1},
2562 <+=?|> "head": {},
2563 <+=?|> "title": {},
2564 <+=?|> "base": {"href": 1, "target": 1},
2565 <+=?|> "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1},
2566 <+=?|> "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2567 <+=?|> "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2568 <+=?|> "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2569 <+=?|> "noscript": {"href": 1},
2570 <+=?|> "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1},
2571 <+=?|> "section": {},
2572 <+=?|> "nav": {},
2573 <+=?|> "article": {"pubdate": 1},
2574 <+=?|> "aside": {},
2575 <+=?|> "h1": {},
2576 <+=?|> "h2": {},
2577 <+=?|> "h3": {},
2578 <+=?|> "h4": {},
2579 <+=?|> "h5": {},
2580 <+=?|> "h6": {},
2581 <+=?|> "header": {},
2582 <+=?|> "footer": {},
2583 <+=?|> "address": {},
2584 <+=?|> "main": {},
2585 <+=?|> "p": {},
2586 <+=?|> "hr": {},
2587 <+=?|> "pre": {},
2588 <+=?|> "blockquote": {"cite": 1},
2589 <+=?|> "ol": {"start": 1, "reversed": 1},
2590 <+=?|> "ul": {},
2591 <+=?|> "li": {"value": 1},
2592 <+=?|> "dl": {},
2593 <+=?|> "dt": {},
2594 <+=?|> "dd": {},
2595 <+=?|> "figure": {},
2596 <+=?|> "figcaption": {},
2597 <+=?|> "div": {},
2598 <+=?|> "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1},
2599 <+=?|> "em": {},
2600 <+=?|> "strong": {},
2601 <+=?|> "small": {},
2602 <+=?|> "s": {},
2603 <+=?|> "cite": {},
2604 <+=?|> "q": {"cite": 1},
2605 <+=?|> "dfn": {},
2606 <+=?|> "abbr": {},
2607 <+=?|> "data": {},
2608 <+=?|> "time": {"datetime": 1},
2609 <+=?|> "code": {},
2610 <+=?|> "var": {},
2611 <+=?|> "samp": {},
2612 <+=?|> "kbd": {},
2613 <+=?|> "sub": {},
2614 <+=?|> "sup": {},
2615 <+=?|> "i": {},
2616 <+=?|> "b": {},
2617 <+=?|> "u": {},
2618 <+=?|> "mark": {},
2619 <+=?|> "ruby": {},
2620 <+=?|> "rt": {},
2621 <+=?|> "rp": {},
2622 <+=?|> "bdi": {},
2623 <+=?|> "bdo": {},
2624 <+=?|> "span": {},
2625 <+=?|> "br": {},
2626 <+=?|> "wbr": {},
2627 <+=?|> "ins": {"cite": 1, "datetime": 1},
2628 <+=?|> "del": {"cite": 1, "datetime": 1},
2629 <+=?|> "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2630 <+=?|> "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}},
2631 <+=?|> "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2632 <+=?|> "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2633 <+=?|> "param": {"name": 1, "value": 1},
2634 <+=?|> "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}},
2635 <+=?|> "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2636 <+=?|> "source": {"src": 1, "type": 1, "media": 1},
2637 <+=?|> "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2638 <+=?|> "canvas": {"width": 1, "height": 1},
2639 <+=?|> "map": {"name": 1},
2640 <+=?|> "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2641 <+=?|> "svg": {},
2642 <+=?|> "math": {},
2643 <+=?|> "table": {"summary": 1},
2644 <+=?|> "caption": {},
2645 <+=?|> "colgroup": {"span": 1},
2646 <+=?|> "col": {"span": 1},
2647 <+=?|> "tbody": {},
2648 <+=?|> "thead": {},
2649 <+=?|> "tfoot": {},
2650 <+=?|> "tr": {},
2651 <+=?|> "td": {"headers": 1, "rowspan": 1, "colspan": 1},
2652 <+=?|> "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2653 <+=?|> "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}},
2654 <+=?|> "fieldset": {"disabled": 1, "form": 1, "name": 1},
2655 <+=?|> "legend": {},
2656 <+=?|> "label": {"form": 1, "for": 1},
2657 <+=?|> "input": {
2658 <+=?|> "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1},
2659 <+=?|> "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1},
2660 <+=?|> "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}},
2661 <+=?|> "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2662 <+=?|> "datalist": {},
2663 <+=?|> "optgroup": {"disabled": 1, "label": 1},
2664 <+=?|> "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2665 <+=?|> "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}},
2666 <+=?|> "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2667 <+=?|> "output": {"for": 1, "form": 1, "name": 1},
2668 <+=?|> "progress": {"value": 1, "max": 1},
2669 <+=?|> "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2670 <+=?|> "details": {"open": 1},
2671 <+=?|> "summary": {},
2672 <+=?|> "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2673 <+=?|> "menu": {"type": 1, "label": 1},
2674 <+=?|> "dialog": {"open": 1}
2675 <+=?|>};
2676  
2677 <+=?|>var elements = Object.keys(attributeMap);
2678  
2679 <+=?|>function is(token, type) {
2680 <+=?|> return token.type.lastIndexOf(type + ".xml") > -1;
2681 <+=?|>}
2682  
2683 <+=?|>function findTagName(session, pos) {
2684 <+=?|> var iterator = new TokenIterator(session, pos.row, pos.column);
2685 <+=?|> var token = iterator.getCurrentToken();
2686 <+=?|> while (token && !is(token, "tag-name")){
2687 <+=?|> token = iterator.stepBackward();
2688 <+=?|> }
2689 <+=?|> if (token)
2690 <+=?|> return token.value;
2691 <+=?|>}
2692  
2693 <+=?|>function findAttributeName(session, pos) {
2694 <+=?|> var iterator = new TokenIterator(session, pos.row, pos.column);
2695 <+=?|> var token = iterator.getCurrentToken();
2696 <+=?|> while (token && !is(token, "attribute-name")){
2697 <+=?|> token = iterator.stepBackward();
2698 <+=?|> }
2699 <+=?|> if (token)
2700 <+=?|> return token.value;
2701 <+=?|>}
2702  
2703 <+=?|>var HtmlCompletions = function() {
2704  
2705 <+=?|>};
2706  
2707 <+=?|>(function() {
2708  
2709 <+=?|> this.getCompletions = function(state, session, pos, prefix) {
2710 <+=?|> var token = session.getTokenAt(pos.row, pos.column);
2711  
2712 <+=?|> if (!token)
2713 <+=?|> return [];
2714 <+=?|> if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open"))
2715 <+=?|> return this.getTagCompletions(state, session, pos, prefix);
2716 <+=?|> if (is(token, "tag-whitespace") || is(token, "attribute-name"))
2717 <+=?|> return this.getAttributeCompletions(state, session, pos, prefix);
2718 <+=?|> if (is(token, "attribute-value"))
2719 <+=?|> return this.getAttributeValueCompletions(state, session, pos, prefix);
2720 <+=?|> var line = session.getLine(pos.row).substr(0, pos.column);
2721 <+=?|> if (/&[a-z]*$/i.test(line))
2722 <+=?|> return this.getHTMLEntityCompletions(state, session, pos, prefix);
2723  
2724 <+=?|> return [];
2725 <+=?|> };
2726  
2727 <+=?|> this.getTagCompletions = function(state, session, pos, prefix) {
2728 <+=?|> return elements.map(function(element){
2729 <+=?|> return {
2730 <+=?|> value: element,
2731 <+=?|> meta: "tag",
2732 <+=?|> score: Number.MAX_VALUE
2733 <+=?|> };
2734 <+=?|> });
2735 <+=?|> };
2736  
2737 <+=?|> this.getAttributeCompletions = function(state, session, pos, prefix) {
2738 <+=?|> var tagName = findTagName(session, pos);
2739 <+=?|> if (!tagName)
2740 <+=?|> return [];
2741 <+=?|> var attributes = globalAttributes;
2742 <+=?|> if (tagName in attributeMap) {
2743 <+=?|> attributes = attributes.concat(Object.keys(attributeMap[tagName]));
2744 <+=?|> }
2745 <+=?|> return attributes.map(function(attribute){
2746 <+=?|> return {
2747 <+=?|> caption: attribute,
2748 <+=?|> snippet: attribute + '="$0"',
2749 <+=?|> meta: "attribute",
2750 <+=?|> score: Number.MAX_VALUE
2751 <+=?|> };
2752 <+=?|> });
2753 <+=?|> };
2754  
2755 <+=?|> this.getAttributeValueCompletions = function(state, session, pos, prefix) {
2756 <+=?|> var tagName = findTagName(session, pos);
2757 <+=?|> var attributeName = findAttributeName(session, pos);
2758  
2759 <+=?|> if (!tagName)
2760 <+=?|> return [];
2761 <+=?|> var values = [];
2762 <+=?|> if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") {
2763 <+=?|> values = Object.keys(attributeMap[tagName][attributeName]);
2764 <+=?|> }
2765 <+=?|> return values.map(function(value){
2766 <+=?|> return {
2767 <+=?|> caption: value,
2768 <+=?|> snippet: value,
2769 <+=?|> meta: "attribute value",
2770 <+=?|> score: Number.MAX_VALUE
2771 <+=?|> };
2772 <+=?|> });
2773 <+=?|> };
2774  
2775 <+=?|> this.getHTMLEntityCompletions = function(state, session, pos, prefix) {
2776 <+=?|> var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];
2777  
2778 <+=?|> return values.map(function(value){
2779 <+=?|> return {
2780 <+=?|> caption: value,
2781 <+=?|> snippet: value,
2782 <+=?|> meta: "html entity",
2783 <+=?|> score: Number.MAX_VALUE
2784 <+=?|> };
2785 <+=?|> });
2786 <+=?|> };
2787  
2788 <+=?|>}).call(HtmlCompletions.prototype);
2789  
2790 <+=?|>exports.HtmlCompletions = HtmlCompletions;
2791 <+=?|>});
2792  
2793 <+=?|>define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) {
2794 <+=?|>"use strict";
2795  
2796 <+=?|>var oop = require("../lib/oop");
2797 <+=?|>var lang = require("../lib/lang");
2798 <+=?|>var TextMode = require("./text").Mode;
2799 <+=?|>var JavaScriptMode = require("./javascript").Mode;
2800 <+=?|>var CssMode = require("./css").Mode;
2801 <+=?|>var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
2802 <+=?|>var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
2803 <+=?|>var HtmlFoldMode = require("./folding/html").FoldMode;
2804 <+=?|>var HtmlCompletions = require("./html_completions").HtmlCompletions;
2805 <+=?|>var WorkerClient = require("../worker/worker_client").WorkerClient;
2806 <+=?|>var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"];
2807 <+=?|>var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"];
2808  
2809 <+=?|>var Mode = function(options) {
2810 <+=?|> this.fragmentContext = options && options.fragmentContext;
2811 <+=?|> this.HighlightRules = HtmlHighlightRules;
2812 <+=?|> this.$behaviour = new XmlBehaviour();
2813 <+=?|> this.$completer = new HtmlCompletions();
2814  
2815 <+=?|> this.createModeDelegates({
2816 <+=?|> "js-": JavaScriptMode,
2817 <+=?|> "css-": CssMode
2818 <+=?|> });
2819  
2820 <+=?|> this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));
2821 <+=?|>};
2822 <+=?|>oop.inherits(Mode, TextMode);
2823  
2824 <+=?|>(function() {
2825  
2826 <+=?|> this.blockComment = {start: "<!--", end: "-->"};
2827  
2828 <+=?|> this.voidElements = lang.arrayToMap(voidElements);
2829  
2830 <+=?|> this.getNextLineIndent = function(state, line, tab) {
2831 <+=?|> return this.$getIndent(line);
2832 <+=?|> };
2833  
2834 <+=?|> this.checkOutdent = function(state, line, input) {
2835 <+=?|> return false;
2836 <+=?|> };
2837  
2838 <+=?|> this.getCompletions = function(state, session, pos, prefix) {
2839 <+=?|> return this.$completer.getCompletions(state, session, pos, prefix);
2840 <+=?|> };
2841  
2842 <+=?|> this.createWorker = function(session) {
2843 <+=?|> if (this.constructor != Mode)
2844 <+=?|> return;
2845 <+=?|> var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker");
2846 <+=?|> worker.attachToDocument(session.getDocument());
2847  
2848 <+=?|> if (this.fragmentContext)
2849 <+=?|> worker.call("setOptions", [{context: this.fragmentContext}]);
2850  
2851 <+=?|> worker.on("error", function(e) {
2852 <+=?|> session.setAnnotations(e.data);
2853 <+=?|> });
2854  
2855 <+=?|> worker.on("terminate", function() {
2856 <+=?|> session.clearAnnotations();
2857 <+=?|> });
2858  
2859 <+=?|> return worker;
2860 <+=?|> };
2861  
2862 <+=?|> this.$id = "ace/mode/html";
2863 <+=?|>}).call(Mode.prototype);
2864  
2865 <+=?|>exports.Mode = Mode;
2866 <+=?|>});
2867  
2868 <+=?|>define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
2869 <+=?|>"use strict";
2870  
2871 <+=?|>var oop = require("../../lib/oop");
2872 <+=?|>var BaseFoldMode = require("./fold_mode").FoldMode;
2873 <+=?|>var Range = require("../../range").Range;
2874  
2875 <+=?|>var FoldMode = exports.FoldMode = function() {};
2876 <+=?|>oop.inherits(FoldMode, BaseFoldMode);
2877  
2878 <+=?|>(function() {
2879  
2880 <+=?|> this.getFoldWidgetRange = function(session, foldStyle, row) {
2881 <+=?|> var range = this.indentationBlock(session, row);
2882 <+=?|> if (range)
2883 <+=?|> return range;
2884  
2885 <+=?|> var re = /\S/;
2886 <+=?|> var line = session.getLine(row);
2887 <+=?|> var startLevel = line.search(re);
2888 <+=?|> if (startLevel == -1 || line[startLevel] != "#")
2889 <+=?|> return;
2890  
2891 <+=?|> var startColumn = line.length;
2892 <+=?|> var maxRow = session.getLength();
2893 <+=?|> var startRow = row;
2894 <+=?|> var endRow = row;
2895  
2896 <+=?|> while (++row < maxRow) {
2897 <+=?|> line = session.getLine(row);
2898 <+=?|> var level = line.search(re);
2899  
2900 <+=?|> if (level == -1)
2901 <+=?|> continue;
2902  
2903 <+=?|> if (line[level] != "#")
2904 <+=?|> break;
2905  
2906 <+=?|> endRow = row;
2907 <+=?|> }
2908  
2909 <+=?|> if (endRow > startRow) {
2910 <+=?|> var endColumn = session.getLine(endRow).length;
2911 <+=?|> return new Range(startRow, startColumn, endRow, endColumn);
2912 <+=?|> }
2913 <+=?|> };
2914 <+=?|> this.getFoldWidget = function(session, foldStyle, row) {
2915 <+=?|> var line = session.getLine(row);
2916 <+=?|> var indent = line.search(/\S/);
2917 <+=?|> var next = session.getLine(row + 1);
2918 <+=?|> var prev = session.getLine(row - 1);
2919 <+=?|> var prevIndent = prev.search(/\S/);
2920 <+=?|> var nextIndent = next.search(/\S/);
2921  
2922 <+=?|> if (indent == -1) {
2923 <+=?|> session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
2924 <+=?|> return "";
2925 <+=?|> }
2926 <+=?|> if (prevIndent == -1) {
2927 <+=?|> if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
2928 <+=?|> session.foldWidgets[row - 1] = "";
2929 <+=?|> session.foldWidgets[row + 1] = "";
2930 <+=?|> return "start";
2931 <+=?|> }
2932 <+=?|> } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
2933 <+=?|> if (session.getLine(row - 2).search(/\S/) == -1) {
2934 <+=?|> session.foldWidgets[row - 1] = "start";
2935 <+=?|> session.foldWidgets[row + 1] = "";
2936 <+=?|> return "";
2937 <+=?|> }
2938 <+=?|> }
2939  
2940 <+=?|> if (prevIndent!= -1 && prevIndent < indent)
2941 <+=?|> session.foldWidgets[row - 1] = "start";
2942 <+=?|> else
2943 <+=?|> session.foldWidgets[row - 1] = "";
2944  
2945 <+=?|> if (indent < nextIndent)
2946 <+=?|> return "start";
2947 <+=?|> else
2948 <+=?|> return "";
2949 <+=?|> };
2950  
2951 <+=?|>}).call(FoldMode.prototype);
2952  
2953 <+=?|>});
2954  
2955 <+=?|>define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) {
2956 <+=?|>"use strict";
2957  
2958 <+=?|>var oop = require("../lib/oop");
2959 <+=?|>var TextMode = require("./text").Mode;
2960 <+=?|>var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules;
2961 <+=?|>var FoldMode = require("./folding/coffee").FoldMode;
2962  
2963 <+=?|>var Mode = function() {
2964 <+=?|> this.HighlightRules = ElixirHighlightRules;
2965 <+=?|> this.foldingRules = new FoldMode();
2966 <+=?|> this.$behaviour = this.$defaultBehaviour;
2967 <+=?|>};
2968 <+=?|>oop.inherits(Mode, TextMode);
2969  
2970 <+=?|>(function() {
2971 <+=?|> this.lineCommentStart = "#";
2972 <+=?|> this.$id = "ace/mode/elixir"
2973 <+=?|>}).call(Mode.prototype);
2974  
2975 <+=?|>exports.Mode = Mode;
2976 <+=?|>});
2977  
2978 <+=?|>define("ace/mode/html_elixir",["require","exports","module","ace/lib/oop","ace/mode/html_elixir_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/elixir"], function(require, exports, module) {
2979 <+=?|>"use strict";
2980  
2981 <+=?|>var oop = require("../lib/oop");
2982 <+=?|>var HtmlElixirHighlightRules = require("./html_elixir_highlight_rules").HtmlElixirHighlightRules;
2983 <+=?|>var HtmlMode = require("./html").Mode;
2984 <+=?|>var JavaScriptMode = require("./javascript").Mode;
2985 <+=?|>var CssMode = require("./css").Mode;
2986 <+=?|>var ElixirMode = require("./elixir").Mode;
2987  
2988 <+=?|>var Mode = function() {
2989 <+=?|> HtmlMode.call(this);
2990 <+=?|> this.HighlightRules = HtmlElixirHighlightRules;
2991 <+=?|> this.createModeDelegates({
2992 <+=?|> "js-": JavaScriptMode,
2993 <+=?|> "css-": CssMode,
2994 <+=?|> "elixir-": ElixirMode
2995 <+=?|> });
2996 <+=?|>};
2997 <+=?|>oop.inherits(Mode, HtmlMode);
2998  
2999 <+=?|>(function() {
3000  
3001 <+=?|> this.$id = "ace/mode/html_elixir";
3002 <+=?|>}).call(Mode.prototype);
3003  
3004 <+=?|>exports.Mode = Mode;
3005 <+=?|>});