ace editor dependencies

frdel committed Jul 2, 2025 at 20:52 UTC 85ed9c6e550f7719af8902b399a8b90b36ff94af
5 files changed +28 -21441
webui/vendor/ace/ace.js
+3 -21441
@@ -1,21446 +1,8 @@
1 -/* ***** BEGIN LICENSE BLOCK *****
2 - * Distributed under the BSD license:
3 - *
4 - * Copyright (c) 2010, Ajax.org B.V.
5 - * All rights reserved.
6 - *
7 - * Redistribution and use in source and binary forms, with or without
8 - * modification, are permitted provided that the following conditions are met:
9 - * * Redistributions of source code must retain the above copyright
10 - * notice, this list of conditions and the following disclaimer.
11 - * * Redistributions in binary form must reproduce the above copyright
12 - * notice, this list of conditions and the following disclaimer in the
13 - * documentation and/or other materials provided with the distribution.
14 - * * Neither the name of Ajax.org B.V. nor the
15 - * names of its contributors may be used to endorse or promote products
16 - * derived from this software without specific prior written permission.
17 - *
18 - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
22 - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 - *
29 - * ***** END LICENSE BLOCK ***** */
30 -
31 -/**
32 - * Define a module along with a payload
33 - * @param module a name for the payload
34 - * @param payload a function to call with (require, exports, module) params
35 - */
36 -
37 -(function() {
38 -
39 -var ACE_NAMESPACE = "ace";
40 -
41 -var global = (function() { return this; })();
42 -if (!global && typeof window != "undefined") global = window; // strict mode
43 -
44 -
45 -if (!ACE_NAMESPACE && typeof requirejs !== "undefined")
46 - return;
47 -
48 -
49 -var define = function(module, deps, payload) {
50 - if (typeof module !== "string") {
51 - if (define.original)
52 - define.original.apply(this, arguments);
53 - else {
54 - console.error("dropping module because define wasn\'t a string.");
55 - console.trace();
56 - }
57 - return;
58 - }
59 - if (arguments.length == 2)
60 - payload = deps;
61 - if (!define.modules[module]) {
62 - define.payloads[module] = payload;
63 - define.modules[module] = null;
64 - }
65 -};
66 -
67 -define.modules = {};
68 -define.payloads = {};
69 -
70 -/**
71 - * Get at functionality define()ed using the function above
72 - */
73 -var _require = function(parentId, module, callback) {
74 - if (typeof module === "string") {
75 - var payload = lookup(parentId, module);
76 - if (payload != undefined) {
77 - callback && callback();
78 - return payload;
79 - }
80 - } else if (Object.prototype.toString.call(module) === "[object Array]") {
81 - var params = [];
82 - for (var i = 0, l = module.length; i < l; ++i) {
83 - var dep = lookup(parentId, module[i]);
84 - if (dep == undefined && require.original)
85 - return;
86 - params.push(dep);
87 - }
88 - return callback && callback.apply(null, params) || true;
89 - }
90 -};
91 -
92 -var require = function(module, callback) {
93 - var packagedModule = _require("", module, callback);
94 - if (packagedModule == undefined && require.original)
95 - return require.original.apply(this, arguments);
96 - return packagedModule;
97 -};
98 -
99 -var normalizeModule = function(parentId, moduleName) {
100 - // normalize plugin requires
101 - if (moduleName.indexOf("!") !== -1) {
102 - var chunks = moduleName.split("!");
103 - return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
104 - }
105 - // normalize relative requires
106 - if (moduleName.charAt(0) == ".") {
107 - var base = parentId.split("/").slice(0, -1).join("/");
108 - moduleName = base + "/" + moduleName;
109 -
110 - while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
111 - var previous = moduleName;
112 - moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
113 - }
114 - }
115 - return moduleName;
116 -};
117 -
118 -/**
119 - * Internal function to lookup moduleNames and resolve them by calling the
120 - * definition function if needed.
121 - */
122 -var lookup = function(parentId, moduleName) {
123 - moduleName = normalizeModule(parentId, moduleName);
124 -
125 - var module = define.modules[moduleName];
126 - if (!module) {
127 - module = define.payloads[moduleName];
128 - if (typeof module === 'function') {
129 - var exports = {};
130 - var mod = {
131 - id: moduleName,
132 - uri: '',
133 - exports: exports,
134 - packaged: true
135 - };
136 -
137 - var req = function(module, callback) {
138 - return _require(moduleName, module, callback);
139 - };
140 -
141 - var returnValue = module(req, exports, mod);
142 - exports = returnValue || mod.exports;
143 - define.modules[moduleName] = exports;
144 - delete define.payloads[moduleName];
145 - }
146 - module = define.modules[moduleName] = exports || module;
147 - }
148 - return module;
149 -};
150 -
151 -function exportAce(ns) {
152 - var root = global;
153 - if (ns) {
154 - if (!global[ns])
155 - global[ns] = {};
156 - root = global[ns];
157 - }
158 -
159 - if (!root.define || !root.define.packaged) {
160 - define.original = root.define;
161 - root.define = define;
162 - root.define.packaged = true;
163 - }
164 -
165 - if (!root.require || !root.require.packaged) {
166 - require.original = root.require;
167 - root.require = require;
168 - root.require.packaged = true;
169 - }
170 -}
171 -
172 -exportAce(ACE_NAMESPACE);
173 -
174 -})();
175 -
176 -ace.define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) {
177 - Object.defineProperty(obj, name, {
178 - value: val,
179 - enumerable: false,
180 - writable: true,
181 - configurable: true
182 - });
183 -}
184 -if (!String.prototype.startsWith) {
185 - defineProp(String.prototype, "startsWith", function (searchString, position) {
186 - position = position || 0;
187 - return this.lastIndexOf(searchString, position) === position;
188 - });
189 -}
190 -if (!String.prototype.endsWith) {
191 - defineProp(String.prototype, "endsWith", function (searchString, position) {
192 - var subjectString = this;
193 - if (position === undefined || position > subjectString.length) {
194 - position = subjectString.length;
195 - }
196 - position -= searchString.length;
197 - var lastIndex = subjectString.indexOf(searchString, position);
198 - return lastIndex !== -1 && lastIndex === position;
199 - });
200 -}
201 -if (!String.prototype.repeat) {
202 - defineProp(String.prototype, "repeat", function (count) {
203 - var result = "";
204 - var string = this;
205 - while (count > 0) {
206 - if (count & 1)
207 - result += string;
208 - if ((count >>= 1))
209 - string += string;
210 - }
211 - return result;
212 - });
213 -}
214 -if (!String.prototype.includes) {
215 - defineProp(String.prototype, "includes", function (str, position) {
216 - return this.indexOf(str, position) != -1;
217 - });
218 -}
219 -if (!Object.assign) {
220 - Object.assign = function (target) {
221 - if (target === undefined || target === null) {
222 - throw new TypeError("Cannot convert undefined or null to object");
223 - }
224 - var output = Object(target);
225 - for (var index = 1; index < arguments.length; index++) {
226 - var source = arguments[index];
227 - if (source !== undefined && source !== null) {
228 - Object.keys(source).forEach(function (key) {
229 - output[key] = source[key];
230 - });
231 - }
232 - }
233 - return output;
234 - };
235 -}
236 -if (!Object.values) {
237 - Object.values = function (o) {
238 - return Object.keys(o).map(function (k) {
239 - return o[k];
240 - });
241 - };
242 -}
243 -if (!Array.prototype.find) {
244 - defineProp(Array.prototype, "find", function (predicate) {
245 - var len = this.length;
246 - var thisArg = arguments[1];
247 - for (var k = 0; k < len; k++) {
248 - var kValue = this[k];
249 - if (predicate.call(thisArg, kValue, k, this)) {
250 - return kValue;
251 - }
252 - }
253 - });
254 -}
255 -if (!Array.prototype.findIndex) {
256 - defineProp(Array.prototype, "findIndex", function (predicate) {
257 - var len = this.length;
258 - var thisArg = arguments[1];
259 - for (var k = 0; k < len; k++) {
260 - var kValue = this[k];
261 - if (predicate.call(thisArg, kValue, k, this)) {
262 - return k;
263 - }
264 - }
265 - });
266 -}
267 -if (!Array.prototype.includes) {
268 - defineProp(Array.prototype, "includes", function (item, position) {
269 - return this.indexOf(item, position) != -1;
270 - });
271 -}
272 -if (!Array.prototype.fill) {
273 - defineProp(Array.prototype, "fill", function (value) {
274 - var O = this;
275 - var len = O.length >>> 0;
276 - var start = arguments[1];
277 - var relativeStart = start >> 0;
278 - var k = relativeStart < 0
279 - ? Math.max(len + relativeStart, 0)
280 - : Math.min(relativeStart, len);
281 - var end = arguments[2];
282 - var relativeEnd = end === undefined ? len : end >> 0;
283 - var final = relativeEnd < 0
284 - ? Math.max(len + relativeEnd, 0)
285 - : Math.min(relativeEnd, len);
286 - while (k < final) {
287 - O[k] = value;
288 - k++;
289 - }
290 - return O;
291 - });
292 -}
293 -if (!Array.of) {
294 - defineProp(Array, "of", function () {
295 - return Array.prototype.slice.call(arguments);
296 - });
297 -}
298 -
299 -});
300 -
301 -ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:
302 -"use strict";
303 -require("./es6-shim");
304 -
305 -});
306 -
307 -ace.define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {
308 - if (typeof obj !== "object" || !obj)
309 - return obj;
310 - var copy;
311 - if (Array.isArray(obj)) {
312 - copy = [];
313 - for (var key = 0; key < obj.length; key++) {
314 - copy[key] = deepCopy(obj[key]);
315 - }
316 - return copy;
317 - }
318 - if (Object.prototype.toString.call(obj) !== "[object Object]")
319 - return obj;
320 - copy = {};
321 - for (var key in obj)
322 - copy[key] = deepCopy(obj[key]);
323 - return copy;
324 -};
325 -
326 -});
327 -
328 -ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict";
329 -exports.last = function (a) {
330 - return a[a.length - 1];
331 -};
332 -exports.stringReverse = function (string) {
333 - return string.split("").reverse().join("");
334 -};
335 -exports.stringRepeat = function (string, count) {
336 - var result = '';
337 - while (count > 0) {
338 - if (count & 1)
339 - result += string;
340 - if (count >>= 1)
341 - string += string;
342 - }
343 - return result;
344 -};
345 -var trimBeginRegexp = /^\s\s*/;
346 -var trimEndRegexp = /\s\s*$/;
347 -exports.stringTrimLeft = function (string) {
348 - return string.replace(trimBeginRegexp, '');
349 -};
350 -exports.stringTrimRight = function (string) {
351 - return string.replace(trimEndRegexp, '');
352 -};
353 -exports.copyObject = function (obj) {
354 - var copy = {};
355 - for (var key in obj) {
356 - copy[key] = obj[key];
357 - }
358 - return copy;
359 -};
360 -exports.copyArray = function (array) {
361 - var copy = [];
362 - for (var i = 0, l = array.length; i < l; i++) {
363 - if (array[i] && typeof array[i] == "object")
364 - copy[i] = this.copyObject(array[i]);
365 - else
366 - copy[i] = array[i];
367 - }
368 - return copy;
369 -};
370 -exports.deepCopy = require("./deep_copy").deepCopy;
371 -exports.arrayToMap = function (arr) {
372 - var map = {};
373 - for (var i = 0; i < arr.length; i++) {
374 - map[arr[i]] = 1;
375 - }
376 - return map;
377 -};
378 -exports.createMap = function (props) {
379 - var map = Object.create(null);
380 - for (var i in props) {
381 - map[i] = props[i];
382 - }
383 - return map;
384 -};
385 -exports.arrayRemove = function (array, value) {
386 - for (var i = 0; i <= array.length; i++) {
387 - if (value === array[i]) {
388 - array.splice(i, 1);
389 - }
390 - }
391 -};
392 -exports.escapeRegExp = function (str) {
393 - return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
394 -};
395 -exports.escapeHTML = function (str) {
396 - return ("" + str).replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
397 -};
398 -exports.getMatchOffsets = function (string, regExp) {
399 - var matches = [];
400 - string.replace(regExp, function (str) {
401 - matches.push({
402 - offset: arguments[arguments.length - 2],
403 - length: str.length
404 - });
405 - });
406 - return matches;
407 -};
408 -exports.deferredCall = function (fcn) {
409 - var timer = null;
410 - var callback = function () {
411 - timer = null;
412 - fcn();
413 - };
414 - var deferred = function (timeout) {
415 - deferred.cancel();
416 - timer = setTimeout(callback, timeout || 0);
417 - return deferred;
418 - };
419 - deferred.schedule = deferred;
420 - deferred.call = function () {
421 - this.cancel();
422 - fcn();
423 - return deferred;
424 - };
425 - deferred.cancel = function () {
426 - clearTimeout(timer);
427 - timer = null;
428 - return deferred;
429 - };
430 - deferred.isPending = function () {
431 - return timer;
432 - };
433 - return deferred;
434 -};
435 -exports.delayedCall = function (fcn, defaultTimeout) {
436 - var timer = null;
437 - var callback = function () {
438 - timer = null;
439 - fcn();
440 - };
441 - var _self = function (timeout) {
442 - if (timer == null)
443 - timer = setTimeout(callback, timeout || defaultTimeout);
444 - };
445 - _self.delay = function (timeout) {
446 - timer && clearTimeout(timer);
447 - timer = setTimeout(callback, timeout || defaultTimeout);
448 - };
449 - _self.schedule = _self;
450 - _self.call = function () {
451 - this.cancel();
452 - fcn();
453 - };
454 - _self.cancel = function () {
455 - timer && clearTimeout(timer);
456 - timer = null;
457 - };
458 - _self.isPending = function () {
459 - return timer;
460 - };
461 - return _self;
462 -};
463 -exports.supportsLookbehind = function () {
464 - try {
465 - new RegExp('(?<=.)');
466 - }
467 - catch (e) {
468 - return false;
469 - }
470 - return true;
471 -};
472 -exports.skipEmptyMatch = function (line, last, supportsUnicodeFlag) {
473 - return supportsUnicodeFlag && line.codePointAt(last) > 0xffff ? 2 : 1;
474 -};
475 -
476 -});
477 -
478 -ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict";
479 -exports.OS = {
480 - LINUX: "LINUX",
481 - MAC: "MAC",
482 - WINDOWS: "WINDOWS"
483 -};
484 -exports.getOS = function () {
485 - if (exports.isMac) {
486 - return exports.OS.MAC;
487 - }
488 - else if (exports.isLinux) {
489 - return exports.OS.LINUX;
490 - }
491 - else {
492 - return exports.OS.WINDOWS;
493 - }
494 -};
495 -var _navigator = typeof navigator == "object" ? navigator : {};
496 -var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase();
497 -var ua = _navigator.userAgent || "";
498 -var appName = _navigator.appName || "";
499 -exports.isWin = (os == "win");
500 -exports.isMac = (os == "mac");
501 -exports.isLinux = (os == "linux");
502 -exports.isIE =
503 - (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0)
504 - ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1])
505 - : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie
506 -exports.isOldIE = exports.isIE && exports.isIE < 9;
507 -exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/);
508 -exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window["opera"]) == "[object Opera]";
509 -exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;
510 -exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined;
511 -exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined;
512 -exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined;
513 -exports.isAIR = ua.indexOf("AdobeAIR") >= 0;
514 -exports.isAndroid = ua.indexOf("Android") >= 0;
515 -exports.isChromeOS = ua.indexOf(" CrOS ") >= 0;
516 -exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window["MSStream"];
517 -if (exports.isIOS)
518 - exports.isMac = true;
519 -exports.isMobile = exports.isIOS || exports.isAndroid;
520 -
521 -});
522 -
523 -ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict";
524 -var useragent = require("./useragent");
525 -var XHTML_NS = "http://www.w3.org/1999/xhtml";
526 -exports.buildDom = function buildDom(arr, parent, refs) {
527 - if (typeof arr == "string" && arr) {
528 - var txt = document.createTextNode(arr);
529 - if (parent)
530 - parent.appendChild(txt);
531 - return txt;
532 - }
533 - if (!Array.isArray(arr)) {
534 - if (arr && arr.appendChild && parent)
535 - parent.appendChild(arr);
536 - return arr;
537 - }
538 - if (typeof arr[0] != "string" || !arr[0]) {
539 - var els = [];
540 - for (var i = 0; i < arr.length; i++) {
541 - var ch = buildDom(arr[i], parent, refs);
542 - ch && els.push(ch);
543 - }
544 - return els;
545 - }
546 - var el = document.createElement(arr[0]);
547 - var options = arr[1];
548 - var childIndex = 1;
549 - if (options && typeof options == "object" && !Array.isArray(options))
550 - childIndex = 2;
551 - for (var i = childIndex; i < arr.length; i++)
552 - buildDom(arr[i], el, refs);
553 - if (childIndex == 2) {
554 - Object.keys(options).forEach(function (n) {
555 - var val = options[n];
556 - if (n === "class") {
557 - el.className = Array.isArray(val) ? val.join(" ") : val;
558 - }
559 - else if (typeof val == "function" || n == "value" || n[0] == "$") {
560 - el[n] = val;
561 - }
562 - else if (n === "ref") {
563 - if (refs)
564 - refs[val] = el;
565 - }
566 - else if (n === "style") {
567 - if (typeof val == "string")
568 - el.style.cssText = val;
569 - }
570 - else if (val != null) {
571 - el.setAttribute(n, val);
572 - }
573 - });
574 - }
575 - if (parent)
576 - parent.appendChild(el);
577 - return el;
578 -};
579 -exports.getDocumentHead = function (doc) {
580 - if (!doc)
581 - doc = document;
582 - return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;
583 -};
584 -exports.createElement = function (tag, ns) {
585 - return document.createElementNS ?
586 - document.createElementNS(ns || XHTML_NS, tag) :
587 - document.createElement(tag);
588 -};
589 -exports.removeChildren = function (element) {
590 - element.innerHTML = "";
591 -};
592 -exports.createTextNode = function (textContent, element) {
593 - var doc = element ? element.ownerDocument : document;
594 - return doc.createTextNode(textContent);
595 -};
596 -exports.createFragment = function (element) {
597 - var doc = element ? element.ownerDocument : document;
598 - return doc.createDocumentFragment();
599 -};
600 -exports.hasCssClass = function (el, name) {
601 - var classes = (el.className + "").split(/\s+/g);
602 - return classes.indexOf(name) !== -1;
603 -};
604 -exports.addCssClass = function (el, name) {
605 - if (!exports.hasCssClass(el, name)) {
606 - el.className += " " + name;
607 - }
608 -};
609 -exports.removeCssClass = function (el, name) {
610 - var classes = el.className.split(/\s+/g);
611 - while (true) {
612 - var index = classes.indexOf(name);
613 - if (index == -1) {
614 - break;
615 - }
616 - classes.splice(index, 1);
617 - }
618 - el.className = classes.join(" ");
619 -};
620 -exports.toggleCssClass = function (el, name) {
621 - var classes = el.className.split(/\s+/g), add = true;
622 - while (true) {
623 - var index = classes.indexOf(name);
624 - if (index == -1) {
625 - break;
626 - }
627 - add = false;
628 - classes.splice(index, 1);
629 - }
630 - if (add)
631 - classes.push(name);
632 - el.className = classes.join(" ");
633 - return add;
634 -};
635 -exports.setCssClass = function (node, className, include) {
636 - if (include) {
637 - exports.addCssClass(node, className);
638 - }
639 - else {
640 - exports.removeCssClass(node, className);
641 - }
642 -};
643 -exports.hasCssString = function (id, doc) {
644 - var index = 0, sheets;
645 - doc = doc || document;
646 - if ((sheets = doc.querySelectorAll("style"))) {
647 - while (index < sheets.length) {
648 - if (sheets[index++].id === id) {
649 - return true;
650 - }
651 - }
652 - }
653 -};
654 -exports.removeElementById = function (id, doc) {
655 - doc = doc || document;
656 - if (doc.getElementById(id)) {
657 - doc.getElementById(id).remove();
658 - }
659 -};
660 -var strictCSP;
661 -var cssCache = [];
662 -exports.useStrictCSP = function (value) {
663 - strictCSP = value;
664 - if (value == false)
665 - insertPendingStyles();
666 - else if (!cssCache)
667 - cssCache = [];
668 -};
669 -function insertPendingStyles() {
670 - var cache = cssCache;
671 - cssCache = null;
672 - cache && cache.forEach(function (item) {
673 - importCssString(item[0], item[1]);
674 - });
675 -}
676 -function importCssString(cssText, id, target) {
677 - if (typeof document == "undefined")
678 - return;
679 - if (cssCache) {
680 - if (target) {
681 - insertPendingStyles();
682 - }
683 - else if (target === false) {
684 - return cssCache.push([cssText, id]);
685 - }
686 - }
687 - if (strictCSP)
688 - return;
689 - var container = target;
690 - if (!target || !target.getRootNode) {
691 - container = document;
692 - }
693 - else {
694 - container = target.getRootNode();
695 - if (!container || container == target)
696 - container = document;
697 - }
698 - var doc = container.ownerDocument || container;
699 - if (id && exports.hasCssString(id, container))
700 - return null;
701 - if (id)
702 - cssText += "\n/*# sourceURL=ace/css/" + id + " */";
703 - var style = exports.createElement("style");
704 - style.appendChild(doc.createTextNode(cssText));
705 - if (id)
706 - style.id = id;
707 - if (container == doc)
708 - container = exports.getDocumentHead(doc);
709 - container.insertBefore(style, container.firstChild);
710 -}
711 -exports.importCssString = importCssString;
712 -exports.importCssStylsheet = function (uri, doc) {
713 - exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc));
714 -};
715 -exports.scrollbarWidth = function (doc) {
716 - var inner = exports.createElement("ace_inner");
717 - inner.style.width = "100%";
718 - inner.style.minWidth = "0px";
719 - inner.style.height = "200px";
720 - inner.style.display = "block";
721 - var outer = exports.createElement("ace_outer");
722 - var style = outer.style;
723 - style.position = "absolute";
724 - style.left = "-10000px";
725 - style.overflow = "hidden";
726 - style.width = "200px";
727 - style.minWidth = "0px";
728 - style.height = "150px";
729 - style.display = "block";
730 - outer.appendChild(inner);
731 - var body = (doc && doc.documentElement) || (document && document.documentElement);
732 - if (!body)
733 - return 0;
734 - body.appendChild(outer);
735 - var noScrollbar = inner.offsetWidth;
736 - style.overflow = "scroll";
737 - var withScrollbar = inner.offsetWidth;
738 - if (noScrollbar === withScrollbar) {
739 - withScrollbar = outer.clientWidth;
740 - }
741 - body.removeChild(outer);
742 - return noScrollbar - withScrollbar;
743 -};
744 -exports.computedStyle = function (element, style) {
745 - return window.getComputedStyle(element, "") || {};
746 -};
747 -exports.setStyle = function (styles, property, value) {
748 - if (styles[property] !== value) {
749 - styles[property] = value;
750 - }
751 -};
752 -exports.HAS_CSS_ANIMATION = false;
753 -exports.HAS_CSS_TRANSFORMS = false;
754 -exports.HI_DPI = useragent.isWin
755 - ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5
756 - : true;
757 -if (useragent.isChromeOS)
758 - exports.HI_DPI = false;
759 -if (typeof document !== "undefined") {
760 - var div = document.createElement("div");
761 - if (exports.HI_DPI && div.style.transform !== undefined)
762 - exports.HAS_CSS_TRANSFORMS = true;
763 - if (!useragent.isEdge && typeof div.style.animationName !== "undefined")
764 - exports.HAS_CSS_ANIMATION = true;
765 - div = null;
766 -}
767 -if (exports.HAS_CSS_TRANSFORMS) {
768 - exports.translate = function (element, tx, ty) {
769 - element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)";
770 - };
771 -}
772 -else {
773 - exports.translate = function (element, tx, ty) {
774 - element.style.top = Math.round(ty) + "px";
775 - element.style.left = Math.round(tx) + "px";
776 - };
777 -}
778 -
779 -});
780 -
781 -ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/*
782 - * based on code from:
783 - *
784 - * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
785 - * Available via the MIT or new BSD license.
786 - * see: http://github.com/jrburke/requirejs for details
787 - */
788 -"use strict";
789 -var dom = require("./dom");
790 -exports.get = function (url, callback) {
791 - var xhr = new XMLHttpRequest();
792 - xhr.open('GET', url, true);
793 - xhr.onreadystatechange = function () {
794 - if (xhr.readyState === 4) {
795 - callback(xhr.responseText);
796 - }
797 - };
798 - xhr.send(null);
799 -};
800 -exports.loadScript = function (path, callback) {
801 - var head = dom.getDocumentHead();
802 - var s = document.createElement('script');
803 - s.src = path;
804 - head.appendChild(s);
805 - s.onload = s.onreadystatechange = function (_, isAbort) {
806 - if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") {
807 - s = s.onload = s.onreadystatechange = null;
808 - if (!isAbort)
809 - callback();
810 - }
811 - };
812 -};
813 -exports.qualifyURL = function (url) {
814 - var a = document.createElement('a');
815 - a.href = url;
816 - return a.href;
817 -};
818 -
819 -});
820 -
821 -ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict";
822 -exports.inherits = function (ctor, superCtor) {
823 - ctor.super_ = superCtor;
824 - ctor.prototype = Object.create(superCtor.prototype, {
825 - constructor: {
826 - value: ctor,
827 - enumerable: false,
828 - writable: true,
829 - configurable: true
830 - }
831 - });
832 -};
833 -exports.mixin = function (obj, mixin) {
834 - for (var key in mixin) {
835 - obj[key] = mixin[key];
836 - }
837 - return obj;
838 -};
839 -exports.implement = function (proto, mixin) {
840 - exports.mixin(proto, mixin);
841 -};
842 -
843 -});
844 -
845 -ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict";
846 -var EventEmitter = {};
847 -var stopPropagation = function () { this.propagationStopped = true; };
848 -var preventDefault = function () { this.defaultPrevented = true; };
849 -EventEmitter._emit =
850 - EventEmitter._dispatchEvent = function (eventName, e) {
851 - this._eventRegistry || (this._eventRegistry = {});
852 - this._defaultHandlers || (this._defaultHandlers = {});
853 - var listeners = this._eventRegistry[eventName] || [];
854 - var defaultHandler = this._defaultHandlers[eventName];
855 - if (!listeners.length && !defaultHandler)
856 - return;
857 - if (typeof e != "object" || !e)
858 - e = {};
859 - if (!e.type)
860 - e.type = eventName;
861 - if (!e.stopPropagation)
862 - e.stopPropagation = stopPropagation;
863 - if (!e.preventDefault)
864 - e.preventDefault = preventDefault;
865 - listeners = listeners.slice();
866 - for (var i = 0; i < listeners.length; i++) {
867 - listeners[i](e, this);
868 - if (e.propagationStopped)
869 - break;
870 - }
871 - if (defaultHandler && !e.defaultPrevented)
872 - return defaultHandler(e, this);
873 - };
874 -EventEmitter._signal = function (eventName, e) {
875 - var listeners = (this._eventRegistry || {})[eventName];
876 - if (!listeners)
877 - return;
878 - listeners = listeners.slice();
879 - for (var i = 0; i < listeners.length; i++)
880 - listeners[i](e, this);
881 -};
882 -EventEmitter.once = function (eventName, callback) {
883 - var _self = this;
884 - this.on(eventName, function newCallback() {
885 - _self.off(eventName, newCallback);
886 - callback.apply(null, arguments);
887 - });
888 - if (!callback) {
889 - return new Promise(function (resolve) {
890 - callback = resolve;
891 - });
892 - }
893 -};
894 -EventEmitter.setDefaultHandler = function (eventName, callback) {
895 - var handlers = this._defaultHandlers;
896 - if (!handlers)
897 - handlers = this._defaultHandlers = { _disabled_: {} };
898 - if (handlers[eventName]) {
899 - var old = handlers[eventName];
900 - var disabled = handlers._disabled_[eventName];
901 - if (!disabled)
902 - handlers._disabled_[eventName] = disabled = [];
903 - disabled.push(old);
904 - var i = disabled.indexOf(callback);
905 - if (i != -1)
906 - disabled.splice(i, 1);
907 - }
908 - handlers[eventName] = callback;
909 -};
910 -EventEmitter.removeDefaultHandler = function (eventName, callback) {
911 - var handlers = this._defaultHandlers;
912 - if (!handlers)
913 - return;
914 - var disabled = handlers._disabled_[eventName];
915 - if (handlers[eventName] == callback) {
916 - if (disabled)
917 - this.setDefaultHandler(eventName, disabled.pop());
918 - }
919 - else if (disabled) {
920 - var i = disabled.indexOf(callback);
921 - if (i != -1)
922 - disabled.splice(i, 1);
923 - }
924 -};
925 -EventEmitter.on =
926 - EventEmitter.addEventListener = function (eventName, callback, capturing) {
927 - this._eventRegistry = this._eventRegistry || {};
928 - var listeners = this._eventRegistry[eventName];
929 - if (!listeners)
930 - listeners = this._eventRegistry[eventName] = [];
931 - if (listeners.indexOf(callback) == -1)
932 - listeners[capturing ? "unshift" : "push"](callback);
933 - return callback;
934 - };
935 -EventEmitter.off =
936 - EventEmitter.removeListener =
937 - EventEmitter.removeEventListener = function (eventName, callback) {
938 - this._eventRegistry = this._eventRegistry || {};
939 - var listeners = this._eventRegistry[eventName];
940 - if (!listeners)
941 - return;
942 - var index = listeners.indexOf(callback);
943 - if (index !== -1)
944 - listeners.splice(index, 1);
945 - };
946 -EventEmitter.removeAllListeners = function (eventName) {
947 - if (!eventName)
948 - this._eventRegistry = this._defaultHandlers = undefined;
949 - if (this._eventRegistry)
950 - this._eventRegistry[eventName] = undefined;
951 - if (this._defaultHandlers)
952 - this._defaultHandlers[eventName] = undefined;
953 -};
954 -exports.EventEmitter = EventEmitter;
955 -
956 -});
957 -
958 -ace.define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) {
959 - var e = new Error(msg);
960 - e["data"] = data;
961 - if (typeof console == "object" && console.error)
962 - console.error(e);
963 - setTimeout(function () { throw e; });
964 -};
965 -
966 -});
967 -
968 -ace.define("ace/lib/default_english_messages",["require","exports","module"], function(require, exports, module){var defaultEnglishMessages = {
969 - "autocomplete.popup.aria-roledescription": "Autocomplete suggestions",
970 - "autocomplete.popup.aria-label": "Autocomplete suggestions",
971 - "autocomplete.popup.item.aria-roledescription": "item",
972 - "autocomplete.loading": "Loading...",
973 - "editor.scroller.aria-roledescription": "editor",
974 - "editor.scroller.aria-label": "Editor content, press Enter to start editing, press Escape to exit",
975 - "editor.gutter.aria-roledescription": "editor",
976 - "editor.gutter.aria-label": "Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit",
977 - "error-marker.good-state": "Looks good!",
978 - "prompt.recently-used": "Recently used",
979 - "prompt.other-commands": "Other commands",
980 - "prompt.no-matching-commands": "No matching commands",
981 - "search-box.find.placeholder": "Search for",
982 - "search-box.find-all.text": "All",
983 - "search-box.replace.placeholder": "Replace with",
984 - "search-box.replace-next.text": "Replace",
985 - "search-box.replace-all.text": "All",
986 - "search-box.toggle-replace.title": "Toggle Replace mode",
987 - "search-box.toggle-regexp.title": "RegExp Search",
988 - "search-box.toggle-case.title": "CaseSensitive Search",
989 - "search-box.toggle-whole-word.title": "Whole Word Search",
990 - "search-box.toggle-in-selection.title": "Search In Selection",
991 - "search-box.search-counter": "$0 of $1",
992 - "text-input.aria-roledescription": "editor",
993 - "text-input.aria-label": "Cursor at row $0",
994 - "gutter.code-folding.range.aria-label": "Toggle code folding, rows $0 through $1",
995 - "gutter.code-folding.closed.aria-label": "Toggle code folding, rows $0 through $1",
996 - "gutter.code-folding.open.aria-label": "Toggle code folding, row $0",
997 - "gutter.code-folding.closed.title": "Unfold code",
998 - "gutter.code-folding.open.title": "Fold code",
999 - "gutter.annotation.aria-label.error": "Error, read annotations row $0",
1000 - "gutter.annotation.aria-label.warning": "Warning, read annotations row $0",
1001 - "gutter.annotation.aria-label.info": "Info, read annotations row $0",
1002 - "inline-fold.closed.title": "Unfold code",
1003 - "gutter-tooltip.aria-label.error.singular": "error",
1004 - "gutter-tooltip.aria-label.error.plural": "errors",
1005 - "gutter-tooltip.aria-label.warning.singular": "warning",
1006 - "gutter-tooltip.aria-label.warning.plural": "warnings",
1007 - "gutter-tooltip.aria-label.info.singular": "information message",
1008 - "gutter-tooltip.aria-label.info.plural": "information messages",
1009 - "gutter.annotation.aria-label.security": "Security finding, read annotations row $0",
1010 - "gutter.annotation.aria-label.hint": "Suggestion, read annotations row $0",
1011 - "gutter-tooltip.aria-label.security.singular": "security finding",
1012 - "gutter-tooltip.aria-label.security.plural": "security findings",
1013 - "gutter-tooltip.aria-label.hint.singular": "suggestion",
1014 - "gutter-tooltip.aria-label.hint.plural": "suggestions"
1015 -};
1016 -exports.defaultEnglishMessages = defaultEnglishMessages;
1017 -
1018 -});
1019 -
1020 -ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error","ace/lib/default_english_messages"], function(require, exports, module){"no use strict";
1021 -var oop = require("./oop");
1022 -var EventEmitter = require("./event_emitter").EventEmitter;
1023 -var reportError = require("./report_error").reportError;
1024 -var defaultEnglishMessages = require("./default_english_messages").defaultEnglishMessages;
1025 -var optionsProvider = {
1026 - setOptions: function (optList) {
1027 - Object.keys(optList).forEach(function (key) {
1028 - this.setOption(key, optList[key]);
1029 - }, this);
1030 - },
1031 - getOptions: function (optionNames) {
1032 - var result = {};
1033 - if (!optionNames) {
1034 - var options = this.$options;
1035 - optionNames = Object.keys(options).filter(function (key) {
1036 - return !options[key].hidden;
1037 - });
1038 - }
1039 - else if (!Array.isArray(optionNames)) {
1040 - result = optionNames;
1041 - optionNames = Object.keys(result);
1042 - }
1043 - optionNames.forEach(function (key) {
1044 - result[key] = this.getOption(key);
1045 - }, this);
1046 - return result;
1047 - },
1048 - setOption: function (name, value) {
1049 - if (this["$" + name] === value)
1050 - return;
1051 - var opt = this.$options[name];
1052 - if (!opt) {
1053 - return warn('misspelled option "' + name + '"');
1054 - }
1055 - if (opt.forwardTo)
1056 - return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);
1057 - if (!opt.handlesSet)
1058 - this["$" + name] = value;
1059 - if (opt && opt.set)
1060 - opt.set.call(this, value);
1061 - },
1062 - getOption: function (name) {
1063 - var opt = this.$options[name];
1064 - if (!opt) {
1065 - return warn('misspelled option "' + name + '"');
1066 - }
1067 - if (opt.forwardTo)
1068 - return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);
1069 - return opt && opt.get ? opt.get.call(this) : this["$" + name];
1070 - }
1071 -};
1072 -function warn(message) {
1073 - if (typeof console != "undefined" && console.warn)
1074 - console.warn.apply(console, arguments);
1075 -}
1076 -var messages;
1077 -var nlsPlaceholders;
1078 -var AppConfig = /** @class */ (function () {
1079 - function AppConfig() {
1080 - this.$defaultOptions = {};
1081 - messages = defaultEnglishMessages;
1082 - nlsPlaceholders = "dollarSigns";
1083 - }
1084 - AppConfig.prototype.defineOptions = function (obj, path, options) {
1085 - if (!obj.$options)
1086 - this.$defaultOptions[path] = obj.$options = {};
1087 - Object.keys(options).forEach(function (key) {
1088 - var opt = options[key];
1089 - if (typeof opt == "string")
1090 - opt = { forwardTo: opt };
1091 - opt.name || (opt.name = key);
1092 - obj.$options[opt.name] = opt;
1093 - if ("initialValue" in opt)
1094 - obj["$" + opt.name] = opt.initialValue;
1095 - });
1096 - oop.implement(obj, optionsProvider);
1097 - return this;
1098 - };
1099 - AppConfig.prototype.resetOptions = function (obj) {
1100 - Object.keys(obj.$options).forEach(function (key) {
1101 - var opt = obj.$options[key];
1102 - if ("value" in opt)
1103 - obj.setOption(key, opt.value);
1104 - });
1105 - };
1106 - AppConfig.prototype.setDefaultValue = function (path, name, value) {
1107 - if (!path) {
1108 - for (path in this.$defaultOptions)
1109 - if (this.$defaultOptions[path][name])
1110 - break;
1111 - if (!this.$defaultOptions[path][name])
1112 - return false;
1113 - }
1114 - var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});
1115 - if (opts[name]) {
1116 - if (opts.forwardTo)
1117 - this.setDefaultValue(opts.forwardTo, name, value);
1118 - else
1119 - opts[name].value = value;
1120 - }
1121 - };
1122 - AppConfig.prototype.setDefaultValues = function (path, optionHash) {
1123 - Object.keys(optionHash).forEach(function (key) {
1124 - this.setDefaultValue(path, key, optionHash[key]);
1125 - }, this);
1126 - };
1127 - AppConfig.prototype.setMessages = function (value, options) {
1128 - messages = value;
1129 - if (options && options.placeholders) {
1130 - nlsPlaceholders = options.placeholders;
1131 - }
1132 - };
1133 - AppConfig.prototype.nls = function (key, defaultString, params) {
1134 - if (!messages[key]) {
1135 - warn("No message found for the key '" + key + "' in the provided messages, trying to find a translation for the default string '" + defaultString + "'.");
1136 - if (!messages[defaultString]) {
1137 - warn("No message found for the default string '" + defaultString + "' in the provided messages. Falling back to the default English message.");
1138 - }
1139 - }
1140 - var translated = messages[key] || messages[defaultString] || defaultString;
1141 - if (params) {
1142 - if (nlsPlaceholders === "dollarSigns") {
1143 - translated = translated.replace(/\$(\$|[\d]+)/g, function (_, dollarMatch) {
1144 - if (dollarMatch == "$")
1145 - return "$";
1146 - return params[dollarMatch];
1147 - });
1148 - }
1149 - if (nlsPlaceholders === "curlyBrackets") {
1150 - translated = translated.replace(/\{([^\}]+)\}/g, function (_, curlyBracketMatch) {
1151 - return params[curlyBracketMatch];
1152 - });
1153 - }
1154 - }
1155 - return translated;
1156 - };
1157 - return AppConfig;
1158 -}());
1159 -AppConfig.prototype.warn = warn;
1160 -AppConfig.prototype.reportError = reportError;
1161 -oop.implement(AppConfig.prototype, EventEmitter);
1162 -exports.AppConfig = AppConfig;
1163 -
1164 -});
1165 -
1166 -ace.define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n";
1167 -
1168 -});
1169 -
1170 -ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict";
1171 -exports.isDark = false;
1172 -exports.cssClass = "ace-tm";
1173 -exports.cssText = require("./textmate-css");
1174 -exports.$id = "ace/theme/textmate";
1175 -var dom = require("../lib/dom");
1176 -dom.importCssString(exports.cssText, exports.cssClass, false);
1177 -
1178 -});
1179 -
1180 -ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict";
1181 -var lang = require("./lib/lang");
1182 -var net = require("./lib/net");
1183 -var dom = require("./lib/dom");
1184 -var AppConfig = require("./lib/app_config").AppConfig;
1185 -module.exports = exports = new AppConfig();
1186 -var options = {
1187 - packaged: false,
1188 - workerPath: null,
1189 - modePath: null,
1190 - themePath: null,
1191 - basePath: "",
1192 - suffix: ".js",
1193 - $moduleUrls: {},
1194 - loadWorkerFromBlob: true,
1195 - sharedPopups: false,
1196 - useStrictCSP: null
1197 -};
1198 -exports.get = function (key) {
1199 - if (!options.hasOwnProperty(key))
1200 - throw new Error("Unknown config key: " + key);
1201 - return options[key];
1202 -};
1203 -exports.set = function (key, value) {
1204 - if (options.hasOwnProperty(key))
1205 - options[key] = value;
1206 - else if (this.setDefaultValue("", key, value) == false)
1207 - throw new Error("Unknown config key: " + key);
1208 - if (key == "useStrictCSP")
1209 - dom.useStrictCSP(value);
1210 -};
1211 -exports.all = function () {
1212 - return lang.copyObject(options);
1213 -};
1214 -exports.$modes = {};
1215 -exports.moduleUrl = function (name, component) {
1216 - if (options.$moduleUrls[name])
1217 - return options.$moduleUrls[name];
1218 - var parts = name.split("/");
1219 - component = component || parts[parts.length - 2] || "";
1220 - var sep = component == "snippets" ? "/" : "-";
1221 - var base = parts[parts.length - 1];
1222 - if (component == "worker" && sep == "-") {
1223 - var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g");
1224 - base = base.replace(re, "");
1225 - }
1226 - if ((!base || base == component) && parts.length > 1)
1227 - base = parts[parts.length - 2];
1228 - var path = options[component + "Path"];
1229 - if (path == null) {
1230 - path = options.basePath;
1231 - }
1232 - else if (sep == "/") {
1233 - component = sep = "";
1234 - }
1235 - if (path && path.slice(-1) != "/")
1236 - path += "/";
1237 - return path + component + sep + base + this.get("suffix");
1238 -};
1239 -exports.setModuleUrl = function (name, subst) {
1240 - return options.$moduleUrls[name] = subst;
1241 -};
1242 -var loader = function (moduleName, cb) {
1243 - if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate")
1244 - return cb(null, require("./theme/textmate"));
1245 - if (customLoader)
1246 - return customLoader(moduleName, cb);
1247 - console.error("loader is not configured");
1248 -};
1249 -var customLoader;
1250 -exports.setLoader = function (cb) {
1251 - customLoader = cb;
1252 -};
1253 -exports.dynamicModules = Object.create(null);
1254 -exports.$loading = {};
1255 -exports.$loaded = {};
1256 -exports.loadModule = function (moduleId, onLoad) {
1257 - var loadedModule;
1258 - if (Array.isArray(moduleId)) {
1259 - var moduleType = moduleId[0];
1260 - var moduleName = moduleId[1];
1261 - }
1262 - else if (typeof moduleId == "string") {
1263 - var moduleName = moduleId;
1264 - }
1265 - var load = function (module) {
1266 - if (module && !exports.$loading[moduleName])
1267 - return onLoad && onLoad(module);
1268 - if (!exports.$loading[moduleName])
1269 - exports.$loading[moduleName] = [];
1270 - exports.$loading[moduleName].push(onLoad);
1271 - if (exports.$loading[moduleName].length > 1)
1272 - return;
1273 - var afterLoad = function () {
1274 - loader(moduleName, function (err, module) {
1275 - if (module)
1276 - exports.$loaded[moduleName] = module;
1277 - exports._emit("load.module", { name: moduleName, module: module });
1278 - var listeners = exports.$loading[moduleName];
1279 - exports.$loading[moduleName] = null;
1280 - listeners.forEach(function (onLoad) {
1281 - onLoad && onLoad(module);
1282 - });
1283 - });
1284 - };
1285 - if (!exports.get("packaged"))
1286 - return afterLoad();
1287 - net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);
1288 - reportErrorIfPathIsNotConfigured();
1289 - };
1290 - if (exports.dynamicModules[moduleName]) {
1291 - exports.dynamicModules[moduleName]().then(function (module) {
1292 - if (module.default) {
1293 - load(module.default);
1294 - }
1295 - else {
1296 - load(module);
1297 - }
1298 - });
1299 - }
1300 - else {
1301 - try {
1302 - loadedModule = this.$require(moduleName);
1303 - }
1304 - catch (e) { }
1305 - load(loadedModule || exports.$loaded[moduleName]);
1306 - }
1307 -};
1308 -exports.$require = function (moduleName) {
1309 - if (typeof module["require"] == "function") {
1310 - var req = "require";
1311 - return module[req](moduleName);
1312 - }
1313 -};
1314 -exports.setModuleLoader = function (moduleName, onLoad) {
1315 - exports.dynamicModules[moduleName] = onLoad;
1316 -};
1317 -var reportErrorIfPathIsNotConfigured = function () {
1318 - if (!options.basePath && !options.workerPath
1319 - && !options.modePath && !options.themePath
1320 - && !Object.keys(options.$moduleUrls).length) {
1321 - console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver");
1322 - reportErrorIfPathIsNotConfigured = function () { };
1323 - }
1324 -};
1325 -exports.version = "1.36.5";
1326 -
1327 -});
1328 -
1329 -ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) {
1330 -"use strict";
1331 -
1332 -require("./lib/fixoldbrowsers");
1333 -var config = require("./config");
1334 -config.setLoader(function(moduleName, cb) {
1335 - require([moduleName], function(module) {
1336 - cb(null, module);
1337 - });
1338 -});
1339 -
1340 -var global = (function() {
1341 - return this || typeof window != "undefined" && window;
1342 -})();
1343 -
1344 -module.exports = function(ace) {
1345 - config.init = init;
1346 - config.$require = require;
1347 - ace.require = require;
1348 -
1349 - if (typeof define === "function")
1350 - ace.define = define;
1351 -};
1352 -init(true);function init(packaged) {
1353 -
1354 - if (!global || !global.document)
1355 - return;
1356 -
1357 - config.set("packaged", packaged || require.packaged || module.packaged || (global.define && define.packaged));
1358 -
1359 - var scriptOptions = {};
1360 - var scriptUrl = "";
1361 - var currentScript = (document.currentScript || document._currentScript ); // native or polyfill
1362 - var currentDocument = currentScript && currentScript.ownerDocument || document;
1363 -
1364 - if (currentScript && currentScript.src) {
1365 - scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || "";
1366 - }
1367 -
1368 - var scripts = currentDocument.getElementsByTagName("script");
1369 - for (var i=0; i<scripts.length; i++) {
1370 - var script = scripts[i];
1371 -
1372 - var src = script.src || script.getAttribute("src");
1373 - if (!src)
1374 - continue;
1375 -
1376 - var attributes = script.attributes;
1377 - for (var j=0, l=attributes.length; j < l; j++) {
1378 - var attr = attributes[j];
1379 - if (attr.name.indexOf("data-ace-") === 0) {
1380 - scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/, ""))] = attr.value;
1381 - }
1382 - }
1383 -
1384 - var m = src.match(/^(.*)\/ace([\-.]\w+)?\.js(\?|$)/);
1385 - if (m)
1386 - scriptUrl = m[1];
1387 - }
1388 -
1389 - if (scriptUrl) {
1390 - scriptOptions.base = scriptOptions.base || scriptUrl;
1391 - scriptOptions.packaged = true;
1392 - }
1393 -
1394 - scriptOptions.basePath = scriptOptions.base;
1395 - scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;
1396 - scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;
1397 - scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;
1398 - delete scriptOptions.base;
1399 -
1400 - for (var key in scriptOptions)
1401 - if (typeof scriptOptions[key] !== "undefined")
1402 - config.set(key, scriptOptions[key]);
1403 -}
1404 -
1405 -function deHyphenate(str) {
1406 - return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });
1407 -}
1408 -});
1409 -
1410 -ace.define("ace/range",["require","exports","module"], function(require, exports, module){"use strict";
1411 -var Range = /** @class */ (function () {
1412 - function Range(startRow, startColumn, endRow, endColumn) {
1413 - this.start = {
1414 - row: startRow,
1415 - column: startColumn
1416 - };
1417 - this.end = {
1418 - row: endRow,
1419 - column: endColumn
1420 - };
1421 - }
1422 - Range.prototype.isEqual = function (range) {
1423 - return this.start.row === range.start.row &&
1424 - this.end.row === range.end.row &&
1425 - this.start.column === range.start.column &&
1426 - this.end.column === range.end.column;
1427 - };
1428 - Range.prototype.toString = function () {
1429 - return ("Range: [" + this.start.row + "/" + this.start.column +
1430 - "] -> [" + this.end.row + "/" + this.end.column + "]");
1431 - };
1432 - Range.prototype.contains = function (row, column) {
1433 - return this.compare(row, column) == 0;
1434 - };
1435 - Range.prototype.compareRange = function (range) {
1436 - var cmp, end = range.end, start = range.start;
1437 - cmp = this.compare(end.row, end.column);
1438 - if (cmp == 1) {
1439 - cmp = this.compare(start.row, start.column);
1440 - if (cmp == 1) {
1441 - return 2;
1442 - }
1443 - else if (cmp == 0) {
1444 - return 1;
1445 - }
1446 - else {
1447 - return 0;
1448 - }
1449 - }
1450 - else if (cmp == -1) {
1451 - return -2;
1452 - }
1453 - else {
1454 - cmp = this.compare(start.row, start.column);
1455 - if (cmp == -1) {
1456 - return -1;
1457 - }
1458 - else if (cmp == 1) {
1459 - return 42;
1460 - }
1461 - else {
1462 - return 0;
1463 - }
1464 - }
1465 - };
1466 - Range.prototype.comparePoint = function (p) {
1467 - return this.compare(p.row, p.column);
1468 - };
1469 - Range.prototype.containsRange = function (range) {
1470 - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
1471 - };
1472 - Range.prototype.intersects = function (range) {
1473 - var cmp = this.compareRange(range);
1474 - return (cmp == -1 || cmp == 0 || cmp == 1);
1475 - };
1476 - Range.prototype.isEnd = function (row, column) {
1477 - return this.end.row == row && this.end.column == column;
1478 - };
1479 - Range.prototype.isStart = function (row, column) {
1480 - return this.start.row == row && this.start.column == column;
1481 - };
1482 - Range.prototype.setStart = function (row, column) {
1483 - if (typeof row == "object") {
1484 - this.start.column = row.column;
1485 - this.start.row = row.row;
1486 - }
1487 - else {
1488 - this.start.row = row;
1489 - this.start.column = column;
1490 - }
1491 - };
1492 - Range.prototype.setEnd = function (row, column) {
1493 - if (typeof row == "object") {
1494 - this.end.column = row.column;
1495 - this.end.row = row.row;
1496 - }
1497 - else {
1498 - this.end.row = row;
1499 - this.end.column = column;
1500 - }
1501 - };
1502 - Range.prototype.inside = function (row, column) {
1503 - if (this.compare(row, column) == 0) {
1504 - if (this.isEnd(row, column) || this.isStart(row, column)) {
1505 - return false;
1506 - }
1507 - else {
1508 - return true;
1509 - }
1510 - }
1511 - return false;
1512 - };
1513 - Range.prototype.insideStart = function (row, column) {
1514 - if (this.compare(row, column) == 0) {
1515 - if (this.isEnd(row, column)) {
1516 - return false;
1517 - }
1518 - else {
1519 - return true;
1520 - }
1521 - }
1522 - return false;
1523 - };
1524 - Range.prototype.insideEnd = function (row, column) {
1525 - if (this.compare(row, column) == 0) {
1526 - if (this.isStart(row, column)) {
1527 - return false;
1528 - }
1529 - else {
1530 - return true;
1531 - }
1532 - }
1533 - return false;
1534 - };
1535 - Range.prototype.compare = function (row, column) {
1536 - if (!this.isMultiLine()) {
1537 - if (row === this.start.row) {
1538 - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
1539 - }
1540 - }
1541 - if (row < this.start.row)
1542 - return -1;
1543 - if (row > this.end.row)
1544 - return 1;
1545 - if (this.start.row === row)
1546 - return column >= this.start.column ? 0 : -1;
1547 - if (this.end.row === row)
1548 - return column <= this.end.column ? 0 : 1;
1549 - return 0;
1550 - };
1551 - Range.prototype.compareStart = function (row, column) {
1552 - if (this.start.row == row && this.start.column == column) {
1553 - return -1;
1554 - }
1555 - else {
1556 - return this.compare(row, column);
1557 - }
1558 - };
1559 - Range.prototype.compareEnd = function (row, column) {
1560 - if (this.end.row == row && this.end.column == column) {
1561 - return 1;
1562 - }
1563 - else {
1564 - return this.compare(row, column);
1565 - }
1566 - };
1567 - Range.prototype.compareInside = function (row, column) {
1568 - if (this.end.row == row && this.end.column == column) {
1569 - return 1;
1570 - }
1571 - else if (this.start.row == row && this.start.column == column) {
1572 - return -1;
1573 - }
1574 - else {
1575 - return this.compare(row, column);
1576 - }
1577 - };
1578 - Range.prototype.clipRows = function (firstRow, lastRow) {
1579 - if (this.end.row > lastRow)
1580 - var end = { row: lastRow + 1, column: 0 };
1581 - else if (this.end.row < firstRow)
1582 - var end = { row: firstRow, column: 0 };
1583 - if (this.start.row > lastRow)
1584 - var start = { row: lastRow + 1, column: 0 };
1585 - else if (this.start.row < firstRow)
1586 - var start = { row: firstRow, column: 0 };
1587 - return Range.fromPoints(start || this.start, end || this.end);
1588 - };
1589 - Range.prototype.extend = function (row, column) {
1590 - var cmp = this.compare(row, column);
1591 - if (cmp == 0)
1592 - return this;
1593 - else if (cmp == -1)
1594 - var start = { row: row, column: column };
1595 - else
1596 - var end = { row: row, column: column };
1597 - return Range.fromPoints(start || this.start, end || this.end);
1598 - };
1599 - Range.prototype.isEmpty = function () {
1600 - return (this.start.row === this.end.row && this.start.column === this.end.column);
1601 - };
1602 - Range.prototype.isMultiLine = function () {
1603 - return (this.start.row !== this.end.row);
1604 - };
1605 - Range.prototype.clone = function () {
1606 - return Range.fromPoints(this.start, this.end);
1607 - };
1608 - Range.prototype.collapseRows = function () {
1609 - if (this.end.column == 0)
1610 - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);
1611 - else
1612 - return new Range(this.start.row, 0, this.end.row, 0);
1613 - };
1614 - Range.prototype.toScreenRange = function (session) {
1615 - var screenPosStart = session.documentToScreenPosition(this.start);
1616 - var screenPosEnd = session.documentToScreenPosition(this.end);
1617 - return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);
1618 - };
1619 - Range.prototype.moveBy = function (row, column) {
1620 - this.start.row += row;
1621 - this.start.column += column;
1622 - this.end.row += row;
1623 - this.end.column += column;
1624 - };
1625 - return Range;
1626 -}());
1627 -Range.fromPoints = function (start, end) {
1628 - return new Range(start.row, start.column, end.row, end.column);
1629 -};
1630 -Range.comparePoints = function (p1, p2) {
1631 - return p1.row - p2.row || p1.column - p2.column;
1632 -};
1633 -exports.Range = Range;
1634 -
1635 -});
1636 -
1637 -ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){"use strict";
1638 -var oop = require("./oop");
1639 -var Keys = {
1640 - MODIFIER_KEYS: {
1641 - 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',
1642 - 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'
1643 - },
1644 - KEY_MODS: {
1645 - "ctrl": 1, "alt": 2, "option": 2, "shift": 4,
1646 - "super": 8, "meta": 8, "command": 8, "cmd": 8,
1647 - "control": 1
1648 - },
1649 - FUNCTION_KEYS: {
1650 - 8: "Backspace",
1651 - 9: "Tab",
1652 - 13: "Return",
1653 - 19: "Pause",
1654 - 27: "Esc",
1655 - 32: "Space",
1656 - 33: "PageUp",
1657 - 34: "PageDown",
1658 - 35: "End",
1659 - 36: "Home",
1660 - 37: "Left",
1661 - 38: "Up",
1662 - 39: "Right",
1663 - 40: "Down",
1664 - 44: "Print",
1665 - 45: "Insert",
1666 - 46: "Delete",
1667 - '-13': "NumpadEnter",
1668 - 144: "Numlock",
1669 - 145: "Scrolllock"
1670 - },
1671 - PRINTABLE_KEYS: {
1672 - 32: ' ', 59: ';', 61: '=', 107: '+', 109: '-', 110: '.',
1673 - 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',
1674 - 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*'
1675 - }
1676 -};
1677 -var codeToKeyCode = {
1678 - Command: 224,
1679 - Backspace: 8,
1680 - Tab: 9,
1681 - Return: 13,
1682 - Enter: 13,
1683 - Pause: 19,
1684 - Escape: 27,
1685 - PageUp: 33,
1686 - PageDown: 34,
1687 - End: 35,
1688 - Home: 36,
1689 - Insert: 45,
1690 - Delete: 46,
1691 - ArrowLeft: 37,
1692 - ArrowUp: 38,
1693 - ArrowRight: 39,
1694 - ArrowDown: 40,
1695 - Backquote: 192,
1696 - Minus: 189,
1697 - Equal: 187,
1698 - BracketLeft: 219,
1699 - Backslash: 220,
1700 - BracketRight: 221,
1701 - Semicolon: 186,
1702 - Quote: 222,
1703 - Comma: 188,
1704 - Period: 190,
1705 - Slash: 191,
1706 - Space: 32,
1707 - NumpadAdd: 107,
1708 - NumpadDecimal: 110,
1709 - NumpadSubtract: 109,
1710 - NumpadDivide: 111,
1711 - NumpadMultiply: 106
1712 -};
1713 -for (var i = 0; i < 10; i++) {
1714 - codeToKeyCode["Digit" + i] = 48 + i;
1715 - codeToKeyCode["Numpad" + i] = 96 + i;
1716 - Keys.PRINTABLE_KEYS[48 + i] = "" + i;
1717 - Keys.FUNCTION_KEYS[96 + i] = "Numpad" + i;
1718 -}
1719 -for (var i = 65; i < 91; i++) {
1720 - var chr = String.fromCharCode(i + 32);
1721 - codeToKeyCode["Key" + chr.toUpperCase()] = i;
1722 - Keys.PRINTABLE_KEYS[i] = chr;
1723 -}
1724 -for (var i = 1; i < 13; i++) {
1725 - codeToKeyCode["F" + i] = 111 + i;
1726 - Keys.FUNCTION_KEYS[111 + i] = "F" + i;
1727 -}
1728 -var modifiers = {
1729 - Shift: 16,
1730 - Control: 17,
1731 - Alt: 18,
1732 - Meta: 224
1733 -};
1734 -for (var mod in modifiers) {
1735 - codeToKeyCode[mod] = codeToKeyCode[mod + "Left"]
1736 - = codeToKeyCode[mod + "Right"] = modifiers[mod];
1737 -}
1738 -exports.$codeToKeyCode = codeToKeyCode;
1739 -Keys.PRINTABLE_KEYS[173] = '-';
1740 -for (var j in Keys.FUNCTION_KEYS) {
1741 - var name = Keys.FUNCTION_KEYS[j].toLowerCase();
1742 - Keys[name] = parseInt(j, 10);
1743 -}
1744 -for (var j in Keys.PRINTABLE_KEYS) {
1745 - var name = Keys.PRINTABLE_KEYS[j].toLowerCase();
1746 - Keys[name] = parseInt(j, 10);
1747 -}
1748 -oop.mixin(Keys, Keys.MODIFIER_KEYS);
1749 -oop.mixin(Keys, Keys.PRINTABLE_KEYS);
1750 -oop.mixin(Keys, Keys.FUNCTION_KEYS);
1751 -Keys.enter = Keys["return"];
1752 -Keys.escape = Keys.esc;
1753 -Keys.del = Keys["delete"];
1754 -(function () {
1755 - var mods = ["cmd", "ctrl", "alt", "shift"];
1756 - for (var i = Math.pow(2, mods.length); i--;) {
1757 - Keys.KEY_MODS[i] = mods.filter(function (x) {
1758 - return i & Keys.KEY_MODS[x];
1759 - }).join("-") + "-";
1760 - }
1761 -})();
1762 -Keys.KEY_MODS[0] = "";
1763 -Keys.KEY_MODS[-1] = "input-";
1764 -oop.mixin(exports, Keys);
1765 -exports.default = exports;
1766 -exports.keyCodeToString = function (keyCode) {
1767 - var keyString = Keys[keyCode];
1768 - if (typeof keyString != "string")
1769 - keyString = String.fromCharCode(keyCode);
1770 - return keyString.toLowerCase();
1771 -};
1772 -
1773 -});
1774 -
1775 -ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; var keys = require("./keys");
1776 -var useragent = require("./useragent");
1777 -var pressedKeys = null;
1778 -var ts = 0;
1779 -var activeListenerOptions;
1780 -function detectListenerOptionsSupport() {
1781 - activeListenerOptions = false;
1782 - try {
1783 - document.createComment("").addEventListener("test", function () { }, {
1784 - get passive() {
1785 - activeListenerOptions = { passive: false };
1786 - return true;
1787 - }
1788 - });
1789 - }
1790 - catch (e) { }
1791 -}
1792 -function getListenerOptions() {
1793 - if (activeListenerOptions == undefined)
1794 - detectListenerOptionsSupport();
1795 - return activeListenerOptions;
1796 -}
1797 -function EventListener(elem, type, callback) {
1798 - this.elem = elem;
1799 - this.type = type;
1800 - this.callback = callback;
1801 -}
1802 -EventListener.prototype.destroy = function () {
1803 - removeListener(this.elem, this.type, this.callback);
1804 - this.elem = this.type = this.callback = undefined;
1805 -};
1806 -var addListener = exports.addListener = function (elem, type, callback, /**@type{any?}*/ destroyer) {
1807 - elem.addEventListener(type, callback, getListenerOptions());
1808 - if (destroyer)
1809 - destroyer.$toDestroy.push(new EventListener(elem, type, callback));
1810 -};
1811 -var removeListener = exports.removeListener = function (elem, type, callback) {
1812 - elem.removeEventListener(type, callback, getListenerOptions());
1813 -};
1814 -exports.stopEvent = function (e) {
1815 - exports.stopPropagation(e);
1816 - exports.preventDefault(e);
1817 - return false;
1818 -};
1819 -exports.stopPropagation = function (e) {
1820 - if (e.stopPropagation)
1821 - e.stopPropagation();
1822 -};
1823 -exports.preventDefault = function (e) {
1824 - if (e.preventDefault)
1825 - e.preventDefault();
1826 -};
1827 -exports.getButton = function (e) {
1828 - if (e.type == "dblclick")
1829 - return 0;
1830 - if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))
1831 - return 2;
1832 - return e.button;
1833 -};
1834 -exports.capture = function (el, eventHandler, releaseCaptureHandler) {
1835 - var ownerDocument = el && el.ownerDocument || document;
1836 - function onMouseUp(e) {
1837 - eventHandler && eventHandler(e);
1838 - releaseCaptureHandler && releaseCaptureHandler(e);
1839 - removeListener(ownerDocument, "mousemove", eventHandler);
1840 - removeListener(ownerDocument, "mouseup", onMouseUp);
1841 - removeListener(ownerDocument, "dragstart", onMouseUp);
1842 - }
1843 - addListener(ownerDocument, "mousemove", eventHandler);
1844 - addListener(ownerDocument, "mouseup", onMouseUp);
1845 - addListener(ownerDocument, "dragstart", onMouseUp);
1846 - return onMouseUp;
1847 -};
1848 -exports.addMouseWheelListener = function (el, callback, destroyer) {
1849 - addListener(el, "wheel", function (e) {
1850 - var factor = 0.15;
1851 - var deltaX = e.deltaX || 0;
1852 - var deltaY = e.deltaY || 0;
1853 - switch (e.deltaMode) {
1854 - case e.DOM_DELTA_PIXEL:
1855 - e.wheelX = deltaX * factor;
1856 - e.wheelY = deltaY * factor;
1857 - break;
1858 - case e.DOM_DELTA_LINE:
1859 - var linePixels = 15;
1860 - e.wheelX = deltaX * linePixels;
1861 - e.wheelY = deltaY * linePixels;
1862 - break;
1863 - case e.DOM_DELTA_PAGE:
1864 - var pagePixels = 150;
1865 - e.wheelX = deltaX * pagePixels;
1866 - e.wheelY = deltaY * pagePixels;
1867 - break;
1868 - }
1869 - callback(e);
1870 - }, destroyer);
1871 -};
1872 -exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {
1873 - var clicks = 0;
1874 - var startX, startY, timer;
1875 - var eventNames = {
1876 - 2: "dblclick",
1877 - 3: "tripleclick",
1878 - 4: "quadclick"
1879 - };
1880 - function onMousedown(e) {
1881 - if (exports.getButton(e) !== 0) {
1882 - clicks = 0;
1883 - }
1884 - else if (e.detail > 1) {
1885 - clicks++;
1886 - if (clicks > 4)
1887 - clicks = 1;
1888 - }
1889 - else {
1890 - clicks = 1;
1891 - }
1892 - if (useragent.isIE) {
1893 - var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;
1894 - if (!timer || isNewClick)
1895 - clicks = 1;
1896 - if (timer)
1897 - clearTimeout(timer);
1898 - timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);
1899 - if (clicks == 1) {
1900 - startX = e.clientX;
1901 - startY = e.clientY;
1902 - }
1903 - }
1904 - e._clicks = clicks;
1905 - eventHandler[callbackName]("mousedown", e);
1906 - if (clicks > 4)
1907 - clicks = 0;
1908 - else if (clicks > 1)
1909 - return eventHandler[callbackName](eventNames[clicks], e);
1910 - }
1911 - if (!Array.isArray(elements))
1912 - elements = [elements];
1913 - elements.forEach(function (el) {
1914 - addListener(el, "mousedown", onMousedown, destroyer);
1915 - });
1916 -};
1917 -function getModifierHash(e) {
1918 - return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
1919 -}
1920 -exports.getModifierString = function (e) {
1921 - return keys.KEY_MODS[getModifierHash(e)];
1922 -};
1923 -function normalizeCommandKeys(callback, e, keyCode) {
1924 - var hashId = getModifierHash(e);
1925 - if (!keyCode && e.code) {
1926 - keyCode = keys.$codeToKeyCode[e.code] || keyCode;
1927 - }
1928 - if (!useragent.isMac && pressedKeys) {
1929 - if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win")))
1930 - hashId |= 8;
1931 - if (pressedKeys.altGr) {
1932 - if ((3 & hashId) != 3)
1933 - pressedKeys.altGr = 0;
1934 - else
1935 - return;
1936 - }
1937 - if (keyCode === 18 || keyCode === 17) {
1938 - var location = e.location;
1939 - if (keyCode === 17 && location === 1) {
1940 - if (pressedKeys[keyCode] == 1)
1941 - ts = e.timeStamp;
1942 - }
1943 - else if (keyCode === 18 && hashId === 3 && location === 2) {
1944 - var dt = e.timeStamp - ts;
1945 - if (dt < 50)
1946 - pressedKeys.altGr = true;
1947 - }
1948 - }
1949 - }
1950 - if (keyCode in keys.MODIFIER_KEYS) {
1951 - keyCode = -1;
1952 - }
1953 - if (!hashId && keyCode === 13) {
1954 - if (e.location === 3) {
1955 - callback(e, hashId, -keyCode);
1956 - if (e.defaultPrevented)
1957 - return;
1958 - }
1959 - }
1960 - if (useragent.isChromeOS && hashId & 8) {
1961 - callback(e, hashId, keyCode);
1962 - if (e.defaultPrevented)
1963 - return;
1964 - else
1965 - hashId &= ~8;
1966 - }
1967 - if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {
1968 - return false;
1969 - }
1970 - return callback(e, hashId, keyCode);
1971 -}
1972 -exports.addCommandKeyListener = function (el, callback, destroyer) {
1973 - var lastDefaultPrevented = null;
1974 - addListener(el, "keydown", function (e) {
1975 - pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;
1976 - var result = normalizeCommandKeys(callback, e, e.keyCode);
1977 - lastDefaultPrevented = e.defaultPrevented;
1978 - return result;
1979 - }, destroyer);
1980 - addListener(el, "keypress", function (e) {
1981 - if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {
1982 - exports.stopEvent(e);
1983 - lastDefaultPrevented = null;
1984 - }
1985 - }, destroyer);
1986 - addListener(el, "keyup", function (e) {
1987 - pressedKeys[e.keyCode] = null;
1988 - }, destroyer);
1989 - if (!pressedKeys) {
1990 - resetPressedKeys();
1991 - addListener(window, "focus", resetPressedKeys);
1992 - }
1993 -};
1994 -function resetPressedKeys() {
1995 - pressedKeys = Object.create(null);
1996 -}
1997 -if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {
1998 - var postMessageId = 1;
1999 - exports.nextTick = function (callback, win) {
2000 - win = win || window;
2001 - var messageName = "zero-timeout-message-" + (postMessageId++);
2002 - var listener = function (e) {
2003 - if (e.data == messageName) {
2004 - exports.stopPropagation(e);
2005 - removeListener(win, "message", listener);
2006 - callback();
2007 - }
2008 - };
2009 - addListener(win, "message", listener);
2010 - win.postMessage(messageName, "*");
2011 - };
2012 -}
2013 -exports.$idleBlocked = false;
2014 -exports.onIdle = function (cb, timeout) {
2015 - return setTimeout(function handler() {
2016 - if (!exports.$idleBlocked) {
2017 - cb();
2018 - }
2019 - else {
2020 - setTimeout(handler, 100);
2021 - }
2022 - }, timeout);
2023 -};
2024 -exports.$idleBlockId = null;
2025 -exports.blockIdle = function (delay) {
2026 - if (exports.$idleBlockId)
2027 - clearTimeout(exports.$idleBlockId);
2028 - exports.$idleBlocked = true;
2029 - exports.$idleBlockId = setTimeout(function () {
2030 - exports.$idleBlocked = false;
2031 - }, delay || 100);
2032 -};
2033 -exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame
2034 - || window["mozRequestAnimationFrame"]
2035 - || window["webkitRequestAnimationFrame"]
2036 - || window["msRequestAnimationFrame"]
2037 - || window["oRequestAnimationFrame"]);
2038 -if (exports.nextFrame)
2039 - exports.nextFrame = exports.nextFrame.bind(window);
2040 -else
2041 - exports.nextFrame = function (callback) {
2042 - setTimeout(callback, 17);
2043 - };
2044 -
2045 -});
2046 -
2047 -ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict";
2048 -var $cancelT;
2049 -module.exports = {
2050 - lineMode: false,
2051 - pasteCancelled: function () {
2052 - if ($cancelT && $cancelT > Date.now() - 50)
2053 - return true;
2054 - return $cancelT = false;
2055 - },
2056 - cancel: function () {
2057 - $cancelT = Date.now();
2058 - }
2059 -};
2060 -
2061 -});
2062 -
2063 -ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict";
2064 -var event = require("../lib/event");
2065 -var nls = require("../config").nls;
2066 -var useragent = require("../lib/useragent");
2067 -var dom = require("../lib/dom");
2068 -var lang = require("../lib/lang");
2069 -var clipboard = require("../clipboard");
2070 -var BROKEN_SETDATA = useragent.isChrome < 18;
2071 -var USE_IE_MIME_TYPE = useragent.isIE;
2072 -var HAS_FOCUS_ARGS = useragent.isChrome > 63;
2073 -var MAX_LINE_LENGTH = 400;
2074 -var KEYS = require("../lib/keys");
2075 -var MODS = KEYS.KEY_MODS;
2076 -var isIOS = useragent.isIOS;
2077 -var valueResetRegex = isIOS ? /\s/ : /\n/;
2078 -var isMobile = useragent.isMobile;
2079 -var TextInput;
2080 -TextInput = function (parentNode, host) {
2081 - var text = dom.createElement("textarea");
2082 - text.className = "ace_text-input";
2083 - text.setAttribute("wrap", "off");
2084 - text.setAttribute("autocorrect", "off");
2085 - text.setAttribute("autocapitalize", "off");
2086 - text.setAttribute("spellcheck", "false");
2087 - text.style.opacity = "0";
2088 - parentNode.insertBefore(text, parentNode.firstChild);
2089 - var copied = false;
2090 - var pasted = false;
2091 - var inComposition = false;
2092 - var sendingText = false;
2093 - var tempStyle = '';
2094 - if (!isMobile)
2095 - text.style.fontSize = "1px";
2096 - var commandMode = false;
2097 - var ignoreFocusEvents = false;
2098 - var lastValue = "";
2099 - var lastSelectionStart = 0;
2100 - var lastSelectionEnd = 0;
2101 - var lastRestoreEnd = 0;
2102 - var rowStart = Number.MAX_SAFE_INTEGER;
2103 - var rowEnd = Number.MIN_SAFE_INTEGER;
2104 - var numberOfExtraLines = 0;
2105 - try {
2106 - var isFocused = document.activeElement === text;
2107 - }
2108 - catch (e) { }
2109 - this.setNumberOfExtraLines = function (number) {
2110 - rowStart = Number.MAX_SAFE_INTEGER;
2111 - rowEnd = Number.MIN_SAFE_INTEGER;
2112 - if (number < 0) {
2113 - numberOfExtraLines = 0;
2114 - return;
2115 - }
2116 - numberOfExtraLines = number;
2117 - };
2118 - this.setAriaLabel = function () {
2119 - var ariaLabel = "";
2120 - if (host.$textInputAriaLabel) {
2121 - ariaLabel += "".concat(host.$textInputAriaLabel, ", ");
2122 - }
2123 - if (host.session) {
2124 - var row = host.session.selection.cursor.row;
2125 - ariaLabel += nls("text-input.aria-label", "Cursor at row $0", [row + 1]);
2126 - }
2127 - text.setAttribute("aria-label", ariaLabel);
2128 - };
2129 - this.setAriaOptions = function (options) {
2130 - if (options.activeDescendant) {
2131 - text.setAttribute("aria-haspopup", "true");
2132 - text.setAttribute("aria-autocomplete", options.inline ? "both" : "list");
2133 - text.setAttribute("aria-activedescendant", options.activeDescendant);
2134 - }
2135 - else {
2136 - text.setAttribute("aria-haspopup", "false");
2137 - text.setAttribute("aria-autocomplete", "both");
2138 - text.removeAttribute("aria-activedescendant");
2139 - }
2140 - if (options.role) {
2141 - text.setAttribute("role", options.role);
2142 - }
2143 - if (options.setLabel) {
2144 - text.setAttribute("aria-roledescription", nls("text-input.aria-roledescription", "editor"));
2145 - this.setAriaLabel();
2146 - }
2147 - };
2148 - this.setAriaOptions({ role: "textbox" });
2149 - event.addListener(text, "blur", function (e) {
2150 - if (ignoreFocusEvents)
2151 - return;
2152 - host.onBlur(e);
2153 - isFocused = false;
2154 - }, host);
2155 - event.addListener(text, "focus", function (e) {
2156 - if (ignoreFocusEvents)
2157 - return;
2158 - isFocused = true;
2159 - if (useragent.isEdge) {
2160 - try {
2161 - if (!document.hasFocus())
2162 - return;
2163 - }
2164 - catch (e) { }
2165 - }
2166 - host.onFocus(e);
2167 - if (useragent.isEdge)
2168 - setTimeout(resetSelection);
2169 - else
2170 - resetSelection();
2171 - }, host);
2172 - this.$focusScroll = false;
2173 - this.focus = function () {
2174 - this.setAriaOptions({
2175 - setLabel: host.renderer.enableKeyboardAccessibility
2176 - });
2177 - if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser")
2178 - return text.focus({ preventScroll: true });
2179 - var top = text.style.top;
2180 - text.style.position = "fixed";
2181 - text.style.top = "0px";
2182 - try {
2183 - var isTransformed = text.getBoundingClientRect().top != 0;
2184 - }
2185 - catch (e) {
2186 - return;
2187 - }
2188 - var ancestors = [];
2189 - if (isTransformed) {
2190 - var t = text.parentElement;
2191 - while (t && t.nodeType == 1) {
2192 - ancestors.push(t);
2193 - t.setAttribute("ace_nocontext", "true");
2194 - if (!t.parentElement && t.getRootNode)
2195 - t = t.getRootNode()["host"];
2196 - else
2197 - t = t.parentElement;
2198 - }
2199 - }
2200 - text.focus({ preventScroll: true });
2201 - if (isTransformed) {
2202 - ancestors.forEach(function (p) {
2203 - p.removeAttribute("ace_nocontext");
2204 - });
2205 - }
2206 - setTimeout(function () {
2207 - text.style.position = "";
2208 - if (text.style.top == "0px")
2209 - text.style.top = top;
2210 - }, 0);
2211 - };
2212 - this.blur = function () {
2213 - text.blur();
2214 - };
2215 - this.isFocused = function () {
2216 - return isFocused;
2217 - };
2218 - host.on("beforeEndOperation", function () {
2219 - var curOp = host.curOp;
2220 - var commandName = curOp && curOp.command && curOp.command.name;
2221 - if (commandName == "insertstring")
2222 - return;
2223 - var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);
2224 - if (inComposition && isUserAction) {
2225 - lastValue = text.value = "";
2226 - onCompositionEnd();
2227 - }
2228 - resetSelection();
2229 - });
2230 - host.on("changeSelection", this.setAriaLabel);
2231 - var positionToSelection = function (row, column) {
2232 - var selection = column;
2233 - for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {
2234 - selection += host.session.getLine(row - i).length + 1;
2235 - }
2236 - return selection;
2237 - };
2238 - var resetSelection = isIOS
2239 - ? function (value) {
2240 - if (!isFocused || (copied && !value) || sendingText)
2241 - return;
2242 - if (!value)
2243 - value = "";
2244 - var newValue = "\n ab" + value + "cde fg\n";
2245 - if (newValue != text.value)
2246 - text.value = lastValue = newValue;
2247 - var selectionStart = 4;
2248 - var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));
2249 - if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {
2250 - text.setSelectionRange(selectionStart, selectionEnd);
2251 - }
2252 - lastSelectionStart = selectionStart;
2253 - lastSelectionEnd = selectionEnd;
2254 - }
2255 - : function () {
2256 - if (inComposition || sendingText)
2257 - return;
2258 - if (!isFocused && !afterContextMenu)
2259 - return;
2260 - inComposition = true;
2261 - var selectionStart = 0;
2262 - var selectionEnd = 0;
2263 - var line = "";
2264 - if (host.session) {
2265 - var selection = host.selection;
2266 - var range = selection.getRange();
2267 - var row = selection.cursor.row;
2268 - if (row === rowEnd + 1) {
2269 - rowStart = rowEnd + 1;
2270 - rowEnd = rowStart + 2 * numberOfExtraLines;
2271 - }
2272 - else if (row === rowStart - 1) {
2273 - rowEnd = rowStart - 1;
2274 - rowStart = rowEnd - 2 * numberOfExtraLines;
2275 - }
2276 - else if (row < rowStart - 1 || row > rowEnd + 1) {
2277 - rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;
2278 - rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;
2279 - }
2280 - var lines = [];
2281 - for (var i = rowStart; i <= rowEnd; i++) {
2282 - lines.push(host.session.getLine(i));
2283 - }
2284 - line = lines.join('\n');
2285 - selectionStart = positionToSelection(range.start.row, range.start.column);
2286 - selectionEnd = positionToSelection(range.end.row, range.end.column);
2287 - if (range.start.row < rowStart) {
2288 - var prevLine = host.session.getLine(rowStart - 1);
2289 - selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;
2290 - selectionEnd += prevLine.length + 1;
2291 - line = prevLine + "\n" + line;
2292 - }
2293 - else if (range.end.row > rowEnd) {
2294 - var nextLine = host.session.getLine(rowEnd + 1);
2295 - selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;
2296 - selectionEnd += line.length + 1;
2297 - line = line + "\n" + nextLine;
2298 - }
2299 - else if (isMobile && row > 0) {
2300 - line = "\n" + line;
2301 - selectionEnd += 1;
2302 - selectionStart += 1;
2303 - }
2304 - if (line.length > MAX_LINE_LENGTH) {
2305 - if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {
2306 - line = line.slice(0, MAX_LINE_LENGTH);
2307 - }
2308 - else {
2309 - line = "\n";
2310 - if (selectionStart == selectionEnd) {
2311 - selectionStart = selectionEnd = 0;
2312 - }
2313 - else {
2314 - selectionStart = 0;
2315 - selectionEnd = 1;
2316 - }
2317 - }
2318 - }
2319 - var newValue = line + "\n\n";
2320 - if (newValue != lastValue) {
2321 - text.value = lastValue = newValue;
2322 - lastSelectionStart = lastSelectionEnd = newValue.length;
2323 - }
2324 - }
2325 - if (afterContextMenu) {
2326 - lastSelectionStart = text.selectionStart;
2327 - lastSelectionEnd = text.selectionEnd;
2328 - }
2329 - if (lastSelectionEnd != selectionEnd
2330 - || lastSelectionStart != selectionStart
2331 - || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization
2332 - ) {
2333 - try {
2334 - text.setSelectionRange(selectionStart, selectionEnd);
2335 - lastSelectionStart = selectionStart;
2336 - lastSelectionEnd = selectionEnd;
2337 - }
2338 - catch (e) { }
2339 - }
2340 - inComposition = false;
2341 - };
2342 - this.resetSelection = resetSelection;
2343 - if (isFocused)
2344 - host.onFocus();
2345 - var isAllSelected = function (text) {
2346 - return text.selectionStart === 0 && text.selectionEnd >= lastValue.length
2347 - && text.value === lastValue && lastValue
2348 - && text.selectionEnd !== lastSelectionEnd;
2349 - };
2350 - var onSelect = function (e) {
2351 - if (inComposition)
2352 - return;
2353 - if (copied) {
2354 - copied = false;
2355 - }
2356 - else if (isAllSelected(text)) {
2357 - host.selectAll();
2358 - resetSelection();
2359 - }
2360 - else if (isMobile && text.selectionStart != lastSelectionStart) {
2361 - resetSelection();
2362 - }
2363 - };
2364 - var inputHandler = null;
2365 - this.setInputHandler = function (cb) { inputHandler = cb; };
2366 - this.getInputHandler = function () { return inputHandler; };
2367 - var afterContextMenu = false;
2368 - var sendText = function (value, fromInput) {
2369 - if (afterContextMenu)
2370 - afterContextMenu = false;
2371 - if (pasted) {
2372 - resetSelection();
2373 - if (value)
2374 - host.onPaste(value);
2375 - pasted = false;
2376 - return "";
2377 - }
2378 - else {
2379 - var selectionStart = text.selectionStart;
2380 - var selectionEnd = text.selectionEnd;
2381 - var extendLeft = lastSelectionStart;
2382 - var extendRight = lastValue.length - lastSelectionEnd;
2383 - var inserted = value;
2384 - var restoreStart = value.length - selectionStart;
2385 - var restoreEnd = value.length - selectionEnd;
2386 - var i = 0;
2387 - while (extendLeft > 0 && lastValue[i] == value[i]) {
2388 - i++;
2389 - extendLeft--;
2390 - }
2391 - inserted = inserted.slice(i);
2392 - i = 1;
2393 - while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {
2394 - i++;
2395 - extendRight--;
2396 - }
2397 - restoreStart -= i - 1;
2398 - restoreEnd -= i - 1;
2399 - var endIndex = inserted.length - i + 1;
2400 - if (endIndex < 0) {
2401 - extendLeft = -endIndex;
2402 - endIndex = 0;
2403 - }
2404 - inserted = inserted.slice(0, endIndex);
2405 - if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)
2406 - return "";
2407 - sendingText = true;
2408 - var shouldReset = false;
2409 - if (useragent.isAndroid && inserted == ". ") {
2410 - inserted = " ";
2411 - shouldReset = true;
2412 - }
2413 - if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {
2414 - host.onTextInput(inserted);
2415 - }
2416 - else {
2417 - host.onTextInput(inserted, {
2418 - extendLeft: extendLeft,
2419 - extendRight: extendRight,
2420 - restoreStart: restoreStart,
2421 - restoreEnd: restoreEnd
2422 - });
2423 - }
2424 - sendingText = false;
2425 - lastValue = value;
2426 - lastSelectionStart = selectionStart;
2427 - lastSelectionEnd = selectionEnd;
2428 - lastRestoreEnd = restoreEnd;
2429 - return shouldReset ? "\n" : inserted;
2430 - }
2431 - };
2432 - var onInput = function (e) {
2433 - if (inComposition)
2434 - return onCompositionUpdate();
2435 - if (e && e.inputType) {
2436 - if (e.inputType == "historyUndo")
2437 - return host.execCommand("undo");
2438 - if (e.inputType == "historyRedo")
2439 - return host.execCommand("redo");
2440 - }
2441 - var data = text.value;
2442 - var inserted = sendText(data, true);
2443 - if (data.length > MAX_LINE_LENGTH + 100
2444 - || valueResetRegex.test(inserted)
2445 - || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {
2446 - resetSelection();
2447 - }
2448 - };
2449 - var handleClipboardData = function (e, data, forceIEMime) {
2450 - var clipboardData = e.clipboardData || window["clipboardData"];
2451 - if (!clipboardData || BROKEN_SETDATA)
2452 - return;
2453 - var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain";
2454 - try {
2455 - if (data) {
2456 - return clipboardData.setData(mime, data) !== false;
2457 - }
2458 - else {
2459 - return clipboardData.getData(mime);
2460 - }
2461 - }
2462 - catch (e) {
2463 - if (!forceIEMime)
2464 - return handleClipboardData(e, data, true);
2465 - }
2466 - };
2467 - var doCopy = function (e, isCut) {
2468 - var data = host.getCopyText();
2469 - if (!data)
2470 - return event.preventDefault(e);
2471 - if (handleClipboardData(e, data)) {
2472 - if (isIOS) {
2473 - resetSelection(data);
2474 - copied = data;
2475 - setTimeout(function () {
2476 - copied = false;
2477 - }, 10);
2478 - }
2479 - isCut ? host.onCut() : host.onCopy();
2480 - event.preventDefault(e);
2481 - }
2482 - else {
2483 - copied = true;
2484 - text.value = data;
2485 - text.select();
2486 - setTimeout(function () {
2487 - copied = false;
2488 - resetSelection();
2489 - isCut ? host.onCut() : host.onCopy();
2490 - });
2491 - }
2492 - };
2493 - var onCut = function (e) {
2494 - doCopy(e, true);
2495 - };
2496 - var onCopy = function (e) {
2497 - doCopy(e, false);
2498 - };
2499 - var onPaste = function (e) {
2500 - var data = handleClipboardData(e);
2501 - if (clipboard.pasteCancelled())
2502 - return;
2503 - if (typeof data == "string") {
2504 - if (data)
2505 - host.onPaste(data, e);
2506 - if (useragent.isIE)
2507 - setTimeout(resetSelection);
2508 - event.preventDefault(e);
2509 - }
2510 - else {
2511 - text.value = "";
2512 - pasted = true;
2513 - }
2514 - };
2515 - event.addCommandKeyListener(text, function (e, hashId, keyCode) {
2516 - if (inComposition)
2517 - return;
2518 - return host.onCommandKey(e, hashId, keyCode);
2519 - }, host);
2520 - event.addListener(text, "select", onSelect, host);
2521 - event.addListener(text, "input", onInput, host);
2522 - event.addListener(text, "cut", onCut, host);
2523 - event.addListener(text, "copy", onCopy, host);
2524 - event.addListener(text, "paste", onPaste, host);
2525 - if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {
2526 - event.addListener(parentNode, "keydown", function (e) {
2527 - if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)
2528 - return;
2529 - switch (e.keyCode) {
2530 - case 67:
2531 - onCopy(e);
2532 - break;
2533 - case 86:
2534 - onPaste(e);
2535 - break;
2536 - case 88:
2537 - onCut(e);
2538 - break;
2539 - }
2540 - }, host);
2541 - }
2542 - var onCompositionStart = function (e) {
2543 - if (inComposition || !host.onCompositionStart || host.$readOnly)
2544 - return;
2545 - inComposition = {};
2546 - if (commandMode)
2547 - return;
2548 - if (e.data)
2549 - inComposition.useTextareaForIME = false;
2550 - setTimeout(onCompositionUpdate, 0);
2551 - host._signal("compositionStart");
2552 - host.on("mousedown", cancelComposition);
2553 - var range = host.getSelectionRange();
2554 - range.end.row = range.start.row;
2555 - range.end.column = range.start.column;
2556 - inComposition.markerRange = range;
2557 - inComposition.selectionStart = lastSelectionStart;
2558 - host.onCompositionStart(inComposition);
2559 - if (inComposition.useTextareaForIME) {
2560 - lastValue = text.value = "";
2561 - lastSelectionStart = 0;
2562 - lastSelectionEnd = 0;
2563 - }
2564 - else {
2565 - if (text.msGetInputContext)
2566 - inComposition.context = text.msGetInputContext();
2567 - if (text.getInputContext)
2568 - inComposition.context = text.getInputContext();
2569 - }
2570 - };
2571 - var onCompositionUpdate = function () {
2572 - if (!inComposition || !host.onCompositionUpdate || host.$readOnly)
2573 - return;
2574 - if (commandMode)
2575 - return cancelComposition();
2576 - if (inComposition.useTextareaForIME) {
2577 - host.onCompositionUpdate(text.value);
2578 - }
2579 - else {
2580 - var data = text.value;
2581 - sendText(data);
2582 - if (inComposition.markerRange) {
2583 - if (inComposition.context) {
2584 - inComposition.markerRange.start.column = inComposition.selectionStart
2585 - = inComposition.context.compositionStartOffset;
2586 - }
2587 - inComposition.markerRange.end.column = inComposition.markerRange.start.column
2588 - + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;
2589 - }
2590 - }
2591 - };
2592 - var onCompositionEnd = function (e) {
2593 - if (!host.onCompositionEnd || host.$readOnly)
2594 - return;
2595 - inComposition = false;
2596 - host.onCompositionEnd();
2597 - host.off("mousedown", cancelComposition);
2598 - if (e)
2599 - onInput();
2600 - };
2601 - function cancelComposition() {
2602 - ignoreFocusEvents = true;
2603 - text.blur();
2604 - text.focus();
2605 - ignoreFocusEvents = false;
2606 - }
2607 - var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);
2608 - function onKeyup(e) {
2609 - if (e.keyCode == 27 && text.value.length < text.selectionStart) {
2610 - if (!inComposition)
2611 - lastValue = text.value;
2612 - lastSelectionStart = lastSelectionEnd = -1;
2613 - resetSelection();
2614 - }
2615 - syncComposition();
2616 - }
2617 - event.addListener(text, "compositionstart", onCompositionStart, host);
2618 - event.addListener(text, "compositionupdate", onCompositionUpdate, host);
2619 - event.addListener(text, "keyup", onKeyup, host);
2620 - event.addListener(text, "keydown", syncComposition, host);
2621 - event.addListener(text, "compositionend", onCompositionEnd, host);
2622 - this.getElement = function () {
2623 - return text;
2624 - };
2625 - this.setCommandMode = function (value) {
2626 - commandMode = value;
2627 - text.readOnly = false;
2628 - };
2629 - this.setReadOnly = function (readOnly) {
2630 - if (!commandMode)
2631 - text.readOnly = readOnly;
2632 - };
2633 - this.setCopyWithEmptySelection = function (value) {
2634 - };
2635 - this.onContextMenu = function (e) {
2636 - afterContextMenu = true;
2637 - resetSelection();
2638 - host._emit("nativecontextmenu", { target: host, domEvent: e });
2639 - this.moveToMouse(e, true);
2640 - };
2641 - this.moveToMouse = function (e, bringToFront) {
2642 - if (!tempStyle)
2643 - tempStyle = text.style.cssText;
2644 - text.style.cssText = (bringToFront ? "z-index:100000;" : "")
2645 - + (useragent.isIE ? "opacity:0.1;" : "")
2646 - + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;";
2647 - var rect = host.container.getBoundingClientRect();
2648 - var style = dom.computedStyle(host.container);
2649 - var top = rect.top + (parseInt(style.borderTopWidth) || 0);
2650 - var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);
2651 - var maxTop = rect.bottom - top - text.clientHeight - 2;
2652 - var move = function (e) {
2653 - dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));
2654 - };
2655 - move(e);
2656 - if (e.type != "mousedown")
2657 - return;
2658 - host.renderer.$isMousePressed = true;
2659 - clearTimeout(closeTimeout);
2660 - if (useragent.isWin)
2661 - event.capture(host.container, move, onContextMenuClose);
2662 - };
2663 - this.onContextMenuClose = onContextMenuClose;
2664 - var closeTimeout;
2665 - function onContextMenuClose() {
2666 - clearTimeout(closeTimeout);
2667 - closeTimeout = setTimeout(function () {
2668 - if (tempStyle) {
2669 - text.style.cssText = tempStyle;
2670 - tempStyle = '';
2671 - }
2672 - host.renderer.$isMousePressed = false;
2673 - if (host.renderer.$keepTextAreaAtCursor)
2674 - host.renderer.$moveTextAreaToCursor();
2675 - }, 0);
2676 - }
2677 - var onContextMenu = function (e) {
2678 - host.textInput.onContextMenu(e);
2679 - onContextMenuClose();
2680 - };
2681 - event.addListener(text, "mouseup", onContextMenu, host);
2682 - event.addListener(text, "mousedown", function (e) {
2683 - e.preventDefault();
2684 - onContextMenuClose();
2685 - }, host);
2686 - event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host);
2687 - event.addListener(text, "contextmenu", onContextMenu, host);
2688 - if (isIOS)
2689 - addIosSelectionHandler(parentNode, host, text);
2690 - function addIosSelectionHandler(parentNode, host, text) {
2691 - var typingResetTimeout = null;
2692 - var typing = false;
2693 - text.addEventListener("keydown", function (e) {
2694 - if (typingResetTimeout)
2695 - clearTimeout(typingResetTimeout);
2696 - typing = true;
2697 - }, true);
2698 - text.addEventListener("keyup", function (e) {
2699 - typingResetTimeout = setTimeout(function () {
2700 - typing = false;
2701 - }, 100);
2702 - }, true);
2703 - var detectArrowKeys = function (e) {
2704 - if (document.activeElement !== text)
2705 - return;
2706 - if (typing || inComposition || host.$mouseHandler.isMousePressed)
2707 - return;
2708 - if (copied) {
2709 - return;
2710 - }
2711 - var selectionStart = text.selectionStart;
2712 - var selectionEnd = text.selectionEnd;
2713 - var key = null;
2714 - var modifier = 0;
2715 - if (selectionStart == 0) {
2716 - key = KEYS.up;
2717 - }
2718 - else if (selectionStart == 1) {
2719 - key = KEYS.home;
2720 - }
2721 - else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") {
2722 - key = KEYS.end;
2723 - }
2724 - else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") {
2725 - key = KEYS.left;
2726 - modifier = MODS.option;
2727 - }
2728 - else if (selectionStart < lastSelectionStart
2729 - || (selectionStart == lastSelectionStart
2730 - && lastSelectionEnd != lastSelectionStart
2731 - && selectionStart == selectionEnd)) {
2732 - key = KEYS.left;
2733 - }
2734 - else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) {
2735 - key = KEYS.down;
2736 - }
2737 - else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") {
2738 - key = KEYS.right;
2739 - modifier = MODS.option;
2740 - }
2741 - else if (selectionEnd > lastSelectionEnd
2742 - || (selectionEnd == lastSelectionEnd
2743 - && lastSelectionEnd != lastSelectionStart
2744 - && selectionStart == selectionEnd)) {
2745 - key = KEYS.right;
2746 - }
2747 - if (selectionStart !== selectionEnd)
2748 - modifier |= MODS.shift;
2749 - if (key) {
2750 - var result = host.onCommandKey({}, modifier, key);
2751 - if (!result && host.commands) {
2752 - key = KEYS.keyCodeToString(key);
2753 - var command = host.commands.findKeyCommand(modifier, key);
2754 - if (command)
2755 - host.execCommand(command);
2756 - }
2757 - lastSelectionStart = selectionStart;
2758 - lastSelectionEnd = selectionEnd;
2759 - resetSelection("");
2760 - }
2761 - };
2762 - document.addEventListener("selectionchange", detectArrowKeys);
2763 - host.on("destroy", function () {
2764 - document.removeEventListener("selectionchange", detectArrowKeys);
2765 - });
2766 - }
2767 - this.destroy = function () {
2768 - if (text.parentElement)
2769 - text.parentElement.removeChild(text);
2770 - };
2771 -};
2772 -exports.TextInput = TextInput;
2773 -exports.$setUserAgentForTests = function (_isMobile, _isIOS) {
2774 - isMobile = _isMobile;
2775 - isIOS = _isIOS;
2776 -};
2777 -
2778 -});
2779 -
2780 -ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict";
2781 -var useragent = require("../lib/useragent");
2782 -var DRAG_OFFSET = 0; // pixels
2783 -var SCROLL_COOLDOWN_T = 550; // milliseconds
2784 -var DefaultHandlers = /** @class */ (function () {
2785 - function DefaultHandlers(mouseHandler) {
2786 - mouseHandler.$clickSelection = null;
2787 - var editor = mouseHandler.editor;
2788 - editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler));
2789 - editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler));
2790 - editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler));
2791 - editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler));
2792 - editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler));
2793 - var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd",
2794 - "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"];
2795 - exports.forEach(function (x) {
2796 - mouseHandler[x] = this[x];
2797 - }, this);
2798 - mouseHandler["selectByLines"] = this.extendSelectionBy.bind(mouseHandler, "getLineRange");
2799 - mouseHandler["selectByWords"] = this.extendSelectionBy.bind(mouseHandler, "getWordRange");
2800 - }
2801 - DefaultHandlers.prototype.onMouseDown = function (ev) {
2802 - var inSelection = ev.inSelection();
2803 - var pos = ev.getDocumentPosition();
2804 - this.mousedownEvent = ev;
2805 - var editor = this.editor;
2806 - var button = ev.getButton();
2807 - if (button !== 0) {
2808 - var selectionRange = editor.getSelectionRange();
2809 - var selectionEmpty = selectionRange.isEmpty();
2810 - if (selectionEmpty || button == 1)
2811 - editor.selection.moveToPosition(pos);
2812 - if (button == 2) {
2813 - editor.textInput.onContextMenu(ev.domEvent);
2814 - if (!useragent.isMozilla)
2815 - ev.preventDefault();
2816 - }
2817 - return;
2818 - }
2819 - this.mousedownEvent.time = Date.now();
2820 - if (inSelection && !editor.isFocused()) {
2821 - editor.focus();
2822 - if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {
2823 - this.setState("focusWait");
2824 - this.captureMouse(ev);
2825 - return;
2826 - }
2827 - }
2828 - this.captureMouse(ev);
2829 - this.startSelect(pos, ev.domEvent._clicks > 1);
2830 - return ev.preventDefault();
2831 - };
2832 - DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {
2833 - pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
2834 - var editor = this.editor;
2835 - if (!this.mousedownEvent)
2836 - return;
2837 - if (this.mousedownEvent.getShiftKey())
2838 - editor.selection.selectToPosition(pos);
2839 - else if (!waitForClickSelection)
2840 - editor.selection.moveToPosition(pos);
2841 - if (!waitForClickSelection)
2842 - this.select();
2843 - editor.setStyle("ace_selecting");
2844 - this.setState("select");
2845 - };
2846 - DefaultHandlers.prototype.select = function () {
2847 - var anchor, editor = this.editor;
2848 - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
2849 - if (this.$clickSelection) {
2850 - var cmp = this.$clickSelection.comparePoint(cursor);
2851 - if (cmp == -1) {
2852 - anchor = this.$clickSelection.end;
2853 - }
2854 - else if (cmp == 1) {
2855 - anchor = this.$clickSelection.start;
2856 - }
2857 - else {
2858 - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
2859 - cursor = orientedRange.cursor;
2860 - anchor = orientedRange.anchor;
2861 - }
2862 - editor.selection.setSelectionAnchor(anchor.row, anchor.column);
2863 - }
2864 - editor.selection.selectToPosition(cursor);
2865 - editor.renderer.scrollCursorIntoView();
2866 - };
2867 - DefaultHandlers.prototype.extendSelectionBy = function (unitName) {
2868 - var anchor, editor = this.editor;
2869 - var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
2870 - var range = editor.selection[unitName](cursor.row, cursor.column);
2871 - if (this.$clickSelection) {
2872 - var cmpStart = this.$clickSelection.comparePoint(range.start);
2873 - var cmpEnd = this.$clickSelection.comparePoint(range.end);
2874 - if (cmpStart == -1 && cmpEnd <= 0) {
2875 - anchor = this.$clickSelection.end;
2876 - if (range.end.row != cursor.row || range.end.column != cursor.column)
2877 - cursor = range.start;
2878 - }
2879 - else if (cmpEnd == 1 && cmpStart >= 0) {
2880 - anchor = this.$clickSelection.start;
2881 - if (range.start.row != cursor.row || range.start.column != cursor.column)
2882 - cursor = range.end;
2883 - }
2884 - else if (cmpStart == -1 && cmpEnd == 1) {
2885 - cursor = range.end;
2886 - anchor = range.start;
2887 - }
2888 - else {
2889 - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
2890 - cursor = orientedRange.cursor;
2891 - anchor = orientedRange.anchor;
2892 - }
2893 - editor.selection.setSelectionAnchor(anchor.row, anchor.column);
2894 - }
2895 - editor.selection.selectToPosition(cursor);
2896 - editor.renderer.scrollCursorIntoView();
2897 - };
2898 - DefaultHandlers.prototype.selectByLinesEnd = function () {
2899 - this.$clickSelection = null;
2900 - this.editor.unsetStyle("ace_selecting");
2901 - };
2902 - DefaultHandlers.prototype.focusWait = function () {
2903 - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
2904 - var time = Date.now();
2905 - if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)
2906 - this.startSelect(this.mousedownEvent.getDocumentPosition());
2907 - };
2908 - DefaultHandlers.prototype.onDoubleClick = function (ev) {
2909 - var pos = ev.getDocumentPosition();
2910 - var editor = this.editor;
2911 - var session = editor.session;
2912 - var range = session.getBracketRange(pos);
2913 - if (range) {
2914 - if (range.isEmpty()) {
2915 - range.start.column--;
2916 - range.end.column++;
2917 - }
2918 - this.setState("select");
2919 - }
2920 - else {
2921 - range = editor.selection.getWordRange(pos.row, pos.column);
2922 - this.setState("selectByWords");
2923 - }
2924 - this.$clickSelection = range;
2925 - this.select();
2926 - };
2927 - DefaultHandlers.prototype.onTripleClick = function (ev) {
2928 - var pos = ev.getDocumentPosition();
2929 - var editor = this.editor;
2930 - this.setState("selectByLines");
2931 - var range = editor.getSelectionRange();
2932 - if (range.isMultiLine() && range.contains(pos.row, pos.column)) {
2933 - this.$clickSelection = editor.selection.getLineRange(range.start.row);
2934 - this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;
2935 - }
2936 - else {
2937 - this.$clickSelection = editor.selection.getLineRange(pos.row);
2938 - }
2939 - this.select();
2940 - };
2941 - DefaultHandlers.prototype.onQuadClick = function (ev) {
2942 - var editor = this.editor;
2943 - editor.selectAll();
2944 - this.$clickSelection = editor.getSelectionRange();
2945 - this.setState("selectAll");
2946 - };
2947 - DefaultHandlers.prototype.onMouseWheel = function (ev) {
2948 - if (ev.getAccelKey())
2949 - return;
2950 - if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {
2951 - ev.wheelX = ev.wheelY;
2952 - ev.wheelY = 0;
2953 - }
2954 - var editor = this.editor;
2955 - if (!this.$lastScroll)
2956 - this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };
2957 - var prevScroll = this.$lastScroll;
2958 - var t = ev.domEvent.timeStamp;
2959 - var dt = t - prevScroll.t;
2960 - var vx = dt ? ev.wheelX / dt : prevScroll.vx;
2961 - var vy = dt ? ev.wheelY / dt : prevScroll.vy;
2962 - if (dt < SCROLL_COOLDOWN_T) {
2963 - vx = (vx + prevScroll.vx) / 2;
2964 - vy = (vy + prevScroll.vy) / 2;
2965 - }
2966 - var direction = Math.abs(vx / vy);
2967 - var canScroll = false;
2968 - if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))
2969 - canScroll = true;
2970 - if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))
2971 - canScroll = true;
2972 - if (canScroll) {
2973 - prevScroll.allowed = t;
2974 - }
2975 - else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {
2976 - var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)
2977 - && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);
2978 - if (isSlower) {
2979 - canScroll = true;
2980 - prevScroll.allowed = t;
2981 - }
2982 - else {
2983 - prevScroll.allowed = 0;
2984 - }
2985 - }
2986 - prevScroll.t = t;
2987 - prevScroll.vx = vx;
2988 - prevScroll.vy = vy;
2989 - if (canScroll) {
2990 - editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);
2991 - return ev.stop();
2992 - }
2993 - };
2994 - return DefaultHandlers;
2995 -}());
2996 -DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;
2997 -DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;
2998 -DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;
2999 -exports.DefaultHandlers = DefaultHandlers;
3000 -function calcDistance(ax, ay, bx, by) {
3001 - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
3002 -}
3003 -function calcRangeOrientation(range, cursor) {
3004 - if (range.start.row == range.end.row)
3005 - var cmp = 2 * cursor.column - range.start.column - range.end.column;
3006 - else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)
3007 - var cmp = cursor.column - 4;
3008 - else
3009 - var cmp = 2 * cursor.row - range.start.row - range.end.row;
3010 - if (cmp < 0)
3011 - return { cursor: range.start, anchor: range.end };
3012 - else
3013 - return { cursor: range.end, anchor: range.start };
3014 -}
3015 -
3016 -});
3017 -
3018 -ace.define("ace/lib/scroll",["require","exports","module"], function(require, exports, module){exports.preventParentScroll = function preventParentScroll(event) {
3019 - event.stopPropagation();
3020 - var target = event.currentTarget;
3021 - var contentOverflows = target.scrollHeight > target.clientHeight;
3022 - if (!contentOverflows) {
3023 - event.preventDefault();
3024 - }
3025 -};
3026 -
3027 -});
3028 -
3029 -ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"], function(require, exports, module){"use strict";
3030 -var __extends = (this && this.__extends) || (function () {
3031 - var extendStatics = function (d, b) {
3032 - extendStatics = Object.setPrototypeOf ||
3033 - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3034 - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
3035 - return extendStatics(d, b);
3036 - };
3037 - return function (d, b) {
3038 - if (typeof b !== "function" && b !== null)
3039 - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
3040 - extendStatics(d, b);
3041 - function __() { this.constructor = d; }
3042 - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3043 - };
3044 -})();
3045 -var __values = (this && this.__values) || function(o) {
3046 - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3047 - if (m) return m.call(o);
3048 - if (o && typeof o.length === "number") return {
3049 - next: function () {
3050 - if (o && i >= o.length) o = void 0;
3051 - return { value: o && o[i++], done: !o };
3052 - }
3053 - };
3054 - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
3055 -};
3056 -var dom = require("./lib/dom");
3057 -var event = require("./lib/event");
3058 -var Range = require("./range").Range;
3059 -var preventParentScroll = require("./lib/scroll").preventParentScroll;
3060 -var CLASSNAME = "ace_tooltip";
3061 -var Tooltip = /** @class */ (function () {
3062 - function Tooltip(parentNode) {
3063 - this.isOpen = false;
3064 - this.$element = null;
3065 - this.$parentNode = parentNode;
3066 - }
3067 - Tooltip.prototype.$init = function () {
3068 - this.$element = dom.createElement("div");
3069 - this.$element.className = CLASSNAME;
3070 - this.$element.style.display = "none";
3071 - this.$parentNode.appendChild(this.$element);
3072 - return this.$element;
3073 - };
3074 - Tooltip.prototype.getElement = function () {
3075 - return this.$element || this.$init();
3076 - };
3077 - Tooltip.prototype.setText = function (text) {
3078 - this.getElement().textContent = text;
3079 - };
3080 - Tooltip.prototype.setHtml = function (html) {
3081 - this.getElement().innerHTML = html;
3082 - };
3083 - Tooltip.prototype.setPosition = function (x, y) {
3084 - this.getElement().style.left = x + "px";
3085 - this.getElement().style.top = y + "px";
3086 - };
3087 - Tooltip.prototype.setClassName = function (className) {
3088 - dom.addCssClass(this.getElement(), className);
3089 - };
3090 - Tooltip.prototype.setTheme = function (theme) {
3091 - this.$element.className = CLASSNAME + " " +
3092 - (theme.isDark ? "ace_dark " : "") + (theme.cssClass || "");
3093 - };
3094 - Tooltip.prototype.show = function (text, x, y) {
3095 - if (text != null)
3096 - this.setText(text);
3097 - if (x != null && y != null)
3098 - this.setPosition(x, y);
3099 - if (!this.isOpen) {
3100 - this.getElement().style.display = "block";
3101 - this.isOpen = true;
3102 - }
3103 - };
3104 - Tooltip.prototype.hide = function (e) {
3105 - if (this.isOpen) {
3106 - this.getElement().style.display = "none";
3107 - this.getElement().className = CLASSNAME;
3108 - this.isOpen = false;
3109 - }
3110 - };
3111 - Tooltip.prototype.getHeight = function () {
3112 - return this.getElement().offsetHeight;
3113 - };
3114 - Tooltip.prototype.getWidth = function () {
3115 - return this.getElement().offsetWidth;
3116 - };
3117 - Tooltip.prototype.destroy = function () {
3118 - this.isOpen = false;
3119 - if (this.$element && this.$element.parentNode) {
3120 - this.$element.parentNode.removeChild(this.$element);
3121 - }
3122 - };
3123 - return Tooltip;
3124 -}());
3125 -var PopupManager = /** @class */ (function () {
3126 - function PopupManager() {
3127 - this.popups = [];
3128 - }
3129 - PopupManager.prototype.addPopup = function (popup) {
3130 - this.popups.push(popup);
3131 - this.updatePopups();
3132 - };
3133 - PopupManager.prototype.removePopup = function (popup) {
3134 - var index = this.popups.indexOf(popup);
3135 - if (index !== -1) {
3136 - this.popups.splice(index, 1);
3137 - this.updatePopups();
3138 - }
3139 - };
3140 - PopupManager.prototype.updatePopups = function () {
3141 - var e_1, _a, e_2, _b;
3142 - this.popups.sort(function (a, b) { return b.priority - a.priority; });
3143 - var visiblepopups = [];
3144 - try {
3145 - for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {
3146 - var popup = _d.value;
3147 - var shouldDisplay = true;
3148 - try {
3149 - for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {
3150 - var visiblePopup = visiblepopups_1_1.value;
3151 - if (this.doPopupsOverlap(visiblePopup, popup)) {
3152 - shouldDisplay = false;
3153 - break;
3154 - }
3155 - }
3156 - }
3157 - catch (e_2_1) { e_2 = { error: e_2_1 }; }
3158 - finally {
3159 - try {
3160 - if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);
3161 - }
3162 - finally { if (e_2) throw e_2.error; }
3163 - }
3164 - if (shouldDisplay) {
3165 - visiblepopups.push(popup);
3166 - }
3167 - else {
3168 - popup.hide();
3169 - }
3170 - }
3171 - }
3172 - catch (e_1_1) { e_1 = { error: e_1_1 }; }
3173 - finally {
3174 - try {
3175 - if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
3176 - }
3177 - finally { if (e_1) throw e_1.error; }
3178 - }
3179 - };
3180 - PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {
3181 - var rectA = popupA.getElement().getBoundingClientRect();
3182 - var rectB = popupB.getElement().getBoundingClientRect();
3183 - return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom
3184 - > rectB.top);
3185 - };
3186 - return PopupManager;
3187 -}());
3188 -var popupManager = new PopupManager();
3189 -exports.popupManager = popupManager;
3190 -exports.Tooltip = Tooltip;
3191 -var HoverTooltip = /** @class */ (function (_super) {
3192 - __extends(HoverTooltip, _super);
3193 - function HoverTooltip(parentNode) {
3194 - if (parentNode === void 0) { parentNode = document.body; }
3195 - var _this = _super.call(this, parentNode) || this;
3196 - _this.timeout = undefined;
3197 - _this.lastT = 0;
3198 - _this.idleTime = 350;
3199 - _this.lastEvent = undefined;
3200 - _this.onMouseOut = _this.onMouseOut.bind(_this);
3201 - _this.onMouseMove = _this.onMouseMove.bind(_this);
3202 - _this.waitForHover = _this.waitForHover.bind(_this);
3203 - _this.hide = _this.hide.bind(_this);
3204 - var el = _this.getElement();
3205 - el.style.whiteSpace = "pre-wrap";
3206 - el.style.pointerEvents = "auto";
3207 - el.addEventListener("mouseout", _this.onMouseOut);
3208 - el.tabIndex = -1;
3209 - el.addEventListener("blur", function () {
3210 - if (!el.contains(document.activeElement))
3211 - this.hide();
3212 - }.bind(_this));
3213 - el.addEventListener("wheel", preventParentScroll);
3214 - return _this;
3215 - }
3216 - HoverTooltip.prototype.addToEditor = function (editor) {
3217 - editor.on("mousemove", this.onMouseMove);
3218 - editor.on("mousedown", this.hide);
3219 - editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true);
3220 - };
3221 - HoverTooltip.prototype.removeFromEditor = function (editor) {
3222 - editor.off("mousemove", this.onMouseMove);
3223 - editor.off("mousedown", this.hide);
3224 - editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true);
3225 - if (this.timeout) {
3226 - clearTimeout(this.timeout);
3227 - this.timeout = null;
3228 - }
3229 - };
3230 - HoverTooltip.prototype.onMouseMove = function (e, editor) {
3231 - this.lastEvent = e;
3232 - this.lastT = Date.now();
3233 - var isMousePressed = editor.$mouseHandler.isMousePressed;
3234 - if (this.isOpen) {
3235 - var pos = this.lastEvent && this.lastEvent.getDocumentPosition();
3236 - if (!this.range
3237 - || !this.range.contains(pos.row, pos.column)
3238 - || isMousePressed
3239 - || this.isOutsideOfText(this.lastEvent)) {
3240 - this.hide();
3241 - }
3242 - }
3243 - if (this.timeout || isMousePressed)
3244 - return;
3245 - this.lastEvent = e;
3246 - this.timeout = setTimeout(this.waitForHover, this.idleTime);
3247 - };
3248 - HoverTooltip.prototype.waitForHover = function () {
3249 - if (this.timeout)
3250 - clearTimeout(this.timeout);
3251 - var dt = Date.now() - this.lastT;
3252 - if (this.idleTime - dt > 10) {
3253 - this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);
3254 - return;
3255 - }
3256 - this.timeout = null;
3257 - if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {
3258 - this.$gatherData(this.lastEvent, this.lastEvent.editor);
3259 - }
3260 - };
3261 - HoverTooltip.prototype.isOutsideOfText = function (e) {
3262 - var editor = e.editor;
3263 - var docPos = e.getDocumentPosition();
3264 - var line = editor.session.getLine(docPos.row);
3265 - if (docPos.column == line.length) {
3266 - var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);
3267 - var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);
3268 - if (clippedPos.column != screenPos.column
3269 - || clippedPos.row != screenPos.row) {
3270 - return true;
3271 - }
3272 - }
3273 - return false;
3274 - };
3275 - HoverTooltip.prototype.setDataProvider = function (value) {
3276 - this.$gatherData = value;
3277 - };
3278 - HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {
3279 - var MARGIN = 10;
3280 - if (startingEvent && startingEvent != this.lastEvent)
3281 - return;
3282 - if (this.isOpen && document.activeElement == this.getElement())
3283 - return;
3284 - var renderer = editor.renderer;
3285 - if (!this.isOpen) {
3286 - popupManager.addPopup(this);
3287 - this.$registerCloseEvents();
3288 - this.setTheme(renderer.theme);
3289 - }
3290 - this.isOpen = true;
3291 - this.addMarker(range, editor.session);
3292 - this.range = Range.fromPoints(range.start, range.end);
3293 - var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);
3294 - var rect = renderer.scroller.getBoundingClientRect();
3295 - if (position.pageX < rect.left)
3296 - position.pageX = rect.left;
3297 - var element = this.getElement();
3298 - element.innerHTML = "";
3299 - element.appendChild(domNode);
3300 - element.style.maxHeight = "";
3301 - element.style.display = "block";
3302 - var labelHeight = element.clientHeight;
3303 - var labelWidth = element.clientWidth;
3304 - var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;
3305 - var isAbove = true;
3306 - if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {
3307 - isAbove = false;
3308 - }
3309 - element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px";
3310 - element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px";
3311 - element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : "";
3312 - element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px";
3313 - };
3314 - HoverTooltip.prototype.addMarker = function (range, session) {
3315 - if (this.marker) {
3316 - this.$markerSession.removeMarker(this.marker);
3317 - }
3318 - this.$markerSession = session;
3319 - this.marker = session && session.addMarker(range, "ace_highlight-marker", "text");
3320 - };
3321 - HoverTooltip.prototype.hide = function (e) {
3322 - if (!e && document.activeElement == this.getElement())
3323 - return;
3324 - if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))
3325 - return;
3326 - this.lastEvent = null;
3327 - if (this.timeout)
3328 - clearTimeout(this.timeout);
3329 - this.timeout = null;
3330 - this.addMarker(null);
3331 - if (this.isOpen) {
3332 - this.$removeCloseEvents();
3333 - this.getElement().style.display = "none";
3334 - this.isOpen = false;
3335 - popupManager.removePopup(this);
3336 - }
3337 - };
3338 - HoverTooltip.prototype.$registerCloseEvents = function () {
3339 - window.addEventListener("keydown", this.hide, true);
3340 - window.addEventListener("wheel", this.hide, true);
3341 - window.addEventListener("mousedown", this.hide, true);
3342 - };
3343 - HoverTooltip.prototype.$removeCloseEvents = function () {
3344 - window.removeEventListener("keydown", this.hide, true);
3345 - window.removeEventListener("wheel", this.hide, true);
3346 - window.removeEventListener("mousedown", this.hide, true);
3347 - };
3348 - HoverTooltip.prototype.onMouseOut = function (e) {
3349 - if (this.timeout) {
3350 - clearTimeout(this.timeout);
3351 - this.timeout = null;
3352 - }
3353 - this.lastEvent = null;
3354 - if (!this.isOpen)
3355 - return;
3356 - if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))
3357 - return;
3358 - if (e && e.currentTarget.contains(e.relatedTarget))
3359 - return;
3360 - if (!e.relatedTarget.classList.contains("ace_content"))
3361 - this.hide();
3362 - };
3363 - return HoverTooltip;
3364 -}(Tooltip));
3365 -exports.HoverTooltip = HoverTooltip;
3366 -
3367 -});
3368 -
3369 -ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config","ace/lib/lang"], function(require, exports, module){"use strict";
3370 -var __extends = (this && this.__extends) || (function () {
3371 - var extendStatics = function (d, b) {
3372 - extendStatics = Object.setPrototypeOf ||
3373 - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3374 - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
3375 - return extendStatics(d, b);
3376 - };
3377 - return function (d, b) {
3378 - if (typeof b !== "function" && b !== null)
3379 - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
3380 - extendStatics(d, b);
3381 - function __() { this.constructor = d; }
3382 - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3383 - };
3384 -})();
3385 -var __values = (this && this.__values) || function(o) {
3386 - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3387 - if (m) return m.call(o);
3388 - if (o && typeof o.length === "number") return {
3389 - next: function () {
3390 - if (o && i >= o.length) o = void 0;
3391 - return { value: o && o[i++], done: !o };
3392 - }
3393 - };
3394 - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
3395 -};
3396 -var dom = require("../lib/dom");
3397 -var event = require("../lib/event");
3398 -var Tooltip = require("../tooltip").Tooltip;
3399 -var nls = require("../config").nls;
3400 -var lang = require("../lib/lang");
3401 -function GutterHandler(mouseHandler) {
3402 - var editor = mouseHandler.editor;
3403 - var gutter = editor.renderer.$gutterLayer;
3404 - var tooltip = new GutterTooltip(editor);
3405 - mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) {
3406 - if (!editor.isFocused() || e.getButton() != 0)
3407 - return;
3408 - var gutterRegion = gutter.getRegion(e);
3409 - if (gutterRegion == "foldWidgets")
3410 - return;
3411 - var row = e.getDocumentPosition().row;
3412 - var selection = editor.session.selection;
3413 - if (e.getShiftKey())
3414 - selection.selectTo(row, 0);
3415 - else {
3416 - if (e.domEvent.detail == 2) {
3417 - editor.selectAll();
3418 - return e.preventDefault();
3419 - }
3420 - mouseHandler.$clickSelection = editor.selection.getLineRange(row);
3421 - }
3422 - mouseHandler.setState("selectByLines");
3423 - mouseHandler.captureMouse(e);
3424 - return e.preventDefault();
3425 - });
3426 - var tooltipTimeout, mouseEvent;
3427 - function showTooltip() {
3428 - var row = mouseEvent.getDocumentPosition().row;
3429 - var maxRow = editor.session.getLength();
3430 - if (row == maxRow) {
3431 - var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;
3432 - var pos = mouseEvent.$pos;
3433 - if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))
3434 - return hideTooltip();
3435 - }
3436 - tooltip.showTooltip(row);
3437 - if (!tooltip.isOpen)
3438 - return;
3439 - editor.on("mousewheel", hideTooltip);
3440 - if (mouseHandler.$tooltipFollowsMouse) {
3441 - moveTooltip(mouseEvent);
3442 - }
3443 - else {
3444 - var gutterRow = mouseEvent.getGutterRow();
3445 - var gutterCell = gutter.$lines.get(gutterRow);
3446 - if (gutterCell) {
3447 - var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation");
3448 - var rect = gutterElement.getBoundingClientRect();
3449 - var style = tooltip.getElement().style;
3450 - style.left = rect.right + "px";
3451 - style.top = rect.bottom + "px";
3452 - }
3453 - else {
3454 - moveTooltip(mouseEvent);
3455 - }
3456 - }
3457 - }
3458 - function hideTooltip() {
3459 - if (tooltipTimeout)
3460 - tooltipTimeout = clearTimeout(tooltipTimeout);
3461 - if (tooltip.isOpen) {
3462 - tooltip.hideTooltip();
3463 - editor.off("mousewheel", hideTooltip);
3464 - }
3465 - }
3466 - function moveTooltip(e) {
3467 - tooltip.setPosition(e.x, e.y);
3468 - }
3469 - mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) {
3470 - var target = e.domEvent.target || e.domEvent.srcElement;
3471 - if (dom.hasCssClass(target, "ace_fold-widget"))
3472 - return hideTooltip();
3473 - if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)
3474 - moveTooltip(e);
3475 - mouseEvent = e;
3476 - if (tooltipTimeout)
3477 - return;
3478 - tooltipTimeout = setTimeout(function () {
3479 - tooltipTimeout = null;
3480 - if (mouseEvent && !mouseHandler.isMousePressed)
3481 - showTooltip();
3482 - else
3483 - hideTooltip();
3484 - }, 50);
3485 - });
3486 - event.addListener(editor.renderer.$gutter, "mouseout", function (e) {
3487 - mouseEvent = null;
3488 - if (!tooltip.isOpen || tooltipTimeout)
3489 - return;
3490 - tooltipTimeout = setTimeout(function () {
3491 - tooltipTimeout = null;
3492 - hideTooltip();
3493 - }, 50);
3494 - }, editor);
3495 - editor.on("changeSession", hideTooltip);
3496 - editor.on("input", hideTooltip);
3497 -}
3498 -exports.GutterHandler = GutterHandler;
3499 -var GutterTooltip = /** @class */ (function (_super) {
3500 - __extends(GutterTooltip, _super);
3501 - function GutterTooltip(editor) {
3502 - var _this = _super.call(this, editor.container) || this;
3503 - _this.editor = editor;
3504 - return _this;
3505 - }
3506 - GutterTooltip.prototype.setPosition = function (x, y) {
3507 - var windowWidth = window.innerWidth || document.documentElement.clientWidth;
3508 - var windowHeight = window.innerHeight || document.documentElement.clientHeight;
3509 - var width = this.getWidth();
3510 - var height = this.getHeight();
3511 - x += 15;
3512 - y += 15;
3513 - if (x + width > windowWidth) {
3514 - x -= (x + width) - windowWidth;
3515 - }
3516 - if (y + height > windowHeight) {
3517 - y -= 20 + height;
3518 - }
3519 - Tooltip.prototype.setPosition.call(this, x, y);
3520 - };
3521 - Object.defineProperty(GutterTooltip, "annotationLabels", {
3522 - get: function () {
3523 - return {
3524 - error: {
3525 - singular: nls("gutter-tooltip.aria-label.error.singular", "error"),
3526 - plural: nls("gutter-tooltip.aria-label.error.plural", "errors")
3527 - },
3528 - security: {
3529 - singular: nls("gutter-tooltip.aria-label.security.singular", "security finding"),
3530 - plural: nls("gutter-tooltip.aria-label.security.plural", "security findings")
3531 - },
3532 - warning: {
3533 - singular: nls("gutter-tooltip.aria-label.warning.singular", "warning"),
3534 - plural: nls("gutter-tooltip.aria-label.warning.plural", "warnings")
3535 - },
3536 - info: {
3537 - singular: nls("gutter-tooltip.aria-label.info.singular", "information message"),
3538 - plural: nls("gutter-tooltip.aria-label.info.plural", "information messages")
3539 - },
3540 - hint: {
3541 - singular: nls("gutter-tooltip.aria-label.hint.singular", "suggestion"),
3542 - plural: nls("gutter-tooltip.aria-label.hint.plural", "suggestions")
3543 - }
3544 - };
3545 - },
3546 - enumerable: false,
3547 - configurable: true
3548 - });
3549 - GutterTooltip.prototype.showTooltip = function (row) {
3550 - var _a;
3551 - var gutter = this.editor.renderer.$gutterLayer;
3552 - var annotationsInRow = gutter.$annotations[row];
3553 - var annotation;
3554 - if (annotationsInRow)
3555 - annotation = {
3556 - displayText: Array.from(annotationsInRow.displayText),
3557 - type: Array.from(annotationsInRow.type)
3558 - };
3559 - else
3560 - annotation = { displayText: [], type: [] };
3561 - var fold = gutter.session.getFoldLine(row);
3562 - if (fold && gutter.$showFoldedAnnotations) {
3563 - var annotationsInFold = { error: [], security: [], warning: [], info: [], hint: [] };
3564 - var severityRank = { error: 1, security: 2, warning: 3, info: 4, hint: 5 };
3565 - var mostSevereAnnotationTypeInFold;
3566 - for (var i = row + 1; i <= fold.end.row; i++) {
3567 - if (!gutter.$annotations[i])
3568 - continue;
3569 - for (var j = 0; j < gutter.$annotations[i].text.length; j++) {
3570 - var annotationType = gutter.$annotations[i].type[j];
3571 - annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);
3572 - if (!mostSevereAnnotationTypeInFold ||
3573 - severityRank[annotationType] < severityRank[mostSevereAnnotationTypeInFold]) {
3574 - mostSevereAnnotationTypeInFold = annotationType;
3575 - }
3576 - }
3577 - }
3578 - if (["error", "security", "warning"].includes(mostSevereAnnotationTypeInFold)) {
3579 - var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code.");
3580 - annotation.displayText.push(summaryFoldedAnnotations);
3581 - annotation.type.push(mostSevereAnnotationTypeInFold + "_fold");
3582 - }
3583 - }
3584 - if (annotation.displayText.length === 0)
3585 - return this.hide();
3586 - var annotationMessages = { error: [], security: [], warning: [], info: [], hint: [] };
3587 - var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon";
3588 - for (var i = 0; i < annotation.displayText.length; i++) {
3589 - var lineElement = dom.createElement("span");
3590 - var iconElement = dom.createElement("span");
3591 - (_a = iconElement.classList).add.apply(_a, ["ace_".concat(annotation.type[i]), iconClassName]);
3592 - iconElement.setAttribute("aria-label", "".concat(GutterTooltip.annotationLabels[annotation.type[i].replace("_fold", "")].singular));
3593 - iconElement.setAttribute("role", "img");
3594 - iconElement.appendChild(dom.createTextNode(" "));
3595 - lineElement.appendChild(iconElement);
3596 - lineElement.appendChild(dom.createTextNode(annotation.displayText[i]));
3597 - lineElement.appendChild(dom.createElement("br"));
3598 - annotationMessages[annotation.type[i].replace("_fold", "")].push(lineElement);
3599 - }
3600 - var tooltipElement = this.getElement();
3601 - dom.removeChildren(tooltipElement);
3602 - annotationMessages.error.forEach(function (el) { return tooltipElement.appendChild(el); });
3603 - annotationMessages.security.forEach(function (el) { return tooltipElement.appendChild(el); });
3604 - annotationMessages.warning.forEach(function (el) { return tooltipElement.appendChild(el); });
3605 - annotationMessages.info.forEach(function (el) { return tooltipElement.appendChild(el); });
3606 - annotationMessages.hint.forEach(function (el) { return tooltipElement.appendChild(el); });
3607 - tooltipElement.setAttribute("aria-live", "polite");
3608 - if (!this.isOpen) {
3609 - this.setTheme(this.editor.renderer.theme);
3610 - this.setClassName("ace_gutter-tooltip");
3611 - }
3612 - this.show();
3613 - this.editor._signal("showGutterTooltip", this);
3614 - };
3615 - GutterTooltip.prototype.hideTooltip = function () {
3616 - this.$element.removeAttribute("aria-live");
3617 - this.hide();
3618 - this.editor._signal("hideGutterTooltip", this);
3619 - };
3620 - GutterTooltip.annotationsToSummaryString = function (annotations) {
3621 - var e_1, _a;
3622 - var summary = [];
3623 - var annotationTypes = ["error", "security", "warning", "info", "hint"];
3624 - try {
3625 - for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {
3626 - var annotationType = annotationTypes_1_1.value;
3627 - if (!annotations[annotationType].length)
3628 - continue;
3629 - var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;
3630 - summary.push("".concat(annotations[annotationType].length, " ").concat(label));
3631 - }
3632 - }
3633 - catch (e_1_1) { e_1 = { error: e_1_1 }; }
3634 - finally {
3635 - try {
3636 - if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);
3637 - }
3638 - finally { if (e_1) throw e_1.error; }
3639 - }
3640 - return summary.join(", ");
3641 - };
3642 - return GutterTooltip;
3643 -}(Tooltip));
3644 -exports.GutterTooltip = GutterTooltip;
3645 -
3646 -});
3647 -
3648 -ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict";
3649 -var event = require("../lib/event");
3650 -var useragent = require("../lib/useragent");
3651 -var MouseEvent = /** @class */ (function () {
3652 - function MouseEvent(domEvent, editor) { this.speed; this.wheelX; this.wheelY;
3653 - this.domEvent = domEvent;
3654 - this.editor = editor;
3655 - this.x = this.clientX = domEvent.clientX;
3656 - this.y = this.clientY = domEvent.clientY;
3657 - this.$pos = null;
3658 - this.$inSelection = null;
3659 - this.propagationStopped = false;
3660 - this.defaultPrevented = false;
3661 - }
3662 - MouseEvent.prototype.stopPropagation = function () {
3663 - event.stopPropagation(this.domEvent);
3664 - this.propagationStopped = true;
3665 - };
3666 - MouseEvent.prototype.preventDefault = function () {
3667 - event.preventDefault(this.domEvent);
3668 - this.defaultPrevented = true;
3669 - };
3670 - MouseEvent.prototype.stop = function () {
3671 - this.stopPropagation();
3672 - this.preventDefault();
3673 - };
3674 - MouseEvent.prototype.getDocumentPosition = function () {
3675 - if (this.$pos)
3676 - return this.$pos;
3677 - this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);
3678 - return this.$pos;
3679 - };
3680 - MouseEvent.prototype.getGutterRow = function () {
3681 - var documentRow = this.getDocumentPosition().row;
3682 - var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);
3683 - var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);
3684 - return screenRow - screenTopRow;
3685 - };
3686 - MouseEvent.prototype.inSelection = function () {
3687 - if (this.$inSelection !== null)
3688 - return this.$inSelection;
3689 - var editor = this.editor;
3690 - var selectionRange = editor.getSelectionRange();
3691 - if (selectionRange.isEmpty())
3692 - this.$inSelection = false;
3693 - else {
3694 - var pos = this.getDocumentPosition();
3695 - this.$inSelection = selectionRange.contains(pos.row, pos.column);
3696 - }
3697 - return this.$inSelection;
3698 - };
3699 - MouseEvent.prototype.getButton = function () {
3700 - return event.getButton(this.domEvent);
3701 - };
3702 - MouseEvent.prototype.getShiftKey = function () {
3703 - return this.domEvent.shiftKey;
3704 - };
3705 - MouseEvent.prototype.getAccelKey = function () {
3706 - return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;
3707 - };
3708 - return MouseEvent;
3709 -}());
3710 -exports.MouseEvent = MouseEvent;
3711 -
3712 -});
3713 -
3714 -ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict";
3715 -var dom = require("../lib/dom");
3716 -var event = require("../lib/event");
3717 -var useragent = require("../lib/useragent");
3718 -var AUTOSCROLL_DELAY = 200;
3719 -var SCROLL_CURSOR_DELAY = 200;
3720 -var SCROLL_CURSOR_HYSTERESIS = 5;
3721 -function DragdropHandler(mouseHandler) {
3722 - var editor = mouseHandler.editor;
3723 - var dragImage = dom.createElement("div");
3724 - dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5";
3725 - dragImage.textContent = "\xa0";
3726 - var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];
3727 - exports.forEach(function (x) {
3728 - mouseHandler[x] = this[x];
3729 - }, this);
3730 - editor.on("mousedown", this.onMouseDown.bind(mouseHandler));
3731 - var mouseTarget = editor.container;
3732 - var dragSelectionMarker, x, y;
3733 - var timerId, range;
3734 - var dragCursor, counter = 0;
3735 - var dragOperation;
3736 - var isInternal;
3737 - var autoScrollStartTime;
3738 - var cursorMovedTime;
3739 - var cursorPointOnCaretMoved;
3740 - this.onDragStart = function (e) {
3741 - if (this.cancelDrag || !mouseTarget.draggable) {
3742 - var self = this;
3743 - setTimeout(function () {
3744 - self.startSelect();
3745 - self.captureMouse(e);
3746 - }, 0);
3747 - return e.preventDefault();
3748 - }
3749 - range = editor.getSelectionRange();
3750 - var dataTransfer = e.dataTransfer;
3751 - dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove";
3752 - editor.container.appendChild(dragImage);
3753 - dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);
3754 - setTimeout(function () {
3755 - editor.container.removeChild(dragImage);
3756 - });
3757 - dataTransfer.clearData();
3758 - dataTransfer.setData("Text", editor.session.getTextRange());
3759 - isInternal = true;
3760 - this.setState("drag");
3761 - };
3762 - this.onDragEnd = function (e) {
3763 - mouseTarget.draggable = false;
3764 - isInternal = false;
3765 - this.setState(null);
3766 - if (!editor.getReadOnly()) {
3767 - var dropEffect = e.dataTransfer.dropEffect;
3768 - if (!dragOperation && dropEffect == "move")
3769 - editor.session.remove(editor.getSelectionRange());
3770 - editor.$resetCursorStyle();
3771 - }
3772 - this.editor.unsetStyle("ace_dragging");
3773 - this.editor.renderer.setCursorStyle("");
3774 - };
3775 - this.onDragEnter = function (e) {
3776 - if (editor.getReadOnly() || !canAccept(e.dataTransfer))
3777 - return;
3778 - x = e.clientX;
3779 - y = e.clientY;
3780 - if (!dragSelectionMarker)
3781 - addDragMarker();
3782 - counter++;
3783 - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
3784 - return event.preventDefault(e);
3785 - };
3786 - this.onDragOver = function (e) {
3787 - if (editor.getReadOnly() || !canAccept(e.dataTransfer))
3788 - return;
3789 - x = e.clientX;
3790 - y = e.clientY;
3791 - if (!dragSelectionMarker) {
3792 - addDragMarker();
3793 - counter++;
3794 - }
3795 - if (onMouseMoveTimer !== null)
3796 - onMouseMoveTimer = null;
3797 - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
3798 - return event.preventDefault(e);
3799 - };
3800 - this.onDragLeave = function (e) {
3801 - counter--;
3802 - if (counter <= 0 && dragSelectionMarker) {
3803 - clearDragMarker();
3804 - dragOperation = null;
3805 - return event.preventDefault(e);
3806 - }
3807 - };
3808 - this.onDrop = function (e) {
3809 - if (!dragCursor)
3810 - return;
3811 - var dataTransfer = e.dataTransfer;
3812 - if (isInternal) {
3813 - switch (dragOperation) {
3814 - case "move":
3815 - if (range.contains(dragCursor.row, dragCursor.column)) {
3816 - range = {
3817 - start: dragCursor,
3818 - end: dragCursor
3819 - };
3820 - }
3821 - else {
3822 - range = editor.moveText(range, dragCursor);
3823 - }
3824 - break;
3825 - case "copy":
3826 - range = editor.moveText(range, dragCursor, true);
3827 - break;
3828 - }
3829 - }
3830 - else {
3831 - var dropData = dataTransfer.getData('Text');
3832 - range = {
3833 - start: dragCursor,
3834 - end: editor.session.insert(dragCursor, dropData)
3835 - };
3836 - editor.focus();
3837 - dragOperation = null;
3838 - }
3839 - clearDragMarker();
3840 - return event.preventDefault(e);
3841 - };
3842 - event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor);
3843 - event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor);
3844 - event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor);
3845 - event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor);
3846 - event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor);
3847 - event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor);
3848 - function scrollCursorIntoView(cursor, prevCursor) {
3849 - var now = Date.now();
3850 - var vMovement = !prevCursor || cursor.row != prevCursor.row;
3851 - var hMovement = !prevCursor || cursor.column != prevCursor.column;
3852 - if (!cursorMovedTime || vMovement || hMovement) {
3853 - editor.moveCursorToPosition(cursor);
3854 - cursorMovedTime = now;
3855 - cursorPointOnCaretMoved = { x: x, y: y };
3856 - }
3857 - else {
3858 - var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);
3859 - if (distance > SCROLL_CURSOR_HYSTERESIS) {
3860 - cursorMovedTime = null;
3861 - }
3862 - else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {
3863 - editor.renderer.scrollCursorIntoView();
3864 - cursorMovedTime = null;
3865 - }
3866 - }
3867 - }
3868 - function autoScroll(cursor, prevCursor) {
3869 - var now = Date.now();
3870 - var lineHeight = editor.renderer.layerConfig.lineHeight;
3871 - var characterWidth = editor.renderer.layerConfig.characterWidth;
3872 - var editorRect = editor.renderer.scroller.getBoundingClientRect();
3873 - var offsets = {
3874 - x: {
3875 - left: x - editorRect.left,
3876 - right: editorRect.right - x
3877 - },
3878 - y: {
3879 - top: y - editorRect.top,
3880 - bottom: editorRect.bottom - y
3881 - }
3882 - };
3883 - var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);
3884 - var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);
3885 - var scrollCursor = { row: cursor.row, column: cursor.column };
3886 - if (nearestXOffset / characterWidth <= 2) {
3887 - scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);
3888 - }
3889 - if (nearestYOffset / lineHeight <= 1) {
3890 - scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);
3891 - }
3892 - var vScroll = cursor.row != scrollCursor.row;
3893 - var hScroll = cursor.column != scrollCursor.column;
3894 - var vMovement = !prevCursor || cursor.row != prevCursor.row;
3895 - if (vScroll || (hScroll && !vMovement)) {
3896 - if (!autoScrollStartTime)
3897 - autoScrollStartTime = now;
3898 - else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)
3899 - editor.renderer.scrollCursorIntoView(scrollCursor);
3900 - }
3901 - else {
3902 - autoScrollStartTime = null;
3903 - }
3904 - }
3905 - function onDragInterval() {
3906 - var prevCursor = dragCursor;
3907 - dragCursor = editor.renderer.screenToTextCoordinates(x, y);
3908 - scrollCursorIntoView(dragCursor, prevCursor);
3909 - autoScroll(dragCursor, prevCursor);
3910 - }
3911 - function addDragMarker() {
3912 - range = editor.selection.toOrientedRange();
3913 - dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle());
3914 - editor.clearSelection();
3915 - if (editor.isFocused())
3916 - editor.renderer.$cursorLayer.setBlinking(false);
3917 - clearInterval(timerId);
3918 - onDragInterval();
3919 - timerId = setInterval(onDragInterval, 20);
3920 - counter = 0;
3921 - event.addListener(document, "mousemove", onMouseMove);
3922 - }
3923 - function clearDragMarker() {
3924 - clearInterval(timerId);
3925 - editor.session.removeMarker(dragSelectionMarker);
3926 - dragSelectionMarker = null;
3927 - editor.selection.fromOrientedRange(range);
3928 - if (editor.isFocused() && !isInternal)
3929 - editor.$resetCursorStyle();
3930 - range = null;
3931 - dragCursor = null;
3932 - counter = 0;
3933 - autoScrollStartTime = null;
3934 - cursorMovedTime = null;
3935 - event.removeListener(document, "mousemove", onMouseMove);
3936 - }
3937 - var onMouseMoveTimer = null;
3938 - function onMouseMove() {
3939 - if (onMouseMoveTimer == null) {
3940 - onMouseMoveTimer = setTimeout(function () {
3941 - if (onMouseMoveTimer != null && dragSelectionMarker)
3942 - clearDragMarker();
3943 - }, 20);
3944 - }
3945 - }
3946 - function canAccept(dataTransfer) {
3947 - var types = dataTransfer.types;
3948 - return !types || Array.prototype.some.call(types, function (type) {
3949 - return type == 'text/plain' || type == 'Text';
3950 - });
3951 - }
3952 - function getDropEffect(e) {
3953 - var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];
3954 - var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];
3955 - var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;
3956 - var effectAllowed = "uninitialized";
3957 - try {
3958 - effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();
3959 - }
3960 - catch (e) { }
3961 - var dropEffect = "none";
3962 - if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)
3963 - dropEffect = "copy";
3964 - else if (moveAllowed.indexOf(effectAllowed) >= 0)
3965 - dropEffect = "move";
3966 - else if (copyAllowed.indexOf(effectAllowed) >= 0)
3967 - dropEffect = "copy";
3968 - return dropEffect;
3969 - }
3970 -}
3971 -(function () {
3972 - this.dragWait = function () {
3973 - var interval = Date.now() - this.mousedownEvent.time;
3974 - if (interval > this.editor.getDragDelay())
3975 - this.startDrag();
3976 - };
3977 - this.dragWaitEnd = function () {
3978 - var target = this.editor.container;
3979 - target.draggable = false;
3980 - this.startSelect(this.mousedownEvent.getDocumentPosition());
3981 - this.selectEnd();
3982 - };
3983 - this.dragReadyEnd = function (e) {
3984 - this.editor.$resetCursorStyle();
3985 - this.editor.unsetStyle("ace_dragging");
3986 - this.editor.renderer.setCursorStyle("");
3987 - this.dragWaitEnd();
3988 - };
3989 - this.startDrag = function () {
3990 - this.cancelDrag = false;
3991 - var editor = this.editor;
3992 - var target = editor.container;
3993 - target.draggable = true;
3994 - editor.renderer.$cursorLayer.setBlinking(false);
3995 - editor.setStyle("ace_dragging");
3996 - var cursorStyle = useragent.isWin ? "default" : "move";
3997 - editor.renderer.setCursorStyle(cursorStyle);
3998 - this.setState("dragReady");
3999 - };
4000 - this.onMouseDrag = function (e) {
4001 - var target = this.editor.container;
4002 - if (useragent.isIE && this.state == "dragReady") {
4003 - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
4004 - if (distance > 3)
4005 - target.dragDrop();
4006 - }
4007 - if (this.state === "dragWait") {
4008 - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
4009 - if (distance > 0) {
4010 - target.draggable = false;
4011 - this.startSelect(this.mousedownEvent.getDocumentPosition());
4012 - }
4013 - }
4014 - };
4015 - this.onMouseDown = function (e) {
4016 - if (!this.$dragEnabled)
4017 - return;
4018 - this.mousedownEvent = e;
4019 - var editor = this.editor;
4020 - var inSelection = e.inSelection();
4021 - var button = e.getButton();
4022 - var clickCount = e.domEvent.detail || 1;
4023 - if (clickCount === 1 && button === 0 && inSelection) {
4024 - if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))
4025 - return;
4026 - this.mousedownEvent.time = Date.now();
4027 - var eventTarget = e.domEvent.target || e.domEvent.srcElement;
4028 - if ("unselectable" in eventTarget)
4029 - eventTarget.unselectable = "on";
4030 - if (editor.getDragDelay()) {
4031 - if (useragent.isWebKit) {
4032 - this.cancelDrag = true;
4033 - var mouseTarget = editor.container;
4034 - mouseTarget.draggable = true;
4035 - }
4036 - this.setState("dragWait");
4037 - }
4038 - else {
4039 - this.startDrag();
4040 - }
4041 - this.captureMouse(e, this.onMouseDrag.bind(this));
4042 - e.defaultPrevented = true;
4043 - }
4044 - };
4045 -}).call(DragdropHandler.prototype);
4046 -function calcDistance(ax, ay, bx, by) {
4047 - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
4048 -}
4049 -exports.DragdropHandler = DragdropHandler;
4050 -
4051 -});
4052 -
4053 -ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module){"use strict";
4054 -var MouseEvent = require("./mouse_event").MouseEvent;
4055 -var event = require("../lib/event");
4056 -var dom = require("../lib/dom");
4057 -exports.addTouchListeners = function (el, editor) {
4058 - var mode = "scroll";
4059 - var startX;
4060 - var startY;
4061 - var touchStartT;
4062 - var lastT;
4063 - var longTouchTimer;
4064 - var animationTimer;
4065 - var animationSteps = 0;
4066 - var pos;
4067 - var clickCount = 0;
4068 - var vX = 0;
4069 - var vY = 0;
4070 - var pressed;
4071 - var contextMenu;
4072 - function createContextMenu() {
4073 - var clipboard = window.navigator && window.navigator.clipboard;
4074 - var isOpen = false;
4075 - var updateMenu = function () {
4076 - var selected = editor.getCopyText();
4077 - var hasUndo = editor.session.getUndoManager().hasUndo();
4078 - contextMenu.replaceChild(dom.buildDom(isOpen ? ["span",
4079 - !selected && canExecuteCommand("selectall") && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"],
4080 - selected && canExecuteCommand("copy") && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"],
4081 - selected && canExecuteCommand("cut") && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"],
4082 - clipboard && canExecuteCommand("paste") && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"],
4083 - hasUndo && canExecuteCommand("undo") && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"],
4084 - canExecuteCommand("find") && ["span", { class: "ace_mobile-button", action: "find" }, "Find"],
4085 - canExecuteCommand("openCommandPalette") && ["span", { class: "ace_mobile-button", action: "openCommandPalette" }, "Palette"]
4086 - ] : ["span"]), contextMenu.firstChild);
4087 - };
4088 - var canExecuteCommand = function (/** @type {string} */ cmd) {
4089 - return editor.commands.canExecute(cmd, editor);
4090 - };
4091 - var handleClick = function (e) {
4092 - var action = e.target.getAttribute("action");
4093 - if (action == "more" || !isOpen) {
4094 - isOpen = !isOpen;
4095 - return updateMenu();
4096 - }
4097 - if (action == "paste") {
4098 - clipboard.readText().then(function (text) {
4099 - editor.execCommand(action, text);
4100 - });
4101 - }
4102 - else if (action) {
4103 - if (action == "cut" || action == "copy") {
4104 - if (clipboard)
4105 - clipboard.writeText(editor.getCopyText());
4106 - else
4107 - document.execCommand("copy");
4108 - }
4109 - editor.execCommand(action);
4110 - }
4111 - contextMenu.firstChild.style.display = "none";
4112 - isOpen = false;
4113 - if (action != "openCommandPalette")
4114 - editor.focus();
4115 - };
4116 - contextMenu = dom.buildDom(["div",
4117 - {
4118 - class: "ace_mobile-menu",
4119 - ontouchstart: function (e) {
4120 - mode = "menu";
4121 - e.stopPropagation();
4122 - e.preventDefault();
4123 - editor.textInput.focus();
4124 - },
4125 - ontouchend: function (e) {
4126 - e.stopPropagation();
4127 - e.preventDefault();
4128 - handleClick(e);
4129 - },
4130 - onclick: handleClick
4131 - },
4132 - ["span"],
4133 - ["span", { class: "ace_mobile-button", action: "more" }, "..."]
4134 - ], editor.container);
4135 - }
4136 - function showContextMenu() {
4137 - if (!editor.getOption("enableMobileMenu")) {
4138 - if (contextMenu) {
4139 - hideContextMenu();
4140 - }
4141 - return;
4142 - }
4143 - if (!contextMenu)
4144 - createContextMenu();
4145 - var cursor = editor.selection.cursor;
4146 - var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);
4147 - var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;
4148 - var scrollLeft = editor.renderer.scrollLeft;
4149 - var rect = editor.container.getBoundingClientRect();
4150 - contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px";
4151 - if (pagePos.pageX - rect.left < rect.width - 70) {
4152 - contextMenu.style.left = "";
4153 - contextMenu.style.right = "10px";
4154 - }
4155 - else {
4156 - contextMenu.style.right = "";
4157 - contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px";
4158 - }
4159 - contextMenu.style.display = "";
4160 - contextMenu.firstChild.style.display = "none";
4161 - editor.on("input", hideContextMenu);
4162 - }
4163 - function hideContextMenu(e) {
4164 - if (contextMenu)
4165 - contextMenu.style.display = "none";
4166 - editor.off("input", hideContextMenu);
4167 - }
4168 - function handleLongTap() {
4169 - longTouchTimer = null;
4170 - clearTimeout(longTouchTimer);
4171 - var range = editor.selection.getRange();
4172 - var inSelection = range.contains(pos.row, pos.column);
4173 - if (range.isEmpty() || !inSelection) {
4174 - editor.selection.moveToPosition(pos);
4175 - editor.selection.selectWord();
4176 - }
4177 - mode = "wait";
4178 - showContextMenu();
4179 - }
4180 - function switchToSelectionMode() {
4181 - longTouchTimer = null;
4182 - clearTimeout(longTouchTimer);
4183 - editor.selection.moveToPosition(pos);
4184 - var range = clickCount >= 2
4185 - ? editor.selection.getLineRange(pos.row)
4186 - : editor.session.getBracketRange(pos);
4187 - if (range && !range.isEmpty()) {
4188 - editor.selection.setRange(range);
4189 - }
4190 - else {
4191 - editor.selection.selectWord();
4192 - }
4193 - mode = "wait";
4194 - }
4195 - event.addListener(el, "contextmenu", function (e) {
4196 - if (!pressed)
4197 - return;
4198 - var textarea = editor.textInput.getElement();
4199 - textarea.focus();
4200 - }, editor);
4201 - event.addListener(el, "touchstart", function (e) {
4202 - var touches = e.touches;
4203 - if (longTouchTimer || touches.length > 1) {
4204 - clearTimeout(longTouchTimer);
4205 - longTouchTimer = null;
4206 - touchStartT = -1;
4207 - mode = "zoom";
4208 - return;
4209 - }
4210 - pressed = editor.$mouseHandler.isMousePressed = true;
4211 - var h = editor.renderer.layerConfig.lineHeight;
4212 - var w = editor.renderer.layerConfig.lineHeight;
4213 - var t = e.timeStamp;
4214 - lastT = t;
4215 - var touchObj = touches[0];
4216 - var x = touchObj.clientX;
4217 - var y = touchObj.clientY;
4218 - if (Math.abs(startX - x) + Math.abs(startY - y) > h)
4219 - touchStartT = -1;
4220 - startX = e.clientX = x;
4221 - startY = e.clientY = y;
4222 - vX = vY = 0;
4223 - var ev = new MouseEvent(e, editor);
4224 - pos = ev.getDocumentPosition();
4225 - if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {
4226 - clickCount++;
4227 - e.preventDefault();
4228 - e.button = 0;
4229 - switchToSelectionMode();
4230 - }
4231 - else {
4232 - clickCount = 0;
4233 - var cursor = editor.selection.cursor;
4234 - var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;
4235 - var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);
4236 - var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);
4237 - var rect = editor.renderer.scroller.getBoundingClientRect();
4238 - var offsetTop = editor.renderer.layerConfig.offset;
4239 - var offsetLeft = editor.renderer.scrollLeft;
4240 - var weightedDistance = function (x, y) {
4241 - x = x / w;
4242 - y = y / h - 0.75;
4243 - return x * x + y * y;
4244 - };
4245 - if (e.clientX < rect.left) {
4246 - mode = "zoom";
4247 - return;
4248 - }
4249 - var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);
4250 - var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);
4251 - if (diff1 < 3.5 && diff2 < 3.5)
4252 - mode = diff1 > diff2 ? "cursor" : "anchor";
4253 - if (diff2 < 3.5)
4254 - mode = "anchor";
4255 - else if (diff1 < 3.5)
4256 - mode = "cursor";
4257 - else
4258 - mode = "scroll";
4259 - longTouchTimer = setTimeout(handleLongTap, 450);
4260 - }
4261 - touchStartT = t;
4262 - }, editor);
4263 - event.addListener(el, "touchend", function (e) {
4264 - pressed = editor.$mouseHandler.isMousePressed = false;
4265 - if (animationTimer)
4266 - clearInterval(animationTimer);
4267 - if (mode == "zoom") {
4268 - mode = "";
4269 - animationSteps = 0;
4270 - }
4271 - else if (longTouchTimer) {
4272 - editor.selection.moveToPosition(pos);
4273 - animationSteps = 0;
4274 - showContextMenu();
4275 - }
4276 - else if (mode == "scroll") {
4277 - animate();
4278 - hideContextMenu();
4279 - }
4280 - else {
4281 - showContextMenu();
4282 - }
4283 - clearTimeout(longTouchTimer);
4284 - longTouchTimer = null;
4285 - }, editor);
4286 - event.addListener(el, "touchmove", function (e) {
4287 - if (longTouchTimer) {
4288 - clearTimeout(longTouchTimer);
4289 - longTouchTimer = null;
4290 - }
4291 - var touches = e.touches;
4292 - if (touches.length > 1 || mode == "zoom")
4293 - return;
4294 - var touchObj = touches[0];
4295 - var wheelX = startX - touchObj.clientX;
4296 - var wheelY = startY - touchObj.clientY;
4297 - if (mode == "wait") {
4298 - if (wheelX * wheelX + wheelY * wheelY > 4)
4299 - mode = "cursor";
4300 - else
4301 - return e.preventDefault();
4302 - }
4303 - startX = touchObj.clientX;
4304 - startY = touchObj.clientY;
4305 - e.clientX = touchObj.clientX;
4306 - e.clientY = touchObj.clientY;
4307 - var t = e.timeStamp;
4308 - var dt = t - lastT;
4309 - lastT = t;
4310 - if (mode == "scroll") {
4311 - var mouseEvent = new MouseEvent(e, editor);
4312 - mouseEvent.speed = 1;
4313 - mouseEvent.wheelX = wheelX;
4314 - mouseEvent.wheelY = wheelY;
4315 - if (10 * Math.abs(wheelX) < Math.abs(wheelY))
4316 - wheelX = 0;
4317 - if (10 * Math.abs(wheelY) < Math.abs(wheelX))
4318 - wheelY = 0;
4319 - if (dt != 0) {
4320 - vX = wheelX / dt;
4321 - vY = wheelY / dt;
4322 - }
4323 - editor._emit("mousewheel", mouseEvent);
4324 - if (!mouseEvent.propagationStopped) {
4325 - vX = vY = 0;
4326 - }
4327 - }
4328 - else {
4329 - var ev = new MouseEvent(e, editor);
4330 - var pos = ev.getDocumentPosition();
4331 - if (mode == "cursor")
4332 - editor.selection.moveCursorToPosition(pos);
4333 - else if (mode == "anchor")
4334 - editor.selection.setSelectionAnchor(pos.row, pos.column);
4335 - editor.renderer.scrollCursorIntoView(pos);
4336 - e.preventDefault();
4337 - }
4338 - }, editor);
4339 - function animate() {
4340 - animationSteps += 60;
4341 - animationTimer = setInterval(function () {
4342 - if (animationSteps-- <= 0) {
4343 - clearInterval(animationTimer);
4344 - animationTimer = null;
4345 - }
4346 - if (Math.abs(vX) < 0.01)
4347 - vX = 0;
4348 - if (Math.abs(vY) < 0.01)
4349 - vY = 0;
4350 - if (animationSteps < 20)
4351 - vX = 0.9 * vX;
4352 - if (animationSteps < 20)
4353 - vY = 0.9 * vY;
4354 - var oldScrollTop = editor.session.getScrollTop();
4355 - editor.renderer.scrollBy(10 * vX, 10 * vY);
4356 - if (oldScrollTop == editor.session.getScrollTop())
4357 - animationSteps = 0;
4358 - }, 10);
4359 - }
4360 -};
4361 -
4362 -});
4363 -
4364 -ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict";
4365 -var event = require("../lib/event");
4366 -var useragent = require("../lib/useragent");
4367 -var DefaultHandlers = require("./default_handlers").DefaultHandlers;
4368 -var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler;
4369 -var MouseEvent = require("./mouse_event").MouseEvent;
4370 -var DragdropHandler = require("./dragdrop_handler").DragdropHandler;
4371 -var addTouchListeners = require("./touch_handler").addTouchListeners;
4372 -var config = require("../config");
4373 -var MouseHandler = /** @class */ (function () {
4374 - function MouseHandler(editor) { this.$dragDelay; this.$dragEnabled; this.$mouseMoved; this.mouseEvent; this.$focusTimeout;
4375 - var _self = this;
4376 - this.editor = editor;
4377 - new DefaultHandlers(this);
4378 - new DefaultGutterHandler(this);
4379 - new DragdropHandler(this);
4380 - var focusEditor = function (e) {
4381 - var windowBlurred = !document.hasFocus || !document.hasFocus()
4382 - || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());
4383 - if (windowBlurred)
4384 - window.focus();
4385 - editor.focus();
4386 - setTimeout(function () {
4387 - if (!editor.isFocused())
4388 - editor.focus();
4389 - });
4390 - };
4391 - var mouseTarget = editor.renderer.getMouseEventTarget();
4392 - event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor);
4393 - event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor);
4394 - event.addMultiMouseDownListener([
4395 - mouseTarget,
4396 - editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,
4397 - editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,
4398 - editor.textInput && editor.textInput.getElement()
4399 - ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor);
4400 - event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor);
4401 - addTouchListeners(editor.container, editor);
4402 - var gutterEl = editor.renderer.$gutter;
4403 - event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor);
4404 - event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor);
4405 - event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor);
4406 - event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor);
4407 - event.addListener(mouseTarget, "mousedown", focusEditor, editor);
4408 - event.addListener(gutterEl, "mousedown", focusEditor, editor);
4409 - if (useragent.isIE && editor.renderer.scrollBarV) {
4410 - event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor);
4411 - event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor);
4412 - }
4413 - editor.on("mousemove", function (e) {
4414 - if (_self.state || _self.$dragDelay || !_self.$dragEnabled)
4415 - return;
4416 - var character = editor.renderer.screenToTextCoordinates(e.x, e.y);
4417 - var range = editor.session.selection.getRange();
4418 - var renderer = editor.renderer;
4419 - if (!range.isEmpty() && range.insideStart(character.row, character.column)) {
4420 - renderer.setCursorStyle("default");
4421 - }
4422 - else {
4423 - renderer.setCursorStyle("");
4424 - }
4425 - }, //@ts-expect-error TODO: seems mistyping - should be boolean
4426 - editor);
4427 - }
4428 - MouseHandler.prototype.onMouseEvent = function (name, e) {
4429 - if (!this.editor.session)
4430 - return;
4431 - this.editor._emit(name, new MouseEvent(e, this.editor));
4432 - };
4433 - MouseHandler.prototype.onMouseMove = function (name, e) {
4434 - var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
4435 - if (!listeners || !listeners.length)
4436 - return;
4437 - this.editor._emit(name, new MouseEvent(e, this.editor));
4438 - };
4439 - MouseHandler.prototype.onMouseWheel = function (name, e) {
4440 - var mouseEvent = new MouseEvent(e, this.editor);
4441 - mouseEvent.speed = this.$scrollSpeed * 2;
4442 - mouseEvent.wheelX = e.wheelX;
4443 - mouseEvent.wheelY = e.wheelY;
4444 - this.editor._emit(name, mouseEvent);
4445 - };
4446 - MouseHandler.prototype.setState = function (state) {
4447 - this.state = state;
4448 - };
4449 - MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {
4450 - this.x = ev.x;
4451 - this.y = ev.y;
4452 - this.isMousePressed = true;
4453 - var editor = this.editor;
4454 - var renderer = this.editor.renderer;
4455 - renderer.$isMousePressed = true;
4456 - var self = this;
4457 - var onMouseMove = function (e) {
4458 - if (!e)
4459 - return;
4460 - if (useragent.isWebKit && !e.which && self.releaseMouse)
4461 - return self.releaseMouse();
4462 - self.x = e.clientX;
4463 - self.y = e.clientY;
4464 - mouseMoveHandler && mouseMoveHandler(e);
4465 - self.mouseEvent = new MouseEvent(e, self.editor);
4466 - self.$mouseMoved = true;
4467 - };
4468 - var onCaptureEnd = function (e) {
4469 - editor.off("beforeEndOperation", onOperationEnd);
4470 - clearInterval(timerId);
4471 - if (editor.session)
4472 - onCaptureInterval();
4473 - self[self.state + "End"] && self[self.state + "End"](e);
4474 - self.state = "";
4475 - self.isMousePressed = renderer.$isMousePressed = false;
4476 - if (renderer.$keepTextAreaAtCursor)
4477 - renderer.$moveTextAreaToCursor();
4478 - self.$onCaptureMouseMove = self.releaseMouse = null;
4479 - e && self.onMouseEvent("mouseup", e);
4480 - editor.endOperation();
4481 - };
4482 - var onCaptureInterval = function () {
4483 - self[self.state] && self[self.state]();
4484 - self.$mouseMoved = false;
4485 - };
4486 - if (useragent.isOldIE && ev.domEvent.type == "dblclick") {
4487 - return setTimeout(function () { onCaptureEnd(ev); });
4488 - }
4489 - var onOperationEnd = function (e) {
4490 - if (!self.releaseMouse)
4491 - return;
4492 - if (editor.curOp.command.name && editor.curOp.selectionChanged) {
4493 - self[self.state + "End"] && self[self.state + "End"]();
4494 - self.state = "";
4495 - self.releaseMouse();
4496 - }
4497 - };
4498 - editor.on("beforeEndOperation", onOperationEnd);
4499 - editor.startOperation({ command: { name: "mouse" } });
4500 - self.$onCaptureMouseMove = onMouseMove;
4501 - self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);
4502 - var timerId = setInterval(onCaptureInterval, 20);
4503 - };
4504 - MouseHandler.prototype.cancelContextMenu = function () {
4505 - var stop = function (e) {
4506 - if (e && e.domEvent && e.domEvent.type != "contextmenu")
4507 - return;
4508 - this.editor.off("nativecontextmenu", stop);
4509 - if (e && e.domEvent)
4510 - event.stopEvent(e.domEvent);
4511 - }.bind(this);
4512 - setTimeout(stop, 10);
4513 - this.editor.on("nativecontextmenu", stop);
4514 - };
4515 - MouseHandler.prototype.destroy = function () {
4516 - if (this.releaseMouse)
4517 - this.releaseMouse();
4518 - };
4519 - return MouseHandler;
4520 -}());
4521 -MouseHandler.prototype.releaseMouse = null;
4522 -config.defineOptions(MouseHandler.prototype, "mouseHandler", {
4523 - scrollSpeed: { initialValue: 2 },
4524 - dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },
4525 - dragEnabled: { initialValue: true },
4526 - focusTimeout: { initialValue: 0 },
4527 - tooltipFollowsMouse: { initialValue: true }
4528 -});
4529 -exports.MouseHandler = MouseHandler;
4530 -
4531 -});
4532 -
4533 -ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict";
4534 -var dom = require("../lib/dom");
4535 -var FoldHandler = /** @class */ (function () {
4536 - function FoldHandler(editor) {
4537 - editor.on("click", function (e) {
4538 - var position = e.getDocumentPosition();
4539 - var session = editor.session;
4540 - var fold = session.getFoldAt(position.row, position.column, 1);
4541 - if (fold) {
4542 - if (e.getAccelKey())
4543 - session.removeFold(fold);
4544 - else
4545 - session.expandFold(fold);
4546 - e.stop();
4547 - }
4548 - var target = e.domEvent && e.domEvent.target;
4549 - if (target && dom.hasCssClass(target, "ace_inline_button")) {
4550 - if (dom.hasCssClass(target, "ace_toggle_wrap")) {
4551 - session.setOption("wrap", !session.getUseWrapMode());
4552 - editor.renderer.scrollCursorIntoView();
4553 - }
4554 - }
4555 - });
4556 - editor.on("gutterclick", function (e) {
4557 - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);
4558 - if (gutterRegion == "foldWidgets") {
4559 - var row = e.getDocumentPosition().row;
4560 - var session = editor.session;
4561 - if (session.foldWidgets && session.foldWidgets[row])
4562 - editor.session.onFoldWidgetClick(row, e);
4563 - if (!editor.isFocused())
4564 - editor.focus();
4565 - e.stop();
4566 - }
4567 - });
4568 - editor.on("gutterdblclick", function (e) {
4569 - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);
4570 - if (gutterRegion == "foldWidgets") {
4571 - var row = e.getDocumentPosition().row;
4572 - var session = editor.session;
4573 - var data = session.getParentFoldRangeData(row, true);
4574 - var range = data.range || data.firstRange;
4575 - if (range) {
4576 - row = range.start.row;
4577 - var fold = session.getFoldAt(row, session.getLine(row).length, 1);
4578 - if (fold) {
4579 - session.removeFold(fold);
4580 - }
4581 - else {
4582 - session.addFold("...", range);
4583 - editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });
4584 - }
4585 - }
4586 - e.stop();
4587 - }
4588 - });
4589 - }
4590 - return FoldHandler;
4591 -}());
4592 -exports.FoldHandler = FoldHandler;
4593 -
4594 -});
4595 -
4596 -ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict";
4597 -var keyUtil = require("../lib/keys");
4598 -var event = require("../lib/event");
4599 -var KeyBinding = /** @class */ (function () {
4600 - function KeyBinding(editor) {
4601 - this.$editor = editor;
4602 - this.$data = { editor: editor };
4603 - this.$handlers = [];
4604 - this.setDefaultHandler(editor.commands);
4605 - }
4606 - KeyBinding.prototype.setDefaultHandler = function (kb) {
4607 - this.removeKeyboardHandler(this.$defaultHandler);
4608 - this.$defaultHandler = kb;
4609 - this.addKeyboardHandler(kb, 0);
4610 - };
4611 - KeyBinding.prototype.setKeyboardHandler = function (kb) {
4612 - var h = this.$handlers;
4613 - if (h[h.length - 1] == kb)
4614 - return;
4615 - while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)
4616 - this.removeKeyboardHandler(h[h.length - 1]);
4617 - this.addKeyboardHandler(kb, 1);
4618 - };
4619 - KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {
4620 - if (!kb)
4621 - return;
4622 - if (typeof kb == "function" && !kb.handleKeyboard)
4623 - kb.handleKeyboard = kb;
4624 - var i = this.$handlers.indexOf(kb);
4625 - if (i != -1)
4626 - this.$handlers.splice(i, 1);
4627 - if (pos == undefined)
4628 - this.$handlers.push(kb);
4629 - else
4630 - this.$handlers.splice(pos, 0, kb);
4631 - if (i == -1 && kb.attach)
4632 - kb.attach(this.$editor);
4633 - };
4634 - KeyBinding.prototype.removeKeyboardHandler = function (kb) {
4635 - var i = this.$handlers.indexOf(kb);
4636 - if (i == -1)
4637 - return false;
4638 - this.$handlers.splice(i, 1);
4639 - kb.detach && kb.detach(this.$editor);
4640 - return true;
4641 - };
4642 - KeyBinding.prototype.getKeyboardHandler = function () {
4643 - return this.$handlers[this.$handlers.length - 1];
4644 - };
4645 - KeyBinding.prototype.getStatusText = function () {
4646 - var data = this.$data;
4647 - var editor = data.editor;
4648 - return this.$handlers.map(function (h) {
4649 - return h.getStatusText && h.getStatusText(editor, data) || "";
4650 - }).filter(Boolean).join(" ");
4651 - };
4652 - KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {
4653 - var toExecute;
4654 - var success = false;
4655 - var commands = this.$editor.commands;
4656 - for (var i = this.$handlers.length; i--;) {
4657 - toExecute = this.$handlers[i].handleKeyboard(
4658 - this.$data, hashId, keyString, keyCode, e);
4659 - if (!toExecute || !toExecute.command)
4660 - continue;
4661 - if (toExecute.command == "null") {
4662 - success = true;
4663 - }
4664 - else {
4665 - success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);
4666 - }
4667 - if (success && e && hashId != -1 &&
4668 - toExecute["passEvent"] != true && toExecute.command["passEvent"] != true) {
4669 - event.stopEvent(e);
4670 - }
4671 - if (success)
4672 - break;
4673 - }
4674 - if (!success && hashId == -1) {
4675 - toExecute = { command: "insertstring" };
4676 - success = commands.exec("insertstring", this.$editor, keyString);
4677 - }
4678 - if (success && this.$editor._signal)
4679 - this.$editor._signal("keyboardActivity", toExecute);
4680 - return success;
4681 - };
4682 - KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {
4683 - var keyString = keyUtil.keyCodeToString(keyCode);
4684 - return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);
4685 - };
4686 - KeyBinding.prototype.onTextInput = function (text) {
4687 - return this.$callKeyboardHandlers(-1, text);
4688 - };
4689 - return KeyBinding;
4690 -}());
4691 -exports.KeyBinding = KeyBinding;
4692 -
4693 -});
4694 -
4695 -ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict";
4696 -var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641'];
4697 -var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a'];
4698 -var dir = 0, hiLevel = 0;
4699 -var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;
4700 -var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]
4701 -];
4702 -var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]
4703 -];
4704 -var LTR = 0, RTL = 1;
4705 -var L = 0;
4706 -var R = 1;
4707 -var EN = 2;
4708 -var AN = 3;
4709 -var ON = 4;
4710 -var B = 5;
4711 -var S = 6;
4712 -var AL = 7;
4713 -var WS = 8;
4714 -var CS = 9;
4715 -var ES = 10;
4716 -var ET = 11;
4717 -var NSM = 12;
4718 -var LRE = 13;
4719 -var RLE = 14;
4720 -var PDF = 15;
4721 -var LRO = 16;
4722 -var RLO = 17;
4723 -var BN = 18;
4724 -var UnicodeTBL00 = [
4725 - BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,
4726 - BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,
4727 - WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,
4728 - EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,
4729 - ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
4730 - L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,
4731 - ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
4732 - L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,
4733 - BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,
4734 - BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,
4735 - CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,
4736 - ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON
4737 -];
4738 -var UnicodeTBL20 = [
4739 - WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,
4740 - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,
4741 - ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,
4742 - ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,
4743 - ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,
4744 - ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS
4745 -];
4746 -function _computeLevels(chars, levels, len, charTypes) {
4747 - var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];
4748 - if (!charTypes) {
4749 - for (i = 0, charTypes = []; i < len; i++) {
4750 - charTypes[i] = _getCharacterType(chars[i]);
4751 - }
4752 - }
4753 - hiLevel = dir;
4754 - lastArabic = false;
4755 - hasUBAT_AL = false;
4756 - hasUBAT_B = false;
4757 - hasUBAT_S = false;
4758 - for (ix = 0; ix < len; ix++) {
4759 - prevState = newState;
4760 - classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);
4761 - newState = impTab[prevState][newClass];
4762 - action = newState & 0xF0;
4763 - newState &= 0x0F;
4764 - levels[ix] = newLevel = impTab[newState][5];
4765 - if (action > 0) {
4766 - if (action == 0x10) {
4767 - for (i = condPos; i < ix; i++) {
4768 - levels[i] = 1;
4769 - }
4770 - condPos = -1;
4771 - }
4772 - else {
4773 - condPos = -1;
4774 - }
4775 - }
4776 - cond = impTab[newState][6];
4777 - if (cond) {
4778 - if (condPos == -1) {
4779 - condPos = ix;
4780 - }
4781 - }
4782 - else {
4783 - if (condPos > -1) {
4784 - for (i = condPos; i < ix; i++) {
4785 - levels[i] = newLevel;
4786 - }
4787 - condPos = -1;
4788 - }
4789 - }
4790 - if (charTypes[ix] == B) {
4791 - levels[ix] = 0;
4792 - }
4793 - hiLevel |= newLevel;
4794 - }
4795 - if (hasUBAT_S) {
4796 - for (i = 0; i < len; i++) {
4797 - if (charTypes[i] == S) {
4798 - levels[i] = dir;
4799 - for (var j = i - 1; j >= 0; j--) {
4800 - if (charTypes[j] == WS) {
4801 - levels[j] = dir;
4802 - }
4803 - else {
4804 - break;
4805 - }
4806 - }
4807 - }
4808 - }
4809 - }
4810 -}
4811 -function _invertLevel(lev, levels, _array) {
4812 - if (hiLevel < lev) {
4813 - return;
4814 - }
4815 - if (lev == 1 && dir == RTL && !hasUBAT_B) {
4816 - _array.reverse();
4817 - return;
4818 - }
4819 - var len = _array.length, start = 0, end, lo, hi, tmp;
4820 - while (start < len) {
4821 - if (levels[start] >= lev) {
4822 - end = start + 1;
4823 - while (end < len && levels[end] >= lev) {
4824 - end++;
4825 - }
4826 - for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {
4827 - tmp = _array[lo];
4828 - _array[lo] = _array[hi];
4829 - _array[hi] = tmp;
4830 - }
4831 - start = end;
4832 - }
4833 - start++;
4834 - }
4835 -}
4836 -function _getCharClass(chars, types, classes, ix) {
4837 - var cType = types[ix], wType, nType, len, i;
4838 - switch (cType) {
4839 - case L:
4840 - case R:
4841 - lastArabic = false;
4842 - case ON:
4843 - case AN:
4844 - return cType;
4845 - case EN:
4846 - return lastArabic ? AN : EN;
4847 - case AL:
4848 - lastArabic = true;
4849 - hasUBAT_AL = true;
4850 - return R;
4851 - case WS:
4852 - return ON;
4853 - case CS:
4854 - if (ix < 1 || (ix + 1) >= types.length ||
4855 - ((wType = classes[ix - 1]) != EN && wType != AN) ||
4856 - ((nType = types[ix + 1]) != EN && nType != AN)) {
4857 - return ON;
4858 - }
4859 - if (lastArabic) {
4860 - nType = AN;
4861 - }
4862 - return nType == wType ? nType : ON;
4863 - case ES:
4864 - wType = ix > 0 ? classes[ix - 1] : B;
4865 - if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {
4866 - return EN;
4867 - }
4868 - return ON;
4869 - case ET:
4870 - if (ix > 0 && classes[ix - 1] == EN) {
4871 - return EN;
4872 - }
4873 - if (lastArabic) {
4874 - return ON;
4875 - }
4876 - i = ix + 1;
4877 - len = types.length;
4878 - while (i < len && types[i] == ET) {
4879 - i++;
4880 - }
4881 - if (i < len && types[i] == EN) {
4882 - return EN;
4883 - }
4884 - return ON;
4885 - case NSM:
4886 - len = types.length;
4887 - i = ix + 1;
4888 - while (i < len && types[i] == NSM) {
4889 - i++;
4890 - }
4891 - if (i < len) {
4892 - var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;
4893 - wType = types[i];
4894 - if (rtlCandidate && (wType == R || wType == AL)) {
4895 - return R;
4896 - }
4897 - }
4898 - if (ix < 1 || (wType = types[ix - 1]) == B) {
4899 - return ON;
4900 - }
4901 - return classes[ix - 1];
4902 - case B:
4903 - lastArabic = false;
4904 - hasUBAT_B = true;
4905 - return dir;
4906 - case S:
4907 - hasUBAT_S = true;
4908 - return ON;
4909 - case LRE:
4910 - case RLE:
4911 - case LRO:
4912 - case RLO:
4913 - case PDF:
4914 - lastArabic = false;
4915 - case BN:
4916 - return ON;
4917 - }
4918 -}
4919 -function _getCharacterType(ch) {
4920 - var uc = ch.charCodeAt(0), hi = uc >> 8;
4921 - if (hi == 0) {
4922 - return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);
4923 - }
4924 - else if (hi == 5) {
4925 - return (/[\u0591-\u05f4]/.test(ch) ? R : L);
4926 - }
4927 - else if (hi == 6) {
4928 - if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch))
4929 - return NSM;
4930 - else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch))
4931 - return AN;
4932 - else if (uc == 0x066A)
4933 - return ET;
4934 - else if (/[\u06f0-\u06f9]/.test(ch))
4935 - return EN;
4936 - else
4937 - return AL;
4938 - }
4939 - else if (hi == 0x20 && uc <= 0x205F) {
4940 - return UnicodeTBL20[uc & 0xFF];
4941 - }
4942 - else if (hi == 0xFE) {
4943 - return (uc >= 0xFE70 ? AL : ON);
4944 - }
4945 - return ON;
4946 -}
4947 -function _isArabicDiacritics(ch) {
4948 - return (ch >= '\u064b' && ch <= '\u0655');
4949 -}
4950 -exports.L = L;
4951 -exports.R = R;
4952 -exports.EN = EN;
4953 -exports.ON_R = 3;
4954 -exports.AN = 4;
4955 -exports.R_H = 5;
4956 -exports.B = 6;
4957 -exports.RLE = 7;
4958 -exports.DOT = "\xB7";
4959 -exports.doBidiReorder = function (text, textCharTypes, isRtl) {
4960 - if (text.length < 2)
4961 - return {};
4962 - var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];
4963 - dir = isRtl ? RTL : LTR;
4964 - _computeLevels(chars, levels, chars.length, textCharTypes);
4965 - for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)
4966 - ;
4967 - _invertLevel(2, levels, logicalFromVisual);
4968 - _invertLevel(1, levels, logicalFromVisual);
4969 - for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width
4970 - if (textCharTypes[i] === AN) {
4971 - levels[i] = exports.AN;
4972 - }
4973 - else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)
4974 - || textCharTypes[i] === ON || textCharTypes[i] === BN)) {
4975 - levels[i] = exports.ON_R;
4976 - }
4977 - else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) {
4978 - levels[i - 1] = levels[i] = exports.R_H;
4979 - i++;
4980 - }
4981 - }
4982 - if (chars[chars.length - 1] === exports.DOT)
4983 - levels[chars.length - 1] = exports.B;
4984 - if (chars[0] === '\u202B')
4985 - levels[0] = exports.RLE;
4986 - for (var i = 0; i < logicalFromVisual.length; i++) {
4987 - bidiLevels[i] = levels[logicalFromVisual[i]];
4988 - }
4989 - return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };
4990 -};
4991 -exports.hasBidiCharacters = function (text, textCharTypes) {
4992 - var ret = false;
4993 - for (var i = 0; i < text.length; i++) {
4994 - textCharTypes[i] = _getCharacterType(text.charAt(i));
4995 - if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))
4996 - ret = true;
4997 - }
4998 - return ret;
4999 -};

This file is too large to show in full.

webui/vendor/ace/mode-json.js new
+8
@@ -0,0 +1,8 @@
1 +define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(f.prototype),t.Mode=f}); (function() {
2 + window.require(["ace/mode/json"], function(m) {
3 + if (typeof module == "object" && typeof exports == "object" && module) {
4 + module.exports = m;
5 + }
6 + });
7 + })();
8 +
\ No newline at end of file
webui/vendor/ace/mode-markdown.js new
+8
@@ -0,0 +1,8 @@
1 +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.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|max-zoom|min-height|min-width|min-zoom|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|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.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|flex-end|flex-start|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|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.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",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?(?:"+e+"|(?=>))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",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|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|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(?=\()/},{token:"support.function.dom",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(?=\()/},{token:"support.constant",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/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],processing_instruction:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:t},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),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(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length<o.length+3&&f[2].length>=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]|$/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n<o){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(u,i,n,0)}while(n-->0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n<o){if(!l(n))continue;var d=h();if(d>=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column<l)return;if(u.column==l){var c=a.stepForward();if(c&&o(c,"attribute-value"))return;a.stepBackward()}}if(/^\s*>/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:"></"+d+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value==="</"?{text:"\n"+v+"\n"+d,selection:[1,v.length,1,v.length]}:{text:"\n"+v}}}}})};r.inherits(u,i),t.XmlBehaviour=u}),define("ace/mode/behaviour/javascript",["require","exports","module","ace/lib/oop","ace/token_iterator","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../token_iterator").TokenIterator,s=e("../behaviour/cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=function(){var e=(new o({closeCurlyBraces:!0})).getBehaviours();this.addBehaviours(e),this.inherit(s),this.add("autoclosing-fragment","insertion",function(e,t,n,r,s){if(s==">"){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:"></>",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/<!-/.test(e.getLine(t))?"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new u;for(var i=0;i<n.length;i++){var s=n[i];if(a(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=a(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value;if(s.value===""){s=n[++i];if(!s)return null;r.tagName=s.value}r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(a(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r-1)continue;if(a(u,"end-tag-open")){u=i[o+1],a(u,"tag-name")&&u.value===""&&(u=i[o+2]);if(u&&u.value==n)return!0}}return!1},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return this.getCommentFoldWidget(e,n)&&e.getCommentFoldRange(n,e.getLine(n).length);var s=e.getMatchingTags({row:n,column:0});if(s)return new i(s.openTag.end.row,s.openTag.end.column,s.closeTag.start.row,s.closeTag.start.column)}}).call(o.prototype)}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),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/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},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},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"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},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"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},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),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(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={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},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},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},br:{},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}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},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}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},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}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{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},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},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},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},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},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}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},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}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["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;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),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(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh",this.snippetFileId="ace/snippets/sh"}.call(a.prototype),t.Mode=a}),define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./behaviour/cstyle").CstyleBehaviour,s=e("./text").Mode,o=e("./markdown_highlight_rules").MarkdownHighlightRules,u=e("./folding/markdown").FoldMode,a=function(){this.HighlightRules=o,this.createModeDelegates({javascript:e("./javascript").Mode,html:e("./html").Mode,bash:e("./sh").Mode,sh:e("./sh").Mode,xml:e("./xml").Mode,css:e("./css").Mode}),this.foldingRules=new u,this.$behaviour=new i({braces:!0})};r.inherits(a,s),function(){this.type="text",this.blockComment={start:"<!--",end:"-->"},this.$quotes={'"':'"',"`":"`"},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown",this.snippetFileId="ace/snippets/markdown"}.call(a.prototype),t.Mode=a}); (function() {
2 + window.require(["ace/mode/markdown"], function(m) {
3 + if (typeof module == "object" && typeof exports == "object" && module) {
4 + module.exports = m;
5 + }
6 + });
7 + })();
8 +
\ No newline at end of file
webui/vendor/ace/theme-github_dark.js new
+8
@@ -0,0 +1,8 @@
1 +define("ace/theme/github_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-github-dark .ace_gutter {\n background: #24292e;\n color: #7388b5\n}\n\n.ace-github-dark .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-github-dark {\n background-color: #24292e;\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_constant.ace_other,\n.ace-github-dark .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-github-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #24292e;\n}\n\n.ace-github-dark .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-github-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-github-dark .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-github-dark .ace_gutter-active-line {\n background-color: #24292e\n}\n\n.ace-github-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-github-dark .ace_invisible {\n color: #404F7D\n}\n\n.ace-github-dark .ace_keyword,\n.ace-github-dark .ace_meta,\n.ace-github-dark .ace_storage,\n.ace-github-dark .ace_storage.ace_type,\n.ace-github-dark .ace_support.ace_type {\n color: #ff7b72\n}\n\n.ace-github-dark .ace_keyword.ace_operator {\n color: #79c0ff\n}\n\n.ace-github-dark .ace_constant.ace_character,\n.ace-github-dark .ace_constant.ace_language,\n.ace-github-dark .ace_constant.ace_numeric,\n.ace-github-dark .ace_keyword.ace_other.ace_unit,\n.ace-github-dark .ace_support.ace_constant,\n.ace-github-dark .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-github-dark .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-github-dark .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #ff7b72\n}\n\n.ace-github-dark .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_function,\n.ace-github-dark .ace_support.ace_function,\n.ace-github-dark .ace_variable {\n color: #BBDAFF\n}\n\n.ace-github-dark .ace_support.ace_class,\n.ace-github-dark .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-github-dark .ace_heading,\n.ace-github-dark .ace_markup.ace_heading,\n.ace-github-dark .ace_string {\n color: #9fcef6\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_tag,\n.ace-github-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-github-dark .ace_meta.ace_tag,\n.ace-github-dark .ace_string.ace_regexp,\n.ace-github-dark .ace_variable {\n color: #FF9DA4\n}\n\n.ace-github-dark .ace_comment {\n color: #7285B7\n}\n\n.ace-github-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-github-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n\n.ace-github-dark .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github-dark .ace_variable.ace_language {\n color: #ffffff;\n}\n "}),define("ace/theme/github_dark",["require","exports","module","ace/theme/github_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-github-dark",t.cssText=e("./github_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() {
2 + window.require(["ace/theme/github_dark"], function(m) {
3 + if (typeof module == "object" && typeof exports == "object" && module) {
4 + module.exports = m;
5 + }
6 + });
7 + })();
8 +
\ No newline at end of file
webui/vendor/ace/worker-json.js new
+1
@@ -0,0 +1 @@
1 +"no use strict";!function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i&&i.data,file:t,line:n,col:r,stack:i&&i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.slice(0,r.length).map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.require.tlns={},e.initBaseUrls=function(t){for(var n in t)this.require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),r=e.sender=e.initSender();var s=this.require(i.module)[i.classname];n=e.main=new s(r)}}}(this),define("ace/lib/oop",[],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/apply_delta",[],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/lib/event_emitter",[],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;this.on(e,function r(){n.off(e,r),t.apply(null,arguments)});if(!t)return new Promise(function(e){t=e})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t)r&&this.setDefaultHandler(e,r.pop());else if(r){var i=r.indexOf(t);i!=-1&&r.splice(i,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){e||(this._eventRegistry=this._defaultHandlers=undefined),this._eventRegistry&&(this._eventRegistry[e]=undefined),this._defaultHandlers&&(this._defaultHandlers[e]=undefined)},t.EventEmitter=r}),define("ace/range",[],function(e,t,n){"use strict";var r=function(){function e(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}}return e.prototype.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},e.prototype.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},e.prototype.contains=function(e,t){return this.compare(e,t)==0},e.prototype.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},e.prototype.comparePoint=function(e){return this.compare(e.row,e.column)},e.prototype.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},e.prototype.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},e.prototype.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},e.prototype.isStart=function(e,t){return this.start.row==e&&this.start.column==t},e.prototype.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},e.prototype.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},e.prototype.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},e.prototype.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},e.prototype.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},e.prototype.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},e.prototype.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},e.prototype.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.clipRows=function(t,n){if(this.end.row>n)var r={row:n+1,column:0};else if(this.end.row<t)var r={row:t,column:0};if(this.start.row>n)var i={row:n+1,column:0};else if(this.start.row<t)var i={row:t,column:0};return e.fromPoints(i||this.start,r||this.end)},e.prototype.extend=function(t,n){var r=this.compare(t,n);if(r==0)return this;if(r==-1)var i={row:t,column:n};else var s={row:t,column:n};return e.fromPoints(i||this.start,s||this.end)},e.prototype.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},e.prototype.isMultiLine=function(){return this.start.row!==this.end.row},e.prototype.clone=function(){return e.fromPoints(this.start,this.end)},e.prototype.collapseRows=function(){return this.end.column==0?new e(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new e(this.start.row,0,this.end.row,0)},e.prototype.toScreenRange=function(t){var n=t.documentToScreenPosition(this.start),r=t.documentToScreenPosition(this.end);return new e(n.row,n.column,r.row,r.column)},e.prototype.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t},e}();r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},r.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=r}),define("ace/anchor",[],function(e,t,n){"use strict";function o(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function u(e,t,n){var r=e.action=="insert",i=(r?1:-1)*(e.end.row-e.start.row),s=(r?1:-1)*(e.end.column-e.start.column),u=e.start,a=r?u:e.end;return o(t,u,n)?{row:t.row,column:t.column}:o(a,t,!n)?{row:t.row+i,column:t.column+(t.row==a.row?s:0)}:{row:u.row,column:u.column}}var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(){function e(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof t!="number"?this.setPosition(t.row,t.column):this.setPosition(t,n)}return e.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},e.prototype.getDocument=function(){return this.document},e.prototype.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var t=u(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(t.row,t.column,!0)},e.prototype.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},e.prototype.detach=function(){this.document.off("change",this.$onChange)},e.prototype.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},e.prototype.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n},e}();s.prototype.$insertRight=!1,r.implement(s.prototype,i),t.Anchor=s}),define("ace/document",[],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(){function e(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)}return e.prototype.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e||"")},e.prototype.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},e.prototype.createAnchor=function(e,t){return new u(this,e,t)},e.prototype.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},e.prototype.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},e.prototype.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},e.prototype.getNewLineMode=function(){return this.$newLineMode},e.prototype.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},e.prototype.getLine=function(e){return this.$lines[e]||""},e.prototype.getLines=function(e,t){return this.$lines.slice(e,t+1)},e.prototype.getAllLines=function(){return this.getLines(0,this.getLength())},e.prototype.getLength=function(){return this.$lines.length},e.prototype.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},e.prototype.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},e.prototype.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},e.prototype.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},e.prototype.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},e.prototype.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},e.prototype.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},e.prototype.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},e.prototype.clonePos=function(e){return{row:e.row,column:e.column}},e.prototype.pos=function(e,t){return{row:e,column:t}},e.prototype.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},e.prototype.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},e.prototype.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},e.prototype.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},e.prototype.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},e.prototype.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},e.prototype.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},e.prototype.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},e.prototype.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},e.prototype.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},e.prototype.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},e.prototype.$safeApplyDelta=function(e){var t=this.$lines.length;(e.action=="remove"&&e.start.row<t&&e.end.row<t||e.action=="insert"&&e.start.row<=t)&&this.applyDelta(e)},e.prototype.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length-t+1,i=e.start.row,s=e.start.column;for(var o=0,u=0;o<r;o=u){u+=t-1;var a=n.slice(o,u);a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}e.lines=n.slice(o),e.start.row=i+o,e.start.column=s,this.applyDelta(e,!0)},e.prototype.revertDelta=function(e){this.$safeApplyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},e.prototype.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:e+n[s-1].length+r}},e.prototype.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column},e.prototype.$split=function(e){return e.split(/\r\n|\r|\n/)},e}();a.prototype.$autoNewLine="",a.prototype.$newLineMode="auto",r.implement(a.prototype,s),t.Document=a}),define("ace/lib/deep_copy",[],function(e,t,n){t.deepCopy=function r(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=r(e[n]);return t}if(Object.prototype.toString.call(e)!=="[object Object]")return e;t={};for(var n in e)t[n]=r(e[n]);return t}}),define("ace/lib/lang",[],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=e("./deep_copy").deepCopy,t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return(""+e).replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i},t.supportsLookbehind=function(){try{new RegExp("(?<=.)")}catch(e){return!1}return!0},t.skipEmptyMatch=function(e,t,n){return n&&e.codePointAt(t)>65535?2:1}}),define("ace/worker/mirror",[],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){var r=e.data;if(r[0].start)t.applyDeltas(r);else for(var i=0;i<r.length;i+=2){var o,u;Array.isArray(r[i+1])?o={action:"insert",start:r[i],lines:r[i+1]}:o={action:"remove",start:r[i],end:r[i+1]};if((o.action=="insert"?o.start:o.end).row>=t.$lines.length)throw u=new Error("Invalid delta"),u.data={path:s.$path,linesLength:t.$lines.length,start:o.start,end:o.end},u;t.applyDelta(o,!0)}if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),define("ace/mode/json/json_parse",[],function(e,t,n){"use strict";var r,i,s={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "},o,u=function(e){throw{name:"SyntaxError",message:e,at:r,text:o}},a=function(e){return e&&e!==i&&u("Expected '"+e+"' instead of '"+i+"'"),i=o.charAt(r),r+=1,i},f=function(){var e,t="";i==="-"&&(t="-",a("-"));while(i>="0"&&i<="9")t+=i,a();if(i==="."){t+=".";while(a()&&i>="0"&&i<="9")t+=i}if(i==="e"||i==="E"){t+=i,a();if(i==="-"||i==="+")t+=i,a();while(i>="0"&&i<="9")t+=i,a()}e=+t;if(!isNaN(e))return e;u("Bad number")},l=function(){var e,t,n="",r;if(i==='"')while(a()){if(i==='"')return a(),n;if(i==="\\"){a();if(i==="u"){r=0;for(t=0;t<4;t+=1){e=parseInt(a(),16);if(!isFinite(e))break;r=r*16+e}n+=String.fromCharCode(r)}else{if(typeof s[i]!="string")break;n+=s[i]}}else{if(i=="\n"||i=="\r")break;n+=i}}u("Bad string")},c=function(){while(i&&i<=" ")a()},h=function(){switch(i){case"t":return a("t"),a("r"),a("u"),a("e"),!0;case"f":return a("f"),a("a"),a("l"),a("s"),a("e"),!1;case"n":return a("n"),a("u"),a("l"),a("l"),null}u("Unexpected '"+i+"'")},p,d=function(){var e=[];if(i==="["){a("["),c();if(i==="]")return a("]"),e;while(i){e.push(p()),c();if(i==="]")return a("]"),e;a(","),c()}}u("Bad array")},v=function(){var e,t={};if(i==="{"){a("{"),c();if(i==="}")return a("}"),t;while(i){e=l(),c(),a(":"),Object.hasOwnProperty.call(t,e)&&u('Duplicate key "'+e+'"'),t[e]=p(),c();if(i==="}")return a("}"),t;a(","),c()}}u("Bad object")};return p=function(){c();switch(i){case"{":return v();case"[":return d();case'"':return l();case"-":return f();default:return i>="0"&&i<="9"?f():h()}},function(e,t){var n;return o=e,r=0,i=" ",n=p(),c(),i&&u("Syntax error"),typeof t=="function"?function s(e,n){var r,i,o=e[n];if(o&&typeof o=="object")for(r in o)Object.hasOwnProperty.call(o,r)&&(i=s(o,r),i!==undefined?o[r]=i:delete o[r]);return t.call(e,n,o)}({"":n},""):n}}),define("ace/mode/json_worker",[],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./json/json_parse"),o=t.JsonWorker=function(e){i.call(this,e),this.setTimeout(200)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{e&&s(e)}catch(n){var r=this.doc.indexToPosition(n.at-1);t.push({row:r.row,column:r.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)})
\ No newline at end of file