From 42fe5329757a4d03fa1426b5c3e9c965fd11fbc4 Mon Sep 17 00:00:00 2001 From: jos Date: Sat, 9 Apr 2016 21:00:33 +0200 Subject: [PATCH] Released v5.4.0 --- HISTORY.md | 4 +- dist/jsoneditor-minimalist.js | 3157 ++--- dist/jsoneditor-minimalist.map | 2 +- dist/jsoneditor-minimalist.min.js | 14 +- dist/jsoneditor.css | 26 + dist/jsoneditor.js | 18388 +++++++++++++++------------- dist/jsoneditor.map | 2 +- dist/jsoneditor.min.css | 2 +- dist/jsoneditor.min.js | 41 +- package.json | 2 +- 10 files changed, 11332 insertions(+), 10306 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index f812489..695a384 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,9 +3,9 @@ https://github.com/josdejong/jsoneditor -## not yet released, version 5.4.0 +## 2016-04-09, version 5.4.0 -- Upgraded all dependencies. +- Upgraded all dependencies (`ajv`, `brace`, etc). - Fixed #289: Some CSS breaking when using the editor in combination with materialize.css or bootstrap. - Fixed #290: `setText()` not working in mode text or code. diff --git a/dist/jsoneditor-minimalist.js b/dist/jsoneditor-minimalist.js index bf5eb19..31dbdc2 100644 --- a/dist/jsoneditor-minimalist.js +++ b/dist/jsoneditor-minimalist.js @@ -24,14 +24,14 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.3.0 - * @date 2016-04-06 + * @version 5.4.0 + * @date 2016-04-09 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) - define(factory); + define([], factory); else if(typeof exports === 'object') exports["JSONEditor"] = factory(); else @@ -83,6 +83,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 0 */ /***/ function(module, exports, __webpack_require__) { + 'use strict'; + var Ajv; try { Ajv = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"ajv\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); @@ -92,8 +94,8 @@ return /******/ (function(modules) { // webpackBootstrap } var treemode = __webpack_require__(1); - var textmode = __webpack_require__(2); - var util = __webpack_require__(3); + var textmode = __webpack_require__(12); + var util = __webpack_require__(4); /** * @constructor JSONEditor @@ -462,13 +464,16 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { - var Highlighter = __webpack_require__(4); - var History = __webpack_require__(5); + 'use strict'; + + + var Highlighter = __webpack_require__(2); + var History = __webpack_require__(3); var SearchBox = __webpack_require__(6); var ContextMenu = __webpack_require__(7); var Node = __webpack_require__(8); - var ModeSwitcher = __webpack_require__(9); - var util = __webpack_require__(3); + var ModeSwitcher = __webpack_require__(11); + var util = __webpack_require__(4); // create a mixin with the functions for tree mode var treemode = {}; @@ -1648,502 +1653,376 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 2 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { - var ace; - try { - ace = __webpack_require__(10); - } - catch (err) { - // failed to load ace, no problem, we will fall back to plain text - } - - var ModeSwitcher = __webpack_require__(9); - var util = __webpack_require__(3); - - // create a mixin with the functions for text mode - var textmode = {}; - - var MAX_ERRORS = 3; // maximum number of displayed errors at the bottom + 'use strict'; /** - * Create a text editor - * @param {Element} container - * @param {Object} [options] Object with options. available options: - * {String} mode Available values: - * "text" (default) - * or "code". - * {Number} indentation Number of indentation - * spaces. 2 by default. - * {function} onChange Callback method - * triggered on change - * {function} onModeChange Callback method - * triggered after setMode - * {Object} ace A custom instance of - * Ace editor. - * {boolean} escapeUnicode If true, unicode - * characters are escaped. - * false by default. - * @private + * The highlighter can highlight/unhighlight a node, and + * animate the visibility of a context menu. + * @constructor Highlighter */ - textmode.create = function (container, options) { - // read options - options = options || {}; - this.options = options; + function Highlighter () { + this.locked = false; + } - // indentation - if (options.indentation) { - this.indentation = Number(options.indentation); - } - else { - this.indentation = 2; // number of spaces + /** + * Hightlight given node and its childs + * @param {Node} node + */ + Highlighter.prototype.highlight = function (node) { + if (this.locked) { + return; } - // grab ace from options if provided - var _ace = options.ace ? options.ace : ace; - - // determine mode - this.mode = (options.mode == 'code') ? 'code' : 'text'; - if (this.mode == 'code') { - // verify whether Ace editor is available and supported - if (typeof _ace === 'undefined') { - this.mode = 'text'; - console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.'); + if (this.node != node) { + // unhighlight current node + if (this.node) { + this.node.setHighlight(false); } + + // highlight new node + this.node = node; + this.node.setHighlight(true); } - // determine theme - this.theme = options.theme || 'ace/theme/jsoneditor'; + // cancel any current timeout + this._cancelUnhighlight(); + }; + + /** + * Unhighlight currently highlighted node. + * Will be done after a delay + */ + Highlighter.prototype.unhighlight = function () { + if (this.locked) { + return; + } var me = this; - this.container = container; - this.dom = {}; - this.aceEditor = undefined; // ace code editor - this.textarea = undefined; // plain text editor (fallback when Ace is not available) - this.validateSchema = null; + if (this.node) { + this._cancelUnhighlight(); - // create a debounced validate function - this._debouncedValidate = util.debounce(this.validate.bind(this), this.DEBOUNCE_INTERVAL); - - this.width = container.clientWidth; - this.height = container.clientHeight; - - this.frame = document.createElement('div'); - this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; - this.frame.onclick = function (event) { - // prevent default submit action when the editor is located inside a form - event.preventDefault(); - }; - this.frame.onkeydown = function (event) { - me._onKeyDown(event); - }; - - // create menu - this.menu = document.createElement('div'); - this.menu.className = 'jsoneditor-menu'; - this.frame.appendChild(this.menu); - - // create format button - var buttonFormat = document.createElement('button'); - buttonFormat.className = 'jsoneditor-format'; - buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)'; - this.menu.appendChild(buttonFormat); - buttonFormat.onclick = function () { - try { - me.format(); - me._onChange(); - } - catch (err) { - me._onError(err); - } - }; - - // create compact button - var buttonCompact = document.createElement('button'); - buttonCompact.className = 'jsoneditor-compact'; - buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)'; - this.menu.appendChild(buttonCompact); - buttonCompact.onclick = function () { - try { - me.compact(); - me._onChange(); - } - catch (err) { - me._onError(err); - } - }; - - // create mode box - if (this.options && this.options.modes && this.options.modes.length) { - this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) { - me.modeSwitcher.destroy(); - - // switch mode and restore focus - me.setMode(mode); - me.modeSwitcher.focus(); - }); + // do the unhighlighting after a small delay, to prevent re-highlighting + // the same node when moving from the drag-icon to the contextmenu-icon + // or vice versa. + this.unhighlightTimer = setTimeout(function () { + me.node.setHighlight(false); + me.node = undefined; + me.unhighlightTimer = undefined; + }, 0); } - - this.content = document.createElement('div'); - this.content.className = 'jsoneditor-outer'; - this.frame.appendChild(this.content); - - this.container.appendChild(this.frame); - - if (this.mode == 'code') { - this.editorDom = document.createElement('div'); - this.editorDom.style.height = '100%'; // TODO: move to css - this.editorDom.style.width = '100%'; // TODO: move to css - this.content.appendChild(this.editorDom); - - var aceEditor = _ace.edit(this.editorDom); - aceEditor.$blockScrolling = Infinity; - aceEditor.setTheme(this.theme); - aceEditor.setShowPrintMargin(false); - aceEditor.setFontSize(13); - aceEditor.getSession().setMode('ace/mode/json'); - aceEditor.getSession().setTabSize(this.indentation); - aceEditor.getSession().setUseSoftTabs(true); - aceEditor.getSession().setUseWrapMode(true); - aceEditor.commands.bindKey('Ctrl-L', null); // disable Ctrl+L (is used by the browser to select the address bar) - aceEditor.commands.bindKey('Command-L', null); // disable Ctrl+L (is used by the browser to select the address bar) - this.aceEditor = aceEditor; - - // TODO: deprecated since v5.0.0. Cleanup backward compatibility some day - if (!this.hasOwnProperty('editor')) { - Object.defineProperty(this, 'editor', { - get: function () { - console.warn('Property "editor" has been renamed to "aceEditor".'); - return me.aceEditor; - }, - set: function (aceEditor) { - console.warn('Property "editor" has been renamed to "aceEditor".'); - me.aceEditor = aceEditor; - } - }); - } - - var poweredBy = document.createElement('a'); - poweredBy.appendChild(document.createTextNode('powered by ace')); - poweredBy.href = 'http://ace.ajax.org'; - poweredBy.target = '_blank'; - poweredBy.className = 'jsoneditor-poweredBy'; - poweredBy.onclick = function () { - // TODO: this anchor falls below the margin of the content, - // therefore the normal a.href does not work. We use a click event - // for now, but this should be fixed. - window.open(poweredBy.href, poweredBy.target); - }; - this.menu.appendChild(poweredBy); - - // register onchange event - aceEditor.on('change', this._onChange.bind(this)); - } - else { - // load a plain text textarea - var textarea = document.createElement('textarea'); - textarea.className = 'jsoneditor-text'; - textarea.spellcheck = false; - this.content.appendChild(textarea); - this.textarea = textarea; - - // register onchange event - if (this.textarea.oninput === null) { - this.textarea.oninput = this._onChange.bind(this); - } - else { - // oninput is undefined. For IE8- - this.textarea.onchange = this._onChange.bind(this); - } - } - - this.setSchema(this.options.schema); }; /** - * Handle a change: - * - Validate JSON schema - * - Send a callback to the onChange listener if provided + * Cancel an unhighlight action (if before the timeout of the unhighlight action) * @private */ - textmode._onChange = function () { - // validate JSON schema (if configured) - this._debouncedValidate(); - - // trigger the onChange callback - if (this.options.onChange) { - try { - this.options.onChange(); - } - catch (err) { - console.error('Error in onChange callback: ', err); - } + Highlighter.prototype._cancelUnhighlight = function () { + if (this.unhighlightTimer) { + clearTimeout(this.unhighlightTimer); + this.unhighlightTimer = undefined; } }; /** - * Event handler for keydown. Handles shortcut keys - * @param {Event} event - * @private + * Lock highlighting or unhighlighting nodes. + * methods highlight and unhighlight do not work while locked. */ - textmode._onKeyDown = function (event) { - var keynum = event.which || event.keyCode; - var handled = false; - - if (keynum == 220 && event.ctrlKey) { - if (event.shiftKey) { // Ctrl+Shift+\ - this.compact(); - this._onChange(); - } - else { // Ctrl+\ - this.format(); - this._onChange(); - } - handled = true; - } - - if (handled) { - event.preventDefault(); - event.stopPropagation(); - } + Highlighter.prototype.lock = function () { + this.locked = true; }; /** - * Destroy the editor. Clean up DOM, event listeners, and web workers. + * Unlock highlighting or unhighlighting nodes */ - textmode.destroy = function () { - // remove old ace editor - if (this.aceEditor) { - this.aceEditor.destroy(); - this.aceEditor = null; - } - - if (this.frame && this.container && this.frame.parentNode == this.container) { - this.container.removeChild(this.frame); - } - - if (this.modeSwitcher) { - this.modeSwitcher.destroy(); - this.modeSwitcher = null; - } - - this.textarea = null; - - this._debouncedValidate = null; + Highlighter.prototype.unlock = function () { + this.locked = false; }; - /** - * Compact the code in the formatter - */ - textmode.compact = function () { - var json = this.get(); - var text = JSON.stringify(json); - this.setText(text); - }; - - /** - * Format the code in the formatter - */ - textmode.format = function () { - var json = this.get(); - var text = JSON.stringify(json, null, this.indentation); - this.setText(text); - }; - - /** - * Set focus to the formatter - */ - textmode.focus = function () { - if (this.textarea) { - this.textarea.focus(); - } - if (this.aceEditor) { - this.aceEditor.focus(); - } - }; - - /** - * Resize the formatter - */ - textmode.resize = function () { - if (this.aceEditor) { - var force = false; - this.aceEditor.resize(force); - } - }; - - /** - * Set json data in the formatter - * @param {Object} json - */ - textmode.set = function(json) { - this.setText(JSON.stringify(json, null, this.indentation)); - }; - - /** - * Get json data from the formatter - * @return {Object} json - */ - textmode.get = function() { - var text = this.getText(); - var json; - - try { - json = util.parse(text); // this can throw an error - } - catch (err) { - // try to sanitize json, replace JavaScript notation with JSON notation - text = util.sanitize(text); - - // try to parse again - json = util.parse(text); // this can throw an error - } - - return json; - }; - - /** - * Get the text contents of the editor - * @return {String} jsonText - */ - textmode.getText = function() { - if (this.textarea) { - return this.textarea.value; - } - if (this.aceEditor) { - return this.aceEditor.getValue(); - } - return ''; - }; - - /** - * Set the text contents of the editor - * @param {String} jsonText - */ - textmode.setText = function(jsonText) { - if (this.options.escapeUnicode === true) { - text = util.escapeUnicodeChars(jsonText); - } - else { - text = jsonText; - } - - if (this.textarea) { - this.textarea.value = text; - } - if (this.aceEditor) { - // prevent emitting onChange events while setting new text - var originalOnChange = this.options.onChange; - this.options.onChange = null; - - this.aceEditor.setValue(text, -1); - - this.options.onChange = originalOnChange; - } - - // validate JSON schema - this.validate(); - }; - - /** - * Validate current JSON object against the configured JSON schema - * Throws an exception when no JSON schema is configured - */ - textmode.validate = function () { - // clear all current errors - if (this.dom.validationErrors) { - this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors); - this.dom.validationErrors = null; - - this.content.style.marginBottom = ''; - this.content.style.paddingBottom = ''; - } - - var doValidate = false; - var errors = []; - var json; - try { - json = this.get(); // this can fail when there is no valid json - doValidate = true; - } - catch (err) { - // no valid JSON, don't validate - } - - // only validate the JSON when parsing the JSON succeeded - if (doValidate && this.validateSchema) { - var valid = this.validateSchema(json); - if (!valid) { - errors = this.validateSchema.errors.map(function (error) { - return util.improveSchemaError(error); - }); - } - } - - if (errors.length > 0) { - // limit the number of displayed errors - var limit = errors.length > MAX_ERRORS; - if (limit) { - errors = errors.slice(0, MAX_ERRORS); - var hidden = this.validateSchema.errors.length - MAX_ERRORS; - errors.push('(' + hidden + ' more errors...)') - } - - var validationErrors = document.createElement('div'); - validationErrors.innerHTML = '' + - '' + - errors.map(function (error) { - var message; - if (typeof error === 'string') { - message = ''; - } - else { - message = '' + - ''; - } - - return '' + message + '' - }).join('') + - '' + - '
' + error + '
' + error.dataPath + '' + error.message + '
'; - - this.dom.validationErrors = validationErrors; - this.frame.appendChild(validationErrors); - - var height = validationErrors.clientHeight; - this.content.style.marginBottom = (-height) + 'px'; - this.content.style.paddingBottom = height + 'px'; - } - - // update the height of the ace editor - if (this.aceEditor) { - var force = false; - this.aceEditor.resize(force); - } - }; - - // define modes - module.exports = [ - { - mode: 'text', - mixin: textmode, - data: 'text', - load: textmode.format - }, - { - mode: 'code', - mixin: textmode, - data: 'text', - load: textmode.format - } - ]; + module.exports = Highlighter; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { - var jsonlint = __webpack_require__(11); + 'use strict'; + + var util = __webpack_require__(4); + + /** + * @constructor History + * Store action history, enables undo and redo + * @param {JSONEditor} editor + */ + function History (editor) { + this.editor = editor; + this.history = []; + this.index = -1; + + this.clear(); + + // map with all supported actions + this.actions = { + 'editField': { + 'undo': function (params) { + params.node.updateField(params.oldValue); + }, + 'redo': function (params) { + params.node.updateField(params.newValue); + } + }, + 'editValue': { + 'undo': function (params) { + params.node.updateValue(params.oldValue); + }, + 'redo': function (params) { + params.node.updateValue(params.newValue); + } + }, + 'changeType': { + 'undo': function (params) { + params.node.changeType(params.oldType); + }, + 'redo': function (params) { + params.node.changeType(params.newType); + } + }, + + 'appendNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.appendChild(node); + }); + } + }, + 'insertBeforeNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.insertBefore(node, params.beforeNode); + }); + } + }, + 'insertAfterNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + var afterNode = params.afterNode; + params.nodes.forEach(function (node) { + params.parent.insertAfter(params.node, afterNode); + afterNode = node; + }); + } + }, + 'removeNodes': { + 'undo': function (params) { + var parent = params.parent; + var beforeNode = parent.childs[params.index] || parent.append; + params.nodes.forEach(function (node) { + parent.insertBefore(node, beforeNode); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + } + }, + 'duplicateNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + var afterNode = params.afterNode; + params.nodes.forEach(function (node) { + params.parent.insertAfter(node, afterNode); + afterNode = node; + }); + } + }, + 'moveNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode); + }); + } + }, + + 'sort': { + 'undo': function (params) { + var node = params.node; + node.hideChilds(); + node.sort = params.oldSort; + node.childs = params.oldChilds; + node.showChilds(); + }, + 'redo': function (params) { + var node = params.node; + node.hideChilds(); + node.sort = params.newSort; + node.childs = params.newChilds; + node.showChilds(); + } + } + + // TODO: restore the original caret position and selection with each undo + // TODO: implement history for actions "expand", "collapse", "scroll", "setDocument" + }; + } + + /** + * The method onChange is executed when the History is changed, and can + * be overloaded. + */ + History.prototype.onChange = function () {}; + + /** + * Add a new action to the history + * @param {String} action The executed action. Available actions: "editField", + * "editValue", "changeType", "appendNode", + * "removeNode", "duplicateNode", "moveNode" + * @param {Object} params Object containing parameters describing the change. + * The parameters in params depend on the action (for + * example for "editValue" the Node, old value, and new + * value are provided). params contains all information + * needed to undo or redo the action. + */ + History.prototype.add = function (action, params) { + this.index++; + this.history[this.index] = { + 'action': action, + 'params': params, + 'timestamp': new Date() + }; + + // remove redo actions which are invalid now + if (this.index < this.history.length - 1) { + this.history.splice(this.index + 1, this.history.length - this.index - 1); + } + + // fire onchange event + this.onChange(); + }; + + /** + * Clear history + */ + History.prototype.clear = function () { + this.history = []; + this.index = -1; + + // fire onchange event + this.onChange(); + }; + + /** + * Check if there is an action available for undo + * @return {Boolean} canUndo + */ + History.prototype.canUndo = function () { + return (this.index >= 0); + }; + + /** + * Check if there is an action available for redo + * @return {Boolean} canRedo + */ + History.prototype.canRedo = function () { + return (this.index < this.history.length - 1); + }; + + /** + * Undo the last action + */ + History.prototype.undo = function () { + if (this.canUndo()) { + var obj = this.history[this.index]; + if (obj) { + var action = this.actions[obj.action]; + if (action && action.undo) { + action.undo(obj.params); + if (obj.params.oldSelection) { + this.editor.setSelection(obj.params.oldSelection); + } + } + else { + console.error(new Error('unknown action "' + obj.action + '"')); + } + } + this.index--; + + // fire onchange event + this.onChange(); + } + }; + + /** + * Redo the last action + */ + History.prototype.redo = function () { + if (this.canRedo()) { + this.index++; + + var obj = this.history[this.index]; + if (obj) { + var action = this.actions[obj.action]; + if (action && action.redo) { + action.redo(obj.params); + if (obj.params.newSelection) { + this.editor.setSelection(obj.params.newSelection); + } + } + else { + console.error(new Error('unknown action "' + obj.action + '"')); + } + } + + // fire onchange event + this.onChange(); + } + }; + + /** + * Destroy history + */ + History.prototype.destroy = function () { + this.editor = null; + + this.history = []; + this.index = -1; + }; + + module.exports = History; + + +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var jsonlint = __webpack_require__(5); /** * Parse JSON using the parser built-in in the browser. @@ -2915,370 +2794,434 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * The highlighter can highlight/unhighlight a node, and - * animate the visibility of a context menu. - * @constructor Highlighter - */ - function Highlighter () { - this.locked = false; - } - - /** - * Hightlight given node and its childs - * @param {Node} node - */ - Highlighter.prototype.highlight = function (node) { - if (this.locked) { - return; - } - - if (this.node != node) { - // unhighlight current node - if (this.node) { - this.node.setHighlight(false); - } - - // highlight new node - this.node = node; - this.node.setHighlight(true); - } - - // cancel any current timeout - this._cancelUnhighlight(); - }; - - /** - * Unhighlight currently highlighted node. - * Will be done after a delay - */ - Highlighter.prototype.unhighlight = function () { - if (this.locked) { - return; - } - - var me = this; - if (this.node) { - this._cancelUnhighlight(); - - // do the unhighlighting after a small delay, to prevent re-highlighting - // the same node when moving from the drag-icon to the contextmenu-icon - // or vice versa. - this.unhighlightTimer = setTimeout(function () { - me.node.setHighlight(false); - me.node = undefined; - me.unhighlightTimer = undefined; - }, 0); - } - }; - - /** - * Cancel an unhighlight action (if before the timeout of the unhighlight action) - * @private - */ - Highlighter.prototype._cancelUnhighlight = function () { - if (this.unhighlightTimer) { - clearTimeout(this.unhighlightTimer); - this.unhighlightTimer = undefined; - } - }; - - /** - * Lock highlighting or unhighlighting nodes. - * methods highlight and unhighlight do not work while locked. - */ - Highlighter.prototype.lock = function () { - this.locked = true; - }; - - /** - * Unlock highlighting or unhighlighting nodes - */ - Highlighter.prototype.unlock = function () { - this.locked = false; - }; - - module.exports = Highlighter; - - /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(3); + /* Jison generated parser */ + var jsonlint = (function(){ + var parser = {trace: function trace() { }, + yy: {}, + symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, + terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, + productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], + performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - /** - * @constructor History - * Store action history, enables undo and redo - * @param {JSONEditor} editor - */ - function History (editor) { - this.editor = editor; - this.history = []; - this.index = -1; - - this.clear(); - - // map with all supported actions - this.actions = { - 'editField': { - 'undo': function (params) { - params.node.updateField(params.oldValue); - }, - 'redo': function (params) { - params.node.updateField(params.newValue); - } - }, - 'editValue': { - 'undo': function (params) { - params.node.updateValue(params.oldValue); - }, - 'redo': function (params) { - params.node.updateValue(params.newValue); - } - }, - 'changeType': { - 'undo': function (params) { - params.node.changeType(params.oldType); - }, - 'redo': function (params) { - params.node.changeType(params.newType); - } - }, - - 'appendNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.parent.appendChild(node); - }); - } - }, - 'insertBeforeNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.parent.insertBefore(node, params.beforeNode); - }); - } - }, - 'insertAfterNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - var afterNode = params.afterNode; - params.nodes.forEach(function (node) { - params.parent.insertAfter(params.node, afterNode); - afterNode = node; - }); - } - }, - 'removeNodes': { - 'undo': function (params) { - var parent = params.parent; - var beforeNode = parent.childs[params.index] || parent.append; - params.nodes.forEach(function (node) { - parent.insertBefore(node, beforeNode); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - } - }, - 'duplicateNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.parent.removeChild(node); - }); - }, - 'redo': function (params) { - var afterNode = params.afterNode; - params.nodes.forEach(function (node) { - params.parent.insertAfter(node, afterNode); - afterNode = node; - }); - } - }, - 'moveNodes': { - 'undo': function (params) { - params.nodes.forEach(function (node) { - params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode); - }); - }, - 'redo': function (params) { - params.nodes.forEach(function (node) { - params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode); - }); - } - }, - - 'sort': { - 'undo': function (params) { - var node = params.node; - node.hideChilds(); - node.sort = params.oldSort; - node.childs = params.oldChilds; - node.showChilds(); - }, - 'redo': function (params) { - var node = params.node; - node.hideChilds(); - node.sort = params.newSort; - node.childs = params.newChilds; - node.showChilds(); - } - } - - // TODO: restore the original caret position and selection with each undo - // TODO: implement history for actions "expand", "collapse", "scroll", "setDocument" - }; + var $0 = $$.length - 1; + switch (yystate) { + case 1: // replace escaped characters with actual character + this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") + .replace(/\\n/g,'\n') + .replace(/\\r/g,'\r') + .replace(/\\t/g,'\t') + .replace(/\\v/g,'\v') + .replace(/\\f/g,'\f') + .replace(/\\b/g,'\b'); + + break; + case 2:this.$ = Number(yytext); + break; + case 3:this.$ = null; + break; + case 4:this.$ = true; + break; + case 5:this.$ = false; + break; + case 6:return this.$ = $$[$0-1]; + break; + case 13:this.$ = {}; + break; + case 14:this.$ = $$[$0-1]; + break; + case 15:this.$ = [$$[$0-2], $$[$0]]; + break; + case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; + break; + case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; + break; + case 18:this.$ = []; + break; + case 19:this.$ = $$[$0-1]; + break; + case 20:this.$ = [$$[$0]]; + break; + case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); + break; } + }, + table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], + defaultActions: {16:[2,6]}, + parseError: function parseError(str, hash) { + throw new Error(str); + }, + parse: function parse(input) { + var self = this, + stack = [0], + vstack = [null], // semantic value stack + lstack = [], // location stack + table = this.table, + yytext = '', + yylineno = 0, + yyleng = 0, + recovering = 0, + TERROR = 2, + EOF = 1; - /** - * The method onChange is executed when the History is changed, and can - * be overloaded. - */ - History.prototype.onChange = function () {}; + //this.reductionCount = this.shiftCount = 0; - /** - * Add a new action to the history - * @param {String} action The executed action. Available actions: "editField", - * "editValue", "changeType", "appendNode", - * "removeNode", "duplicateNode", "moveNode" - * @param {Object} params Object containing parameters describing the change. - * The parameters in params depend on the action (for - * example for "editValue" the Node, old value, and new - * value are provided). params contains all information - * needed to undo or redo the action. - */ - History.prototype.add = function (action, params) { - this.index++; - this.history[this.index] = { - 'action': action, - 'params': params, - 'timestamp': new Date() - }; + this.lexer.setInput(input); + this.lexer.yy = this.yy; + this.yy.lexer = this.lexer; + if (typeof this.lexer.yylloc == 'undefined') + this.lexer.yylloc = {}; + var yyloc = this.lexer.yylloc; + lstack.push(yyloc); - // remove redo actions which are invalid now - if (this.index < this.history.length - 1) { - this.history.splice(this.index + 1, this.history.length - this.index - 1); - } + if (typeof this.yy.parseError === 'function') + this.parseError = this.yy.parseError; - // fire onchange event - this.onChange(); - }; - - /** - * Clear history - */ - History.prototype.clear = function () { - this.history = []; - this.index = -1; - - // fire onchange event - this.onChange(); - }; - - /** - * Check if there is an action available for undo - * @return {Boolean} canUndo - */ - History.prototype.canUndo = function () { - return (this.index >= 0); - }; - - /** - * Check if there is an action available for redo - * @return {Boolean} canRedo - */ - History.prototype.canRedo = function () { - return (this.index < this.history.length - 1); - }; - - /** - * Undo the last action - */ - History.prototype.undo = function () { - if (this.canUndo()) { - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.undo) { - action.undo(obj.params); - if (obj.params.oldSelection) { - this.editor.setSelection(obj.params.oldSelection); - } - } - else { - console.error(new Error('unknown action "' + obj.action + '"')); - } - } - this.index--; - - // fire onchange event - this.onChange(); - } - }; - - /** - * Redo the last action - */ - History.prototype.redo = function () { - if (this.canRedo()) { - this.index++; - - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.redo) { - action.redo(obj.params); - if (obj.params.newSelection) { - this.editor.setSelection(obj.params.newSelection); - } - } - else { - console.error(new Error('unknown action "' + obj.action + '"')); - } + function popStack (n) { + stack.length = stack.length - 2*n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; } - // fire onchange event - this.onChange(); - } + function lex() { + var token; + token = self.lexer.lex() || 1; // $end = 1 + // if token isn't its numeric value, convert + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + } + + var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; + while (true) { + // retreive state number from top of stack + state = stack[stack.length-1]; + + // use default actions if available + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol == null) + symbol = lex(); + // read action for current state and first input + action = table[state] && table[state][symbol]; + } + + // handle parse error + _handle_error: + if (typeof action === 'undefined' || !action.length || !action[0]) { + + if (!recovering) { + // Report error + expected = []; + for (p in table[state]) if (this.terminals_[p] && p > 2) { + expected.push("'"+this.terminals_[p]+"'"); + } + var errStr = ''; + if (this.lexer.showPosition) { + errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; + } else { + errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + + (symbol == 1 /*EOF*/ ? "end of input" : + ("'"+(this.terminals_[symbol] || symbol)+"'")); + } + this.parseError(errStr, + {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); + } + + // just recovered from another error + if (recovering == 3) { + if (symbol == EOF) { + throw new Error(errStr || 'Parsing halted.'); + } + + // discard current lookahead and grab another + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + symbol = lex(); + } + + // try to recover from error + while (1) { + // check for error recovery rule in this state + if ((TERROR.toString()) in table[state]) { + break; + } + if (state == 0) { + throw new Error(errStr || 'Parsing halted.'); + } + popStack(1); + state = stack[stack.length-1]; + } + + preErrorSymbol = symbol; // save the lookahead token + symbol = TERROR; // insert generic error symbol as new lookahead + state = stack[stack.length-1]; + action = table[state] && table[state][TERROR]; + recovering = 3; // allow 3 real symbols to be shifted before reporting a new error + } + + // this shouldn't happen, unless resolve defaults are off + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); + } + + switch (action[0]) { + + case 1: // shift + //this.shiftCount++; + + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); // push state + symbol = null; + if (!preErrorSymbol) { // normal execution/no error + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + if (recovering > 0) + recovering--; + } else { // error just occurred, resume old lookahead f/ before error + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + + case 2: // reduce + //this.reductionCount++; + + len = this.productions_[action[1]][1]; + + // perform semantic action + yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 + // default location, uses first token for firsts, last for lasts + yyval._$ = { + first_line: lstack[lstack.length-(len||1)].first_line, + last_line: lstack[lstack.length-1].last_line, + first_column: lstack[lstack.length-(len||1)].first_column, + last_column: lstack[lstack.length-1].last_column + }; + r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); + + if (typeof r !== 'undefined') { + return r; + } + + // pop off stack + if (len) { + stack = stack.slice(0,-1*len*2); + vstack = vstack.slice(0, -1*len); + lstack = lstack.slice(0, -1*len); + } + + stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) + vstack.push(yyval.$); + lstack.push(yyval._$); + // goto new state = table[STATE][NONTERMINAL] + newState = table[stack[stack.length-2]][stack[stack.length-1]]; + stack.push(newState); + break; + + case 3: // accept + return true; + } + + } + + return true; + }}; + /* Jison generated lexer */ + var lexer = (function(){ + var lexer = ({EOF:1, + parseError:function parseError(str, hash) { + if (this.yy.parseError) { + this.yy.parseError(str, hash); + } else { + throw new Error(str); + } + }, + setInput:function (input) { + this._input = input; + this._more = this._less = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; + return this; + }, + input:function () { + var ch = this._input[0]; + this.yytext+=ch; + this.yyleng++; + this.match+=ch; + this.matched+=ch; + var lines = ch.match(/\n/); + if (lines) this.yylineno++; + this._input = this._input.slice(1); + return ch; + }, + unput:function (ch) { + this._input = ch + this._input; + return this; + }, + more:function () { + this._more = true; + return this; + }, + less:function (n) { + this._input = this.match.slice(n) + this._input; + }, + pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, + upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); + }, + showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c+"^"; + }, + next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) this.done = true; + + var token, + match, + tempMatch, + index, + col, + lines; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i=0;i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (!this.options.flex) break; + } + } + if (match) { + lines = match[0].match(/\n.*/g); + if (lines) this.yylineno += lines.length; + this.yylloc = {first_line: this.yylloc.last_line, + last_line: this.yylineno+1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} + this.yytext += match[0]; + this.match += match[0]; + this.yyleng = this.yytext.length; + this._more = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); + if (this.done && this._input) this.done = false; + if (token) return token; + else return; + } + if (this._input === "") { + return this.EOF; + } else { + this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), + {text: "", token: null, line: this.yylineno}); + } + }, + lex:function lex() { + var r = this.next(); + if (typeof r !== 'undefined') { + return r; + } else { + return this.lex(); + } + }, + begin:function begin(condition) { + this.conditionStack.push(condition); + }, + popState:function popState() { + return this.conditionStack.pop(); + }, + _currentRules:function _currentRules() { + return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; + }, + topState:function () { + return this.conditionStack[this.conditionStack.length-2]; + }, + pushState:function begin(condition) { + this.begin(condition); + }}); + lexer.options = {}; + lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { + + var YYSTATE=YY_START + switch($avoiding_name_collisions) { + case 0:/* skip whitespace */ + break; + case 1:return 6 + break; + case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 + break; + case 3:return 17 + break; + case 4:return 18 + break; + case 5:return 23 + break; + case 6:return 24 + break; + case 7:return 22 + break; + case 8:return 21 + break; + case 9:return 10 + break; + case 10:return 11 + break; + case 11:return 8 + break; + case 12:return 14 + break; + case 13:return 'INVALID' + break; + } }; + lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; + lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; - /** - * Destroy history - */ - History.prototype.destroy = function () { - this.editor = null; - - this.history = []; - this.index = -1; - }; - - module.exports = History; + ; + return lexer;})() + parser.lexer = lexer; + return parser; + })(); + if (true) { + exports.parser = jsonlint; + exports.parse = jsonlint.parse.bind(jsonlint); + } /***/ }, /* 6 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { + + 'use strict'; /** * @constructor SearchBox @@ -3596,7 +3539,9 @@ return /******/ (function(modules) { // webpackBootstrap /* 7 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(3); + 'use strict'; + + var util = __webpack_require__(4); /** * A context menu @@ -4057,10 +4002,12 @@ return /******/ (function(modules) { // webpackBootstrap /* 8 */ /***/ function(module, exports, __webpack_require__) { - var naturalSort = __webpack_require__(14); + 'use strict'; + + var naturalSort = __webpack_require__(9); var ContextMenu = __webpack_require__(7); - var appendNodeFactory = __webpack_require__(12); - var util = __webpack_require__(3); + var appendNodeFactory = __webpack_require__(10); + var util = __webpack_require__(4); /** * @constructor Node @@ -7451,565 +7398,62 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 9 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { - var ContextMenu = __webpack_require__(7); - - /** - * Create a select box to be used in the editor menu's, which allows to switch mode - * @param {HTMLElement} container - * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view' - * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view' - * @param {function(mode: string)} onSwitch Callback invoked on switch - * @constructor + /* + * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license + * Author: Jim Palmer (based on chunking idea from Dave Koelle) */ - function ModeSwitcher(container, modes, current, onSwitch) { - // available modes - var availableModes = { - code: { - 'text': 'Code', - 'title': 'Switch to code highlighter', - 'click': function () { - onSwitch('code') - } - }, - form: { - 'text': 'Form', - 'title': 'Switch to form editor', - 'click': function () { - onSwitch('form'); - } - }, - text: { - 'text': 'Text', - 'title': 'Switch to plain text editor', - 'click': function () { - onSwitch('text'); - } - }, - tree: { - 'text': 'Tree', - 'title': 'Switch to tree editor', - 'click': function () { - onSwitch('tree'); - } - }, - view: { - 'text': 'View', - 'title': 'Switch to tree view', - 'click': function () { - onSwitch('view'); - } - } - }; - - // list the selected modes - var items = []; - for (var i = 0; i < modes.length; i++) { - var mode = modes[i]; - var item = availableModes[mode]; - if (!item) { - throw new Error('Unknown mode "' + mode + '"'); - } - - item.className = 'jsoneditor-type-modes' + ((current == mode) ? ' jsoneditor-selected' : ''); - items.push(item); - } - - // retrieve the title of current mode - var currentMode = availableModes[current]; - if (!currentMode) { - throw new Error('Unknown mode "' + current + '"'); - } - var currentTitle = currentMode.text; - - // create the html element - var box = document.createElement('button'); - box.className = 'jsoneditor-modes jsoneditor-separator'; - box.innerHTML = currentTitle + ' ▾'; - box.title = 'Switch editor mode'; - box.onclick = function () { - var menu = new ContextMenu(items); - menu.show(box); - }; - - var frame = document.createElement('div'); - frame.className = 'jsoneditor-modes'; - frame.style.position = 'relative'; - frame.appendChild(box); - - container.appendChild(frame); - - this.dom = { - container: container, - box: box, - frame: frame - }; - } - - /** - * Set focus to switcher - */ - ModeSwitcher.prototype.focus = function () { - this.dom.box.focus(); + /*jshint unused:false */ + module.exports = function naturalSort (a, b) { + "use strict"; + var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, + sre = /(^[ ]*|[ ]*$)/g, + dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, + hre = /^0x[0-9a-f]+$/i, + ore = /^0/, + i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; }, + // convert all to strings strip whitespace + x = i(a).replace(sre, '') || '', + y = i(b).replace(sre, '') || '', + // chunk/tokenize + xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + // numeric, hex or date detection + xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), + yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, + oFxNcL, oFyNcL; + // first try and sort Hex codes or Dates + if (yD) { + if ( xD < yD ) { return -1; } + else if ( xD > yD ) { return 1; } + } + // natural sorting through split numeric strings and default strings + for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { + // find floats not starting with '0', string or 0 if not defined (Clint Priest) + oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; + oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; + // handle numeric vs string comparison - number < string - (Kyle Adams) + if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } + // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' + else if (typeof oFxNcL !== typeof oFyNcL) { + oFxNcL += ''; + oFyNcL += ''; + } + if (oFxNcL < oFyNcL) { return -1; } + if (oFxNcL > oFyNcL) { return 1; } + } + return 0; }; - /** - * Destroy the ModeSwitcher, remove from DOM - */ - ModeSwitcher.prototype.destroy = function () { - if (this.dom && this.dom.frame && this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - this.dom = null; - }; - - module.exports = ModeSwitcher; - /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { - // load brace - var ace = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"brace\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); + 'use strict'; - // load required ace modules - __webpack_require__(15); - __webpack_require__(16); - __webpack_require__(13); - - module.exports = ace; - - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - /* Jison generated parser */ - var jsonlint = (function(){ - var parser = {trace: function trace() { }, - yy: {}, - symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, - terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, - productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], - performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - - var $0 = $$.length - 1; - switch (yystate) { - case 1: // replace escaped characters with actual character - this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") - .replace(/\\n/g,'\n') - .replace(/\\r/g,'\r') - .replace(/\\t/g,'\t') - .replace(/\\v/g,'\v') - .replace(/\\f/g,'\f') - .replace(/\\b/g,'\b'); - - break; - case 2:this.$ = Number(yytext); - break; - case 3:this.$ = null; - break; - case 4:this.$ = true; - break; - case 5:this.$ = false; - break; - case 6:return this.$ = $$[$0-1]; - break; - case 13:this.$ = {}; - break; - case 14:this.$ = $$[$0-1]; - break; - case 15:this.$ = [$$[$0-2], $$[$0]]; - break; - case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; - break; - case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; - break; - case 18:this.$ = []; - break; - case 19:this.$ = $$[$0-1]; - break; - case 20:this.$ = [$$[$0]]; - break; - case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); - break; - } - }, - table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], - defaultActions: {16:[2,6]}, - parseError: function parseError(str, hash) { - throw new Error(str); - }, - parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; - }}; - /* Jison generated lexer */ - var lexer = (function(){ - var lexer = ({EOF:1, - parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); - } else { - throw new Error(str); - } - }, - setInput:function (input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; - return this; - }, - input:function () { - var ch = this._input[0]; - this.yytext+=ch; - this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; - this._input = this._input.slice(1); - return ch; - }, - unput:function (ch) { - this._input = ch + this._input; - return this; - }, - more:function () { - this._more = true; - return this; - }, - less:function (n) { - this._input = this.match.slice(n) + this._input; - }, - pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, - upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); - }, - showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c+"^"; - }, - next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, - match, - tempMatch, - index, - col, - lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i=0;i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/\n.*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = {first_line: this.yylloc.last_line, - last_line: this.yylineno+1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} - this.yytext += match[0]; - this.match += match[0]; - this.yyleng = this.yytext.length; - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), - {text: "", token: null, line: this.yylineno}); - } - }, - lex:function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, - begin:function begin(condition) { - this.conditionStack.push(condition); - }, - popState:function popState() { - return this.conditionStack.pop(); - }, - _currentRules:function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; - }, - topState:function () { - return this.conditionStack[this.conditionStack.length-2]; - }, - pushState:function begin(condition) { - this.begin(condition); - }}); - lexer.options = {}; - lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - - var YYSTATE=YY_START - switch($avoiding_name_collisions) { - case 0:/* skip whitespace */ - break; - case 1:return 6 - break; - case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 - break; - case 3:return 17 - break; - case 4:return 18 - break; - case 5:return 23 - break; - case 6:return 24 - break; - case 7:return 22 - break; - case 8:return 21 - break; - case 9:return 10 - break; - case 10:return 11 - break; - case 11:return 8 - break; - case 12:return 14 - break; - case 13:return 'INVALID' - break; - } - }; - lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; - lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; - - - ; - return lexer;})() - parser.lexer = lexer; - return parser; - })(); - if (true) { - exports.parser = jsonlint; - exports.parse = jsonlint.parse.bind(jsonlint); - } - -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(3); + var util = __webpack_require__(4); var ContextMenu = __webpack_require__(7); /** @@ -8237,209 +7681,640 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = appendNodeFactory; +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var ContextMenu = __webpack_require__(7); + + /** + * Create a select box to be used in the editor menu's, which allows to switch mode + * @param {HTMLElement} container + * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view' + * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view' + * @param {function(mode: string)} onSwitch Callback invoked on switch + * @constructor + */ + function ModeSwitcher(container, modes, current, onSwitch) { + // available modes + var availableModes = { + code: { + 'text': 'Code', + 'title': 'Switch to code highlighter', + 'click': function () { + onSwitch('code') + } + }, + form: { + 'text': 'Form', + 'title': 'Switch to form editor', + 'click': function () { + onSwitch('form'); + } + }, + text: { + 'text': 'Text', + 'title': 'Switch to plain text editor', + 'click': function () { + onSwitch('text'); + } + }, + tree: { + 'text': 'Tree', + 'title': 'Switch to tree editor', + 'click': function () { + onSwitch('tree'); + } + }, + view: { + 'text': 'View', + 'title': 'Switch to tree view', + 'click': function () { + onSwitch('view'); + } + } + }; + + // list the selected modes + var items = []; + for (var i = 0; i < modes.length; i++) { + var mode = modes[i]; + var item = availableModes[mode]; + if (!item) { + throw new Error('Unknown mode "' + mode + '"'); + } + + item.className = 'jsoneditor-type-modes' + ((current == mode) ? ' jsoneditor-selected' : ''); + items.push(item); + } + + // retrieve the title of current mode + var currentMode = availableModes[current]; + if (!currentMode) { + throw new Error('Unknown mode "' + current + '"'); + } + var currentTitle = currentMode.text; + + // create the html element + var box = document.createElement('button'); + box.className = 'jsoneditor-modes jsoneditor-separator'; + box.innerHTML = currentTitle + ' ▾'; + box.title = 'Switch editor mode'; + box.onclick = function () { + var menu = new ContextMenu(items); + menu.show(box); + }; + + var frame = document.createElement('div'); + frame.className = 'jsoneditor-modes'; + frame.style.position = 'relative'; + frame.appendChild(box); + + container.appendChild(frame); + + this.dom = { + container: container, + box: box, + frame: frame + }; + } + + /** + * Set focus to switcher + */ + ModeSwitcher.prototype.focus = function () { + this.dom.box.focus(); + }; + + /** + * Destroy the ModeSwitcher, remove from DOM + */ + ModeSwitcher.prototype.destroy = function () { + if (this.dom && this.dom.frame && this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } + this.dom = null; + }; + + module.exports = ModeSwitcher; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var ace; + try { + ace = __webpack_require__(13); + } + catch (err) { + // failed to load ace, no problem, we will fall back to plain text + } + + var ModeSwitcher = __webpack_require__(11); + var util = __webpack_require__(4); + + // create a mixin with the functions for text mode + var textmode = {}; + + var MAX_ERRORS = 3; // maximum number of displayed errors at the bottom + + /** + * Create a text editor + * @param {Element} container + * @param {Object} [options] Object with options. available options: + * {String} mode Available values: + * "text" (default) + * or "code". + * {Number} indentation Number of indentation + * spaces. 2 by default. + * {function} onChange Callback method + * triggered on change + * {function} onModeChange Callback method + * triggered after setMode + * {Object} ace A custom instance of + * Ace editor. + * {boolean} escapeUnicode If true, unicode + * characters are escaped. + * false by default. + * @private + */ + textmode.create = function (container, options) { + // read options + options = options || {}; + this.options = options; + + // indentation + if (options.indentation) { + this.indentation = Number(options.indentation); + } + else { + this.indentation = 2; // number of spaces + } + + // grab ace from options if provided + var _ace = options.ace ? options.ace : ace; + + // determine mode + this.mode = (options.mode == 'code') ? 'code' : 'text'; + if (this.mode == 'code') { + // verify whether Ace editor is available and supported + if (typeof _ace === 'undefined') { + this.mode = 'text'; + console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.'); + } + } + + // determine theme + this.theme = options.theme || 'ace/theme/jsoneditor'; + + var me = this; + this.container = container; + this.dom = {}; + this.aceEditor = undefined; // ace code editor + this.textarea = undefined; // plain text editor (fallback when Ace is not available) + this.validateSchema = null; + + // create a debounced validate function + this._debouncedValidate = util.debounce(this.validate.bind(this), this.DEBOUNCE_INTERVAL); + + this.width = container.clientWidth; + this.height = container.clientHeight; + + this.frame = document.createElement('div'); + this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; + this.frame.onclick = function (event) { + // prevent default submit action when the editor is located inside a form + event.preventDefault(); + }; + this.frame.onkeydown = function (event) { + me._onKeyDown(event); + }; + + // create menu + this.menu = document.createElement('div'); + this.menu.className = 'jsoneditor-menu'; + this.frame.appendChild(this.menu); + + // create format button + var buttonFormat = document.createElement('button'); + buttonFormat.className = 'jsoneditor-format'; + buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)'; + this.menu.appendChild(buttonFormat); + buttonFormat.onclick = function () { + try { + me.format(); + me._onChange(); + } + catch (err) { + me._onError(err); + } + }; + + // create compact button + var buttonCompact = document.createElement('button'); + buttonCompact.className = 'jsoneditor-compact'; + buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)'; + this.menu.appendChild(buttonCompact); + buttonCompact.onclick = function () { + try { + me.compact(); + me._onChange(); + } + catch (err) { + me._onError(err); + } + }; + + // create mode box + if (this.options && this.options.modes && this.options.modes.length) { + this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) { + me.modeSwitcher.destroy(); + + // switch mode and restore focus + me.setMode(mode); + me.modeSwitcher.focus(); + }); + } + + this.content = document.createElement('div'); + this.content.className = 'jsoneditor-outer'; + this.frame.appendChild(this.content); + + this.container.appendChild(this.frame); + + if (this.mode == 'code') { + this.editorDom = document.createElement('div'); + this.editorDom.style.height = '100%'; // TODO: move to css + this.editorDom.style.width = '100%'; // TODO: move to css + this.content.appendChild(this.editorDom); + + var aceEditor = _ace.edit(this.editorDom); + aceEditor.$blockScrolling = Infinity; + aceEditor.setTheme(this.theme); + aceEditor.setShowPrintMargin(false); + aceEditor.setFontSize(13); + aceEditor.getSession().setMode('ace/mode/json'); + aceEditor.getSession().setTabSize(this.indentation); + aceEditor.getSession().setUseSoftTabs(true); + aceEditor.getSession().setUseWrapMode(true); + aceEditor.commands.bindKey('Ctrl-L', null); // disable Ctrl+L (is used by the browser to select the address bar) + aceEditor.commands.bindKey('Command-L', null); // disable Ctrl+L (is used by the browser to select the address bar) + this.aceEditor = aceEditor; + + // TODO: deprecated since v5.0.0. Cleanup backward compatibility some day + if (!this.hasOwnProperty('editor')) { + Object.defineProperty(this, 'editor', { + get: function () { + console.warn('Property "editor" has been renamed to "aceEditor".'); + return me.aceEditor; + }, + set: function (aceEditor) { + console.warn('Property "editor" has been renamed to "aceEditor".'); + me.aceEditor = aceEditor; + } + }); + } + + var poweredBy = document.createElement('a'); + poweredBy.appendChild(document.createTextNode('powered by ace')); + poweredBy.href = 'http://ace.ajax.org'; + poweredBy.target = '_blank'; + poweredBy.className = 'jsoneditor-poweredBy'; + poweredBy.onclick = function () { + // TODO: this anchor falls below the margin of the content, + // therefore the normal a.href does not work. We use a click event + // for now, but this should be fixed. + window.open(poweredBy.href, poweredBy.target); + }; + this.menu.appendChild(poweredBy); + + // register onchange event + aceEditor.on('change', this._onChange.bind(this)); + } + else { + // load a plain text textarea + var textarea = document.createElement('textarea'); + textarea.className = 'jsoneditor-text'; + textarea.spellcheck = false; + this.content.appendChild(textarea); + this.textarea = textarea; + + // register onchange event + if (this.textarea.oninput === null) { + this.textarea.oninput = this._onChange.bind(this); + } + else { + // oninput is undefined. For IE8- + this.textarea.onchange = this._onChange.bind(this); + } + } + + this.setSchema(this.options.schema); + }; + + /** + * Handle a change: + * - Validate JSON schema + * - Send a callback to the onChange listener if provided + * @private + */ + textmode._onChange = function () { + // validate JSON schema (if configured) + this._debouncedValidate(); + + // trigger the onChange callback + if (this.options.onChange) { + try { + this.options.onChange(); + } + catch (err) { + console.error('Error in onChange callback: ', err); + } + } + }; + + /** + * Event handler for keydown. Handles shortcut keys + * @param {Event} event + * @private + */ + textmode._onKeyDown = function (event) { + var keynum = event.which || event.keyCode; + var handled = false; + + if (keynum == 220 && event.ctrlKey) { + if (event.shiftKey) { // Ctrl+Shift+\ + this.compact(); + this._onChange(); + } + else { // Ctrl+\ + this.format(); + this._onChange(); + } + handled = true; + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } + }; + + /** + * Destroy the editor. Clean up DOM, event listeners, and web workers. + */ + textmode.destroy = function () { + // remove old ace editor + if (this.aceEditor) { + this.aceEditor.destroy(); + this.aceEditor = null; + } + + if (this.frame && this.container && this.frame.parentNode == this.container) { + this.container.removeChild(this.frame); + } + + if (this.modeSwitcher) { + this.modeSwitcher.destroy(); + this.modeSwitcher = null; + } + + this.textarea = null; + + this._debouncedValidate = null; + }; + + /** + * Compact the code in the formatter + */ + textmode.compact = function () { + var json = this.get(); + var text = JSON.stringify(json); + this.setText(text); + }; + + /** + * Format the code in the formatter + */ + textmode.format = function () { + var json = this.get(); + var text = JSON.stringify(json, null, this.indentation); + this.setText(text); + }; + + /** + * Set focus to the formatter + */ + textmode.focus = function () { + if (this.textarea) { + this.textarea.focus(); + } + if (this.aceEditor) { + this.aceEditor.focus(); + } + }; + + /** + * Resize the formatter + */ + textmode.resize = function () { + if (this.aceEditor) { + var force = false; + this.aceEditor.resize(force); + } + }; + + /** + * Set json data in the formatter + * @param {Object} json + */ + textmode.set = function(json) { + this.setText(JSON.stringify(json, null, this.indentation)); + }; + + /** + * Get json data from the formatter + * @return {Object} json + */ + textmode.get = function() { + var text = this.getText(); + var json; + + try { + json = util.parse(text); // this can throw an error + } + catch (err) { + // try to sanitize json, replace JavaScript notation with JSON notation + text = util.sanitize(text); + + // try to parse again + json = util.parse(text); // this can throw an error + } + + return json; + }; + + /** + * Get the text contents of the editor + * @return {String} jsonText + */ + textmode.getText = function() { + if (this.textarea) { + return this.textarea.value; + } + if (this.aceEditor) { + return this.aceEditor.getValue(); + } + return ''; + }; + + /** + * Set the text contents of the editor + * @param {String} jsonText + */ + textmode.setText = function(jsonText) { + var text; + + if (this.options.escapeUnicode === true) { + text = util.escapeUnicodeChars(jsonText); + } + else { + text = jsonText; + } + + if (this.textarea) { + this.textarea.value = text; + } + if (this.aceEditor) { + // prevent emitting onChange events while setting new text + var originalOnChange = this.options.onChange; + this.options.onChange = null; + + this.aceEditor.setValue(text, -1); + + this.options.onChange = originalOnChange; + } + + // validate JSON schema + this.validate(); + }; + + /** + * Validate current JSON object against the configured JSON schema + * Throws an exception when no JSON schema is configured + */ + textmode.validate = function () { + // clear all current errors + if (this.dom.validationErrors) { + this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors); + this.dom.validationErrors = null; + + this.content.style.marginBottom = ''; + this.content.style.paddingBottom = ''; + } + + var doValidate = false; + var errors = []; + var json; + try { + json = this.get(); // this can fail when there is no valid json + doValidate = true; + } + catch (err) { + // no valid JSON, don't validate + } + + // only validate the JSON when parsing the JSON succeeded + if (doValidate && this.validateSchema) { + var valid = this.validateSchema(json); + if (!valid) { + errors = this.validateSchema.errors.map(function (error) { + return util.improveSchemaError(error); + }); + } + } + + if (errors.length > 0) { + // limit the number of displayed errors + var limit = errors.length > MAX_ERRORS; + if (limit) { + errors = errors.slice(0, MAX_ERRORS); + var hidden = this.validateSchema.errors.length - MAX_ERRORS; + errors.push('(' + hidden + ' more errors...)') + } + + var validationErrors = document.createElement('div'); + validationErrors.innerHTML = '' + + '' + + errors.map(function (error) { + var message; + if (typeof error === 'string') { + message = ''; + } + else { + message = '' + + ''; + } + + return '' + message + '' + }).join('') + + '' + + '
' + error + '
' + error.dataPath + '' + error.message + '
'; + + this.dom.validationErrors = validationErrors; + this.frame.appendChild(validationErrors); + + var height = validationErrors.clientHeight; + this.content.style.marginBottom = (-height) + 'px'; + this.content.style.paddingBottom = height + 'px'; + } + + // update the height of the ace editor + if (this.aceEditor) { + var force = false; + this.aceEditor.resize(force); + } + }; + + // define modes + module.exports = [ + { + mode: 'text', + mixin: textmode, + data: 'text', + load: textmode.format + }, + { + mode: 'code', + mixin: textmode, + data: 'text', + load: textmode.format + } + ]; + + /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { - /* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ + // load brace + var ace = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"brace\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); - ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { + // load required ace modules + __webpack_require__(14); + __webpack_require__(16); + __webpack_require__(17); - exports.isDark = false; - exports.cssClass = "ace-jsoneditor"; - exports.cssText = ".ace-jsoneditor .ace_gutter {\ - background: #ebebeb;\ - color: #333\ - }\ - \ - .ace-jsoneditor.ace_editor {\ - font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ - line-height: 1.3;\ - }\ - .ace-jsoneditor .ace_print-margin {\ - width: 1px;\ - background: #e8e8e8\ - }\ - .ace-jsoneditor .ace_scroller {\ - background-color: #FFFFFF\ - }\ - .ace-jsoneditor .ace_text-layer {\ - color: gray\ - }\ - .ace-jsoneditor .ace_variable {\ - color: #1a1a1a\ - }\ - .ace-jsoneditor .ace_cursor {\ - border-left: 2px solid #000000\ - }\ - .ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\ - border-left: 0px;\ - border-bottom: 1px solid #000000\ - }\ - .ace-jsoneditor .ace_marker-layer .ace_selection {\ - background: lightgray\ - }\ - .ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\ - box-shadow: 0 0 3px 0px #FFFFFF;\ - border-radius: 2px\ - }\ - .ace-jsoneditor .ace_marker-layer .ace_step {\ - background: rgb(255, 255, 0)\ - }\ - .ace-jsoneditor .ace_marker-layer .ace_bracket {\ - margin: -1px 0 0 -1px;\ - border: 1px solid #BFBFBF\ - }\ - .ace-jsoneditor .ace_marker-layer .ace_active-line {\ - background: #FFFBD1\ - }\ - .ace-jsoneditor .ace_gutter-active-line {\ - background-color : #dcdcdc\ - }\ - .ace-jsoneditor .ace_marker-layer .ace_selected-word {\ - border: 1px solid lightgray\ - }\ - .ace-jsoneditor .ace_invisible {\ - color: #BFBFBF\ - }\ - .ace-jsoneditor .ace_keyword,\ - .ace-jsoneditor .ace_meta,\ - .ace-jsoneditor .ace_support.ace_constant.ace_property-value {\ - color: #AF956F\ - }\ - .ace-jsoneditor .ace_keyword.ace_operator {\ - color: #484848\ - }\ - .ace-jsoneditor .ace_keyword.ace_other.ace_unit {\ - color: #96DC5F\ - }\ - .ace-jsoneditor .ace_constant.ace_language {\ - color: darkorange\ - }\ - .ace-jsoneditor .ace_constant.ace_numeric {\ - color: red\ - }\ - .ace-jsoneditor .ace_constant.ace_character.ace_entity {\ - color: #BF78CC\ - }\ - .ace-jsoneditor .ace_invalid {\ - color: #FFFFFF;\ - background-color: #FF002A;\ - }\ - .ace-jsoneditor .ace_fold {\ - background-color: #AF956F;\ - border-color: #000000\ - }\ - .ace-jsoneditor .ace_storage,\ - .ace-jsoneditor .ace_support.ace_class,\ - .ace-jsoneditor .ace_support.ace_function,\ - .ace-jsoneditor .ace_support.ace_other,\ - .ace-jsoneditor .ace_support.ace_type {\ - color: #C52727\ - }\ - .ace-jsoneditor .ace_string {\ - color: green\ - }\ - .ace-jsoneditor .ace_comment {\ - color: #BCC8BA\ - }\ - .ace-jsoneditor .ace_entity.ace_name.ace_tag,\ - .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\ - color: #606060\ - }\ - .ace-jsoneditor .ace_markup.ace_underline {\ - text-decoration: underline\ - }\ - .ace-jsoneditor .ace_indent-guide {\ - background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ - }"; - - var dom = acequire("../lib/dom"); - dom.importCssString(exports.cssText, exports.cssClass); - }); + module.exports = ace; /***/ }, /* 14 */ -/***/ function(module, exports, __webpack_require__) { - - /* - * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license - * Author: Jim Palmer (based on chunking idea from Dave Koelle) - */ - /*jshint unused:false */ - module.exports = function naturalSort (a, b) { - "use strict"; - var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, - sre = /(^[ ]*|[ ]*$)/g, - dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, - hre = /^0x[0-9a-f]+$/i, - ore = /^0/, - i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; }, - // convert all to strings strip whitespace - x = i(a).replace(sre, '') || '', - y = i(b).replace(sre, '') || '', - // chunk/tokenize - xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - // numeric, hex or date detection - xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), - yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, - oFxNcL, oFyNcL; - // first try and sort Hex codes or Dates - if (yD) { - if ( xD < yD ) { return -1; } - else if ( xD > yD ) { return 1; } - } - // natural sorting through split numeric strings and default strings - for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { - // find floats not starting with '0', string or 0 if not defined (Clint Priest) - oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; - oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; - // handle numeric vs string comparison - number < string - (Kyle Adams) - if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } - // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' - else if (typeof oFxNcL !== typeof oFyNcL) { - oFxNcL += ''; - oFyNcL += ''; - } - if (oFxNcL < oFyNcL) { return -1; } - if (oFxNcL > oFyNcL) { return 1; } - } - return 0; - }; - - -/***/ }, -/* 15 */ /***/ function(module, exports, __webpack_require__) { ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { @@ -9090,7 +8965,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], __webpack_require__(17), "JsonWorker"); + var worker = new WorkerClient(["ace"], __webpack_require__(15), "JsonWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { @@ -9112,9 +8987,16 @@ return /******/ (function(modules) { // webpackBootstrap }); +/***/ }, +/* 15 */ +/***/ function(module, exports) { + + module.exports.id = 'ace/mode/json_worker'; + module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; + /***/ }, /* 16 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(acequire, exports, module) { "use strict"; @@ -9535,10 +9417,153 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 17 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { + + /* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { + + exports.isDark = false; + exports.cssClass = "ace-jsoneditor"; + exports.cssText = ".ace-jsoneditor .ace_gutter {\ + background: #ebebeb;\ + color: #333\ + }\ + \ + .ace-jsoneditor.ace_editor {\ + font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ + line-height: 1.3;\ + }\ + .ace-jsoneditor .ace_print-margin {\ + width: 1px;\ + background: #e8e8e8\ + }\ + .ace-jsoneditor .ace_scroller {\ + background-color: #FFFFFF\ + }\ + .ace-jsoneditor .ace_text-layer {\ + color: gray\ + }\ + .ace-jsoneditor .ace_variable {\ + color: #1a1a1a\ + }\ + .ace-jsoneditor .ace_cursor {\ + border-left: 2px solid #000000\ + }\ + .ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\ + border-left: 0px;\ + border-bottom: 1px solid #000000\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_selection {\ + background: lightgray\ + }\ + .ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\ + box-shadow: 0 0 3px 0px #FFFFFF;\ + border-radius: 2px\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_step {\ + background: rgb(255, 255, 0)\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_bracket {\ + margin: -1px 0 0 -1px;\ + border: 1px solid #BFBFBF\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_active-line {\ + background: #FFFBD1\ + }\ + .ace-jsoneditor .ace_gutter-active-line {\ + background-color : #dcdcdc\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_selected-word {\ + border: 1px solid lightgray\ + }\ + .ace-jsoneditor .ace_invisible {\ + color: #BFBFBF\ + }\ + .ace-jsoneditor .ace_keyword,\ + .ace-jsoneditor .ace_meta,\ + .ace-jsoneditor .ace_support.ace_constant.ace_property-value {\ + color: #AF956F\ + }\ + .ace-jsoneditor .ace_keyword.ace_operator {\ + color: #484848\ + }\ + .ace-jsoneditor .ace_keyword.ace_other.ace_unit {\ + color: #96DC5F\ + }\ + .ace-jsoneditor .ace_constant.ace_language {\ + color: darkorange\ + }\ + .ace-jsoneditor .ace_constant.ace_numeric {\ + color: red\ + }\ + .ace-jsoneditor .ace_constant.ace_character.ace_entity {\ + color: #BF78CC\ + }\ + .ace-jsoneditor .ace_invalid {\ + color: #FFFFFF;\ + background-color: #FF002A;\ + }\ + .ace-jsoneditor .ace_fold {\ + background-color: #AF956F;\ + border-color: #000000\ + }\ + .ace-jsoneditor .ace_storage,\ + .ace-jsoneditor .ace_support.ace_class,\ + .ace-jsoneditor .ace_support.ace_function,\ + .ace-jsoneditor .ace_support.ace_other,\ + .ace-jsoneditor .ace_support.ace_type {\ + color: #C52727\ + }\ + .ace-jsoneditor .ace_string {\ + color: green\ + }\ + .ace-jsoneditor .ace_comment {\ + color: #BCC8BA\ + }\ + .ace-jsoneditor .ace_entity.ace_name.ace_tag,\ + .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\ + color: #606060\ + }\ + .ace-jsoneditor .ace_markup.ace_underline {\ + text-decoration: underline\ + }\ + .ace-jsoneditor .ace_indent-guide {\ + background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ + }"; + + var dom = acequire("../lib/dom"); + dom.importCssString(exports.cssText, exports.cssClass); + }); - module.exports.id = 'ace/mode/json_worker'; - module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ } /******/ ]) diff --git a/dist/jsoneditor-minimalist.map b/dist/jsoneditor-minimalist.map index 6be41d1..04544a9 100644 --- a/dist/jsoneditor-minimalist.map +++ b/dist/jsoneditor-minimalist.map @@ -1 +1 @@ -{"version":3,"file":"jsoneditor-minimalist.map","sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","node","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","search","hasOwnProperty","debounce","bind","Function","content","table","params","field","value","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","MAX_ERRORS","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","originalOnChange","setValue","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","innerHTML","join","jsonlint","jsonString","jsString","curr","charAt","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","quote","parseKey","specialValues","key","regexp","test","match","replace","charCodeAt","toString","a","b","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childNodes","iMax","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","path","getPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","n","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapedText","_escapeJSON","trim","escaped","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","hash","popStack","stack","vstack","lstack","lex","token","self","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","trAppend","tdAppend","domText","paddingLeft","acequire","isDark","cssClass","cssText","importCssString","oFxNcL","oFyNcL","sre","dre","hre","ore","s","insensitive","x","y","xN","yN","xD","parseInt","yD","cLoc","numS","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","Behaviour","TokenIterator","lang","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","session","getCursorPosition","getSelectionRange","getTextRange","getWrapBehavioursEnabled","isSaneInsertion","inMultiSelectMode","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","stringRepeat","clearMaybeInsertedClosing","next_indent","getTabString","isMultiLine","leftChar","getTokenAt","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","tokenRe","isWordBefore","isWordAfter","iterator","$matchTokenType","getCurrentToken","iterator2","stepForward","getCurrentTokenRow","types","bracket","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","searchboxCss","HashHandler","keyUtil","showReplaceForm","div","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","src"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","node","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","search","hasOwnProperty","debounce","bind","Function","content","table","params","field","value","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","index","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","splice","obj","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","charAt","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","quote","parseKey","specialValues","key","regexp","test","match","join","escapeUnicodeChars","replace","charCodeAt","toString","a","b","object","Number","String","Boolean","RegExp","isUrlRegex","isUrl","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","str","hash","popStack","n","stack","vstack","lstack","lex","token","self","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","path","getPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","_escapeHTML","_updateDomIndexes","_createDomValue","href","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","trim","escaped","oFxNcL","oFyNcL","sre","dre","hre","ore","s","insensitive","x","y","xN","yN","xD","parseInt","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","MAX_ERRORS","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","force","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","acequire","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","Behaviour","TokenIterator","lang","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","session","getCursorPosition","getSelectionRange","getTextRange","getWrapBehavioursEnabled","isSaneInsertion","inMultiSelectMode","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","stringRepeat","clearMaybeInsertedClosing","next_indent","getTabString","isMultiLine","leftChar","getTokenAt","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","tokenRe","isWordBefore","isWordAfter","iterator","$matchTokenType","getCurrentToken","iterator2","stepForward","getCurrentTokenRow","types","bracket","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","src","searchboxCss","HashHandler","keyUtil","importCssString","showReplaceForm","div","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","isDark","cssClass","cssText"],"mappings":"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","file":"jsoneditor-minimalist.map"} \ No newline at end of file diff --git a/dist/jsoneditor-minimalist.min.js b/dist/jsoneditor-minimalist.min.js index fbb5275..d9d72c2 100644 --- a/dist/jsoneditor-minimalist.min.js +++ b/dist/jsoneditor-minimalist.min.js @@ -24,12 +24,12 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.3.0 - * @date 2016-04-06 + * @version 5.4.0 + * @date 2016-04-09 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e,t,n){if(!(this instanceof i))throw new Error('JSONEditor constructor called without "new".');var o=l.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,n)}var o;try{o=n(!function(){var e=new Error('Cannot find module "ajv"');throw e.code="MODULE_NOT_FOUND",e}())}catch(r){}var s=n(1),a=n(2),l=n(3);i.modes={},i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._create=function(e,t,n){this.container=e,this.options=t||{},this.json=n||{};var i=this.options.mode||"tree";this.setMode(i)},i.prototype.destroy=function(){},i.prototype.set=function(e){this.json=e},i.prototype.get=function(){return this.json},i.prototype.setText=function(e){this.json=l.parse(e)},i.prototype.getText=function(){return JSON.stringify(this.json)},i.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},i.prototype.getName=function(){return this.options&&this.options.name},i.prototype.setMode=function(e){var t,n,o=this.container,r=l.extend({},this.options),s=r.mode;r.mode=e;var a=i.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==a.data;if(n=this.getName(),t=this[c?"getText":"get"](),this.destroy(),l.clear(this),l.extend(this,a.mixin),this.create(o,r),this.setName(n),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(d){console.error(d)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(d){console.error(d)}}catch(d){this._onError(d)}},i.prototype.getMode=function(){return this.options.mode},i.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},i.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(n){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},i.prototype.validate=function(){},i.registerMode=function(e){var t,n;if(l.isArray(e))for(t=0;te&&n.scrollTop>0?this.autoScrollStep=(i+s-e)/3:e>r-s&&o+n.scrollTop3?(n.scrollTop+=o/3,i.animateCallback=t,i.animateTimeout=setTimeout(a,50)):(t&&t(!0),n.scrollTop=s,delete i.animateTimeout,delete i.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var n=t.target;e(t),"BUTTON"==n.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var n=document.createElement("button");n.className="jsoneditor-expand-all",n.title="Expand all fields",n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var i=document.createElement("button");if(i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var o=document.createElement("button");o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,n=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+n*n),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var n=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){n._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){n._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var n=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;n&&i&&(this.multiselection.nodes=this._findTopLevelNodes(n,i),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var n=e.getNodePath(),i=t.getNodePath(),o=0;o0){var r=n.length>l;if(r){n=n.slice(0,l);var a=this.validateSchema.errors.length-l;n.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+n.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var d=c.clientHeight;this.content.style.marginBottom=-d+"px",this.content.style.paddingBottom=d+"px"}if(this.aceEditor){var h=!1;this.aceEditor.resize(h)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,n){var i=n(11);t.parse=function(e){try{return JSON.parse(e)}catch(n){throw t.validate(e),n}},t.sanitize=function(e){function t(){return e.charAt(d)}function n(){return e.charAt(d+1)}function i(){return e.charAt(d-1)}function o(){for(var e=c.length-1;e>=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function r(){for(d+=2;di;i++){var r=n[i];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,n;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,n;window.getSelection&&document.createRange&&(n=document.createRange(),n.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(n))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var n=window.getSelection();if(n){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,n){var i=void 0==n;if(i&&(n={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return n.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],d=c?c.nodeName:void 0;d&&"DIV"!=d&&"P"!=d&&"BR"!=d&&(r+="\n",n.flush()),r+=t.getInnerText(l,n),n.set("\n")}else"BR"==l.nodeName?(r+=n.flush(),n.set("\n")):r+=t.getInnerText(l,n)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?n.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,n,i,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.addEventListener(n,i,o),i;if(e.attachEvent){var r=function(){return i.call(e,window.event)};return e.attachEvent("on"+n,r),r}},t.removeEventListener=function(e,n,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.removeEventListener(n,i,o)):e.detachEvent&&e.detachEvent("on"+n,i)},t.parsePath=function s(e){var t,n;if(0===e.length)return[];var i=e.match(/^\.(\w+)/);if(i)t=i[1],n=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var o=e.indexOf("]");if(-1===o)throw new SyntaxError("Character ] expected in path");if(1===o)throw new SyntaxError("Index expected after [");var r=e.substring(1,o);t="*"===r?r:JSON.parse(r),n=e.substr(o+1)}return[t].concat(s(n))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var n=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(n)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,n){var i=void 0!==n?n:0;return t.left-i>=e.left&&t.right+i<=e.right&&t.top-i>=e.top&&t.bottom+i<=e.bottom},t.debounce=function(e,t,n){var i;return function(){var o=this,r=arguments,s=function(){i=null,n||e.apply(o,r)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var n=t.length,i=0,o=e.length,r=t.length;t.charAt(i)===e.charAt(i)&&n>i;)i++;for(;t.charAt(r-1)===e.charAt(o-1)&&r>i&&o>0;)r--,o--;return{start:i,end:r}}},function(e,t,n){function i(){this.locked=!1}i.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},i.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},i.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},i.prototype.lock=function(){this.locked=!0},i.prototype.unlock=function(){this.locked=!1},e.exports=i},function(e,t,n){function i(e){this.editor=e,this.history=[],this.index=-1,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},appendNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.appendChild(t)})}},insertBeforeNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.insertBefore(t,e.beforeNode)})}},insertAfterNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(e.node,t),t=n})}},removeNodes:{undo:function(e){var t=e.parent,n=t.childs[e.index]||t.append;e.nodes.forEach(function(e){t.insertBefore(e,n)})},redo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})}},duplicateNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(n,t),t=n})}},moveNodes:{undo:function(e){e.nodes.forEach(function(t){e.oldBeforeNode.parent.moveBefore(t,e.oldBeforeNode)})},redo:function(e){e.nodes.forEach(function(t){e.newBeforeNode.parent.moveBefore(t,e.newBeforeNode)})}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}n(3);i.prototype.onChange=function(){},i.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index=0},i.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,n=void 0!=this.resultIndex?this.resultIndex-1:t;0>n&&(n=t),this._setActiveResult(n,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var n=this.activeResult.node,i=this.activeResult.elem;"field"==i?delete n.searchFieldActive:delete n.searchValueActive,n.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,n=t.length>0?t:void 0;if(n!=this.lastText||e)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,n){function i(e,t){function n(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(e){e.preventDefault(),i.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(e){e.preventDefault(),i._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),n(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var i=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),n(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var n=24*(e.length+(t.submenu?t.submenu.length:0));i.maxHeight=Math.max(i.maxHeight,n)})}var o=n(3);i.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n==t.expandedItem&&n.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},i.visibleMenu=void 0,i.prototype.show=function(e,t){this.hide();var n=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(n=!1)}if(n){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),i.visibleMenu&&i.visibleMenu.hide(),i.visibleMenu=this},i.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}i.visibleMenu==this&&(i.visibleMenu=void 0)},i.prototype._onExpandItem=function(e){var t=this,n=e==this.expandedItem,i=this.expandedItem;if(i&&(i.ul.style.height="0",i.ul.style.padding="",setTimeout(function(){t.expandedItem!=i&&(i.ul.style.display="",o.removeClassName(i.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!n){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"jsoneditor-selected"),this.expandedItem=e}},i.prototype._onKeyDown=function(e){var t,n,i,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),n=t.indexOf(s),0==n&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),n=t.indexOf(s),n==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&i.focus()),l=!0):38==a?(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&"jsoneditor-expand"==i.className&&(i=t[n-2]),i||(i=t[t.length-1]),i&&i.focus(),l=!0):39==a?(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&(r=t[n+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},i.prototype._isChildOf=function(e,t){for(var n=e.parentNode;n;){if(n==t)return!0;n=n.parentNode}return!1},e.exports=i},function(e,t,n){function i(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),i.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),i.prototype.DEBOUNCE_INTERVAL)}var o=n(14),r=n(7),s=n(12),a=n(3);i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},i.prototype.getPath=function(){for(var e=this,t=[];e;){var n=e.parent&&"array"==e.parent.type?e.index:e.field;void 0!==n&&t.unshift(n),e=e.parent}return t},i.prototype.findNode=function(e){for(var t=a.parsePath(e),n=this;n&&t.length>0;){var i=t.shift();if("number"==typeof i){if("array"!==n.type)throw new Error("Cannot get child node at index "+i+": node is no array");n=n.childs[i]}else{if("object"!==n.type)throw new Error("Cannot get child node "+i+": node is no object");n=n.childs.filter(function(e){return e.field===i})[0]}}return n},i.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},i.prototype.setError=function(e,t){this.getDom(),this.error=e;var n=this.dom.tdError;if(e){n||(n=document.createElement("td"),this.dom.tdError=n,this.dom.tdValue.parentNode.appendChild(n));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.className="jsoneditor-schema-error",o.appendChild(i),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)n=e[s],void 0===n||n instanceof Function||(o=new i(this.editor,{value:n}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(n=e[l],void 0===n||n instanceof Function||(o=new i(this.editor,{field:l,value:n}),this.appendChild(o)));this.value="",this.editor.options.sortObjectKeys===!0&&this.sort("asc")}else this.childs=void 0,this.value=e;this.previousValue=this.value},i.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},i.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},i.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},i.prototype.clone=function(){var e=new i(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(n){var i=n.clone();i.setParent(e),t.push(i)}),e.childs=t}else e.childs=void 0;return e},i.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},i.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},i.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,n=t?t.parentNode:void 0;if(n){var i=this.getAppend(),o=t.nextSibling;o?n.insertBefore(i,o):n.appendChild(i),this.childs.forEach(function(e){n.insertBefore(e.getDom(),i),e.showChilds()})}}},i.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},i.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},i.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),n=this.getAppend(),i=n?n.parentNode:void 0;n&&i&&i.insertBefore(t,n),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.moveBefore=function(e,t){if(this._hasChilds()){var n=this.dom.tr?this.dom.tr.parentNode:void 0;if(n){var i=document.createElement("tr");i.style.height=n.clientHeight+"px",n.appendChild(i)}e.parent&&e.parent.removeChild(e),t instanceof l?this.appendChild(e):this.insertBefore(e,t),n&&n.removeChild(i)}},i.prototype.moveTo=function(e,t){if(e.parent==this){var n=this.childs.indexOf(e);t>n&&t++}var i=this.childs[t]||this.append;this.moveBefore(e,i)},i.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var n=this.childs.indexOf(t);if(-1==n)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(n,0,e)}if(this.expanded){var i=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(i,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.insertAfter=function(e,t){if(this._hasChilds()){var n=this.childs.indexOf(t),i=this.childs[n+1];i?this.insertBefore(e,i):this.appendChild(e)}},i.prototype.search=function(e){var t,n=[],i=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(i),-1!=t&&(this.searchField=!0,n.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),n=n.concat(r)}if(void 0!=i){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(i),-1!=t&&(this.searchValue=!0,n.push({node:this,elem:"value"}))}this._updateDomValue()}return n},i.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,n=!1;t;)t.expand(n),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},i.focusElement=void 0,i.prototype.focus=function(e){if(i.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},i.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},i.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},i.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var n=0,i=t.length;i>n;n++)if(t[n].containsNode(e))return!0;return!1},i.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var n=e.clone();e.clearDom(),t?this.insertBefore(n,t):this.appendChild(n)}},i.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var n=this.childs.splice(t,1)[0];return n.parent=null,this.updateDom({updateIndexes:!0}),n}}return void 0},i.prototype._remove=function(e){this.removeChild(e)},i.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var n,i=this.dom.tr?this.dom.tr.parentNode:void 0;n=this.expanded?this.getAppend():this.getDom();var o=n&&n.parentNode?n.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,i&&(o?i.insertBefore(this.getDom(),o):i.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},i.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(i){if(this.value=void 0,e!==!0)throw i}},i.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(String(this.previousValue),String(this.value));n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:n}),this.previousValue=this.value},i.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(this.previousField,this.field);n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:n}),this.previousField=this.field},i.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],n=this.value,i="auto"==this.type?a.type(n):this.type,o="string"==i&&a.isUrl(n);t.push("jsoneditor-"+i),o&&t.push("jsoneditor-url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==i||"object"==i){var s=this.childs?this.childs.length:0;e.title=this.type+" containing "+s+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===i&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),a.stripFormatting(e)}},i.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?a.addClassName(e,"jsoneditor-empty"):a.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?a.addClassName(e,"jsoneditor-highlight-active"):a.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?a.addClassName(e,"jsoneditor-highlight"):a.removeClassName(e,"jsoneditor-highlight"),a.stripFormatting(e)}},i.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=a.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(n){if(this.field=void 0,e!==!0)throw n}},i.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},n=[],i=0;i0&&(e=this.childs.filter(function(e){return-1!==n.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var i=0;i0&&(e=e.concat(r))}return e},i.prototype.clearDom=function(){this.dom={}},i.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var n=document.createElement("button");e.drag=n,n.className="jsoneditor-dragarea",n.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(n)}e.tr.appendChild(t);var i=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",i.appendChild(e.menu),e.tr.appendChild(i)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},i.onDragStart=function(e,t){if(!Array.isArray(e))return i.onDragStart([e],t);if(0!==e.length){var n=e[0],o=e[e.length-1],r=i.getNodeFromTarget(t.target),s=o._nextSibling(),l=n.editor,c=a.getAbsoluteTop(r.dom.tr)-a.getAbsoluteTop(n.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){i.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){i.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:n.getLevel()},document.body.style.cursor="move",t.preventDefault()}},i.onDrag=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n,o,r,s,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(n=E.dom.tr,p=a.getAbsoluteTop(n),g=n.offsetHeight,p>w){o=n;do o=o.previousSibling,h=i.getNodeFromTarget(o),f=o?a.getAbsoluteTop(o):0;while(o&&f>w);h&&!h.parent&&(h=void 0),h||(d=n.parentNode.firstChild,o=d?d.nextSibling:void 0,h=i.getNodeFromTarget(o),h==E&&(h=void 0)),h&&(o=h.dom.tr,f=o?a.getAbsoluteTop(o):0,w>f+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),r=s;do u=i.getNodeFromTarget(r),r&&(v=r.nextSibling?a.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling;while(r&&w>p+y);if(u&&u.parent){var j=x-b.drag.mouseX,S=Math.round(j/24/2),N=b.drag.level+S,k=u.getLevel();for(o=u.dom.tr.previousSibling;N>k&&o;){h=i.getNodeFromTarget(o);var A=e.some(function(e){return e===h||h._isChildOf(e)});if(A);else{if(!(h instanceof l))break;var O=h.parent.childs;if(O.length==e.length&&O[e.length-1]==C)break;u=i.getNodeFromTarget(o),k=u.getLevel()}o=o.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),_=!0)}}}_&&(b.drag.mouseX=x,b.drag.level=E.getLevel()),b.startAutoScroll(w),t.preventDefault()}},i.onDragEnd=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n=e[0],o=n.editor,r=n.parent,s=r.childs.indexOf(n),l=r.childs[s+e.length]||r.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:o.drag.oldSelection,newSelection:o.getSelection(),oldBeforeNode:o.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&o._onAction("moveNodes",c),document.body.style.cursor=o.drag.oldCursor,o.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&o.highlighter.unhighlight()}),delete o.drag,o.mousemove&&(a.removeEventListener(window,"mousemove",o.mousemove),delete o.mousemove),o.mouseup&&(a.removeEventListener(window,"mouseup",o.mouseup),delete o.mouseup),o.stopAutoScroll(),t.preventDefault()}},i.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},i.prototype._createDomField=function(){return document.createElement("div")},i.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},i.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},i.prototype.updateValue=function(e){this.value=e,this.updateDom()},i.prototype.updateField=function(e){this.field=e,this.updateDom()},i.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var n=this.dom.field;if(n){this.fieldEditable?(n.contentEditable=this.editable.field,n.spellcheck=!1,n.className="jsoneditor-field"):n.className="jsoneditor-readonly";var i;i=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",n.innerHTML=this._escapeHTML(i)}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;"array"==this.type?(o.innerHTML="["+r+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(o.innerHTML="{"+r+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(o.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},i.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var n=e.dom.field;n&&(n.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},i.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&a.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},i.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},i.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),n=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(n);var i=document.createElement("tr");n.appendChild(i);var o=document.createElement("td");o.className="jsoneditor-tree",i.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="jsoneditor-tree",i.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="jsoneditor-tree",i.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"), -e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",i.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},i.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,o=this,r=this._hasChilds();if((n==i.drag||n==i.menu)&&("mouseover"==t?this.editor.highlighter.highlight(this):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=o.editor.highlighter;s.highlight(o),s.lock(),a.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){a.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}if("click"==t&&(n==i.expand||("view"===o.editor.options.mode||"form"===o.editor.options.mode)&&"DIV"===n.nodeName)&&r){var l=e.ctrlKey;this._onExpand(l)}"change"==t&&n==i.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var c=i.value;if(n==c)switch(t){case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(c.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&a.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){o._getDomValue(!0),o._updateDomValue()},1)}var d=i.field;if(n==d)switch(t){case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(d.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){o._getDomField(!0),o._updateDomField()},1)}var h=i.tree;if(n==h.parentNode&&"click"==t&&!e.hasMoved){var u=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)(!this.editable.value||e.ctrlKey)&&a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(i.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(i.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var j=this._firstNode();j&&j.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(p);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(x.expanded){var N=x.getAppend();o=N?N.nextSibling:void 0}else{var k=x.getDom();o=k.nextSibling}o&&(n=i.getNodeFromTarget(o),r=o.nextSibling,T=i.getNodeFromTarget(r),n&&n instanceof l&&1!=x.parent.childs.length&&T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(i.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){k=w.getDom();var O=k.previousSibling;O&&(t=i.getNodeFromTarget(O),t&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)n=this._nextNode(),n&&(this.editor.deselect(!0),n.focus(i.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)n=this._nextNode(),n&&(h=this.editor.multiselection,h.start=h.start||this,h.end=n,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),n.focus("field")),v=!0;else if(g&&m&&y){n=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=n&&(n._nextNode()||n.parent.append);T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},i.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,n=t.parentNode,i=n.scrollTop;n.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(n.appendChild(t),n.scrollTop=i)},i.onRemove=function(e){if(!Array.isArray(e))return i.onRemove([e]);if(e&&e.length>0){var t=e[0],n=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();i.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:n,index:r,oldSelection:s,newSelection:a})}},i.onDuplicate=function(e){if(!Array.isArray(e))return i.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],n=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return n.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:n,oldSelection:r,newSelection:l})}},i.prototype._onInsertBefore=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onInsertAfter=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onAppend=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var n=this.editor.getSelection();this.changeType(e);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:n,newSelection:i})}},i.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,n="array"==this.type?"value":"field";this.hideChilds();var i=this.childs,r=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,i){return t*o(e[n],i[n])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:i,oldSort:r,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},i.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},i.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}return void 0},i.blurNodes=function(e){if(!Array.isArray(e))return void i.blurNodes([e]);var t=e[0],n=t.parent,o=t.getIndex();n.childs[o+e.length]?n.childs[o+e.length].focus():n.childs[o-1]?n.childs[o-1].focus():n.focus()},i.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},i.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do n=n.previousSibling,e=i.getNodeFromTarget(n);while(n&&e instanceof l&&!e.isVisible())}return e},i.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do n=n.nextSibling,e=i.getNodeFromTarget(n);while(n&&e instanceof l&&!e.isVisible())}return e},i.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.firstChild;e=i.getNodeFromTarget(n)}return e},i.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.lastChild;for(e=i.getNodeFromTarget(n);n&&e instanceof l&&!e.isVisible();)n=n.previousSibling,e=i.getNodeFromTarget(n)}return e},i.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},i.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},i.prototype._getElementName=function(e){var t=this.dom;for(var n in t)if(t.hasOwnProperty(n)&&t[n]==e)return n;return null},i.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},i.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},i.prototype.showContextMenu=function(e,t){var n=this,o=i.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:o.auto,click:function(){n._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:o.array,click:function(){n._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:o.object,click:function(){n._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:o.string,click:function(){n._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){n.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){n.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){n.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=n.parent.childs;n==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){n._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){i.onDuplicate(n)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){i.onRemove(n)}}))}var c=new r(s,{close:t});c.show(e,this.editor.content)},i.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},i.prototype._stringCast=function(e){var t=e.toLowerCase(),n=Number(e),i=parseFloat(e);return""==e?"":"null"==t?null:"true"==t?!0:"false"==t?!1:isNaN(n)||isNaN(i)?e:n},i.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),n=JSON.stringify(t),i=n.substring(1,n.length-1);return this.editor.options.escapeUnicode===!0&&(i=a.escapeUnicodeChars(i)),i},i.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e.trim())+'"',n=a.parse(t);return n.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},i.prototype._escapeJSON=function(e){for(var t="",n=0;n2&&E.push("'"+this.terminals_[w]+"'");var j="";j=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(j,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:f,expected:E})}if(3==h){if(m==p)throw new Error(j||"Parsing halted.");d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,m=n()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(j||"Parsing halted.");t(1),v=o[o.length-1]}g=m,m=u,v=o[o.length-1],y=a[v]&&a[v][u],h=3}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(y[0]){case 1:o.push(m),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(y[1]),m=null,g?(m=g,g=null):(d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,h>0&&h--);break;case 2:if(x=this.productions_[y[1]][1],C.$=r[r.length-x],C._$={first_line:s[s.length-(x||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(x||1)].first_column,last_column:s[s.length-1].last_column},b=this.performAction.call(C,l,d,c,this.yy,y[1],r,s),"undefined"!=typeof b)return b;x&&(o=o.slice(0,-1*x*2),r=r.slice(0,-1*x),s=s.slice(0,-1*x)),o.push(this.productions_[y[1]][0]),r.push(C.$),s.push(C._$),_=a[o[o.length-2]][o[o.length-1]],o.push(_);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=n,i=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse.bind(i)},function(e,t,n){function i(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var n=document.createElement("td");e.tdMenu=n;var i=document.createElement("button");i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",e.menu=i,n.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var n=e.text;n&&(n.innerHTML="(empty "+this.parent.type+")");var i=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&i.appendChild(e.tdDrag),e.tdMenu&&i.appendChild(e.tdMenu),i.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&i.removeChild(e.tdDrag),e.tdMenu&&i.removeChild(e.tdMenu),i.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,n){var i=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}]}],a=new r(s,{close:n});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,r=i.menu;if(n==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),o.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){o.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=n(3),r=n(7);e.exports=i},function(e,t,n){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})},function(e,t,n){e.exports=function i(e,t){"use strict";var n,o,r=/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,s=/(^[ ]*|[ ]*$)/g,a=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,l=/^0x[0-9a-f]+$/i,c=/^0/,d=function(e){return i.insensitive&&(""+e).toLowerCase()||""+e},h=d(e).replace(s,"")||"",u=d(t).replace(s,"")||"",p=h.replace(r,"\x00$1\x00").replace(/\0$/,"").replace(/^\0/,"").split("\x00"),f=u.replace(r,"\x00$1\x00").replace(/\0$/,"").replace(/^\0/,"").split("\x00"),m=parseInt(h.match(l),16)||1!==p.length&&h.match(a)&&Date.parse(h),g=parseInt(u.match(l),16)||m&&u.match(a)&&Date.parse(u)||null;if(g){if(g>m)return-1;if(m>g)return 1}for(var v=0,y=Math.max(p.length,f.length);y>v;v++){if(n=!(p[v]||"").match(c)&&parseFloat(p[v])||p[v]||0,o=!(f[v]||"").match(c)&&parseFloat(f[v])||f[v]||0,isNaN(n)!==isNaN(o))return isNaN(n)?1:-1;if(typeof n!=typeof o&&(n+="",o+=""),o>n)return-1;if(n>o)return 1}return 0}},function(e,t,n){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$" -},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../range").Range,o=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),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],d={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,d.rangeCount!=e.multiSelect.rangeCount&&(d={rangeCount:e.multiSelect.rangeCount})),d[t]?i=d[t]:void(i=d[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return u(c,d,"{","}");if(p.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var f=l.substring(s.column,s.column+1);if("}"==f){var m=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var g="";p.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var y=this.$getIndent(o.getLine(v.row))}else{if(!g)return void p.clearMaybeInsertedClosing();var y=this.$getIndent(l)}var b=y+o.getTabString();return{text:"\n"+b+"\n"+y+g,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=i.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=i.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if('"'==o||"'"==o){h(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&n.getWrapBehavioursEnabled())return u(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),d=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),m=i.getTokenAt(l.row,l.column+1);if("\\"==d&&f&&/escape/.test(f.type))return null;var g,v=f&&/string|escape/.test(f.type),y=!m||/string|escape/.test(m.type);if(p==r)g=v!==y;else{if(v&&!y)return null;if(v&&y)return null;var b=i.$mode.tokenRe;b.lastIndex=0;var w=b.test(d);b.lastIndex=0;var x=b.test(d);if(w||x)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;g=!0}return{text:g?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),ace.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 i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=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)))};i.inherits(s,r),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 i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o=e.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,n);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],n,s);var a=e.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],n,s):e.getCommentFoldRange(n,s,-1)}}},this.getSectionRange=function(e,t){var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns?new o(s,i,d,t.length):void 0}}.call(s.prototype)}),ace.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/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,i){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(i+=n)}return i},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 d(["ace"],n(17),"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(h.prototype),t.Mode=h})},function(e,t,n){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");i.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),d=function(e,t,n){var o=i.createElement("div");o.innerHTML=c,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var n=e.target||e.srcElement,i=n.getAttribute("action");i&&t[i]?t[i]():t.$searchBarKb.commands[i]&&t.$searchBarKb.commands[i].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),r=!o&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(d.prototype),t.SearchBox=d,t.Search=function(e,t){var n=e.searchBox||new d(e);n.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,n){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; -}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e,t,n){if(!(this instanceof i))throw new Error('JSONEditor constructor called without "new".');var o=l.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,n)}var o;try{o=n(!function(){var e=new Error('Cannot find module "ajv"');throw e.code="MODULE_NOT_FOUND",e}())}catch(r){}var s=n(1),a=n(12),l=n(4);i.modes={},i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._create=function(e,t,n){this.container=e,this.options=t||{},this.json=n||{};var i=this.options.mode||"tree";this.setMode(i)},i.prototype.destroy=function(){},i.prototype.set=function(e){this.json=e},i.prototype.get=function(){return this.json},i.prototype.setText=function(e){this.json=l.parse(e)},i.prototype.getText=function(){return JSON.stringify(this.json)},i.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},i.prototype.getName=function(){return this.options&&this.options.name},i.prototype.setMode=function(e){var t,n,o=this.container,r=l.extend({},this.options),s=r.mode;r.mode=e;var a=i.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==a.data;if(n=this.getName(),t=this[c?"getText":"get"](),this.destroy(),l.clear(this),l.extend(this,a.mixin),this.create(o,r),this.setName(n),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(d){console.error(d)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(d){console.error(d)}}catch(d){this._onError(d)}},i.prototype.getMode=function(){return this.options.mode},i.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},i.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(n){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},i.prototype.validate=function(){},i.registerMode=function(e){var t,n;if(l.isArray(e))for(t=0;te&&n.scrollTop>0?this.autoScrollStep=(i+s-e)/3:e>r-s&&o+n.scrollTop3?(n.scrollTop+=o/3,i.animateCallback=t,i.animateTimeout=setTimeout(a,50)):(t&&t(!0),n.scrollTop=s,delete i.animateTimeout,delete i.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var n=t.target;e(t),"BUTTON"==n.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var n=document.createElement("button");n.className="jsoneditor-expand-all",n.title="Expand all fields",n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var i=document.createElement("button");if(i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var o=document.createElement("button");o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,n=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+n*n),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var n=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){n._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){n._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var n=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;n&&i&&(this.multiselection.nodes=this._findTopLevelNodes(n,i),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var n=e.getNodePath(),i=t.getNodePath(),o=0;o=0},i.prototype.canRedo=function(){return this.index=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function r(){for(d+=2;di;i++){var r=n[i];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,n;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,n;window.getSelection&&document.createRange&&(n=document.createRange(),n.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(n))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var n=window.getSelection();if(n){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,n){var i=void 0==n;if(i&&(n={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return n.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],d=c?c.nodeName:void 0;d&&"DIV"!=d&&"P"!=d&&"BR"!=d&&(r+="\n",n.flush()),r+=t.getInnerText(l,n),n.set("\n")}else"BR"==l.nodeName?(r+=n.flush(),n.set("\n")):r+=t.getInnerText(l,n)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?n.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,n,i,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.addEventListener(n,i,o),i;if(e.attachEvent){var r=function(){return i.call(e,window.event)};return e.attachEvent("on"+n,r),r}},t.removeEventListener=function(e,n,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.removeEventListener(n,i,o)):e.detachEvent&&e.detachEvent("on"+n,i)},t.parsePath=function s(e){var t,n;if(0===e.length)return[];var i=e.match(/^\.(\w+)/);if(i)t=i[1],n=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var o=e.indexOf("]");if(-1===o)throw new SyntaxError("Character ] expected in path");if(1===o)throw new SyntaxError("Index expected after [");var r=e.substring(1,o);t="*"===r?r:JSON.parse(r),n=e.substr(o+1)}return[t].concat(s(n))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var n=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(n)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,n){var i=void 0!==n?n:0;return t.left-i>=e.left&&t.right+i<=e.right&&t.top-i>=e.top&&t.bottom+i<=e.bottom},t.debounce=function(e,t,n){var i;return function(){var o=this,r=arguments,s=function(){i=null,n||e.apply(o,r)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var n=t.length,i=0,o=e.length,r=t.length;t.charAt(i)===e.charAt(i)&&n>i;)i++;for(;t.charAt(r-1)===e.charAt(o-1)&&r>i&&o>0;)r--,o--;return{start:i,end:r}}},function(e,t,n){var i=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,n,i,o,r,s){var a=r.length-1;switch(o){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g,"\x0B").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=r[a-1];case 13:this.$={};break;case 14:this.$=r[a-1];break;case 15:this.$=[r[a-2],r[a]];break;case 16:this.$={},this.$[r[a][0]]=r[a][1];break;case 17:this.$=r[a-2],r[a-2][r[a][0]]=r[a][1];break;case 18:this.$=[];break;case 19:this.$=r[a-1];break;case 20:this.$=[r[a]];break;case 21:this.$=r[a-2],r[a-2].push(r[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(e){o.length=o.length-2*e,r.length=r.length-e,s.length=s.length-e}function n(){var e;return e=i.lexer.lex()||1,"number"!=typeof e&&(e=i.symbols_[e]||e),e}var i=this,o=[0],r=[null],s=[],a=this.table,l="",c=0,d=0,h=0,u=2,p=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var f=this.lexer.yylloc;s.push(f),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var m,g,v,y,b,w,x,_,E,C={};;){if(v=o[o.length-1],this.defaultActions[v]?y=this.defaultActions[v]:(null==m&&(m=n()),y=a[v]&&a[v][m]),"undefined"==typeof y||!y.length||!y[0]){if(!h){E=[];for(w in a[v])this.terminals_[w]&&w>2&&E.push("'"+this.terminals_[w]+"'");var j="";j=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(j,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:f,expected:E})}if(3==h){if(m==p)throw new Error(j||"Parsing halted.");d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,m=n()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(j||"Parsing halted.");t(1),v=o[o.length-1]}g=m,m=u,v=o[o.length-1],y=a[v]&&a[v][u],h=3}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(y[0]){case 1:o.push(m),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(y[1]),m=null,g?(m=g,g=null):(d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,h>0&&h--);break;case 2:if(x=this.productions_[y[1]][1],C.$=r[r.length-x],C._$={first_line:s[s.length-(x||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(x||1)].first_column,last_column:s[s.length-1].last_column},b=this.performAction.call(C,l,d,c,this.yy,y[1],r,s),"undefined"!=typeof b)return b;x&&(o=o.slice(0,-1*x*2),r=r.slice(0,-1*x),s=s.slice(0,-1*x)),o.push(this.productions_[y[1]][0]),r.push(C.$),s.push(C._$),_=a[o[o.length-2]][o[o.length-1]],o.push(_);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="", +this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=n,i=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse.bind(i)},function(e,t){"use strict";function n(e,t){var n=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var i=document.createElement("table");this.dom.table=i,i.className="jsoneditor-search",t.appendChild(i);var o=document.createElement("tbody");this.dom.tbody=o,i.appendChild(o);var r=document.createElement("tr");o.appendChild(r);var s=document.createElement("td");r.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),r.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var d=document.createElement("tbody");c.appendChild(d),r=document.createElement("tr"),d.appendChild(r);var h=document.createElement("button");h.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(h),r.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){n._onDelayedSearch(e)},u.onchange=function(e){n._onSearch()},u.onkeydown=function(e){n._onKeyDown(e)},u.onkeyup=function(e){n._onKeyUp(e)},h.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),r.appendChild(s);var p=document.createElement("button");p.title="Next result (Enter)",p.className="jsoneditor-next",p.onclick=function(){n.next()},s=document.createElement("td"),s.appendChild(p),r.appendChild(s);var f=document.createElement("button");f.title="Previous result (Shift+Enter)",f.className="jsoneditor-previous",f.onclick=function(){n.previous()},s=document.createElement("td"),s.appendChild(f),r.appendChild(s)}n.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},n.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,n=void 0!=this.resultIndex?this.resultIndex-1:t;0>n&&(n=t),this._setActiveResult(n,e)}},n.prototype._setActiveResult=function(e,t){if(this.activeResult){var n=this.activeResult.node,i=this.activeResult.elem;"field"==i?delete n.searchFieldActive:delete n.searchValueActive,n.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,n=t.length>0?t:void 0;if(n!=this.lastText||e)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},n.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=n},function(e,t,n){"use strict";function i(e,t){function n(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(e){e.preventDefault(),i.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(e){e.preventDefault(),i._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),n(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var i=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),n(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var n=24*(e.length+(t.submenu?t.submenu.length:0));i.maxHeight=Math.max(i.maxHeight,n)})}var o=n(4);i.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n==t.expandedItem&&n.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},i.visibleMenu=void 0,i.prototype.show=function(e,t){this.hide();var n=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(n=!1)}if(n){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),i.visibleMenu&&i.visibleMenu.hide(),i.visibleMenu=this},i.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}i.visibleMenu==this&&(i.visibleMenu=void 0)},i.prototype._onExpandItem=function(e){var t=this,n=e==this.expandedItem,i=this.expandedItem;if(i&&(i.ul.style.height="0",i.ul.style.padding="",setTimeout(function(){t.expandedItem!=i&&(i.ul.style.display="",o.removeClassName(i.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!n){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"jsoneditor-selected"),this.expandedItem=e}},i.prototype._onKeyDown=function(e){var t,n,i,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),n=t.indexOf(s),0==n&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),n=t.indexOf(s),n==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&i.focus()),l=!0):38==a?(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&"jsoneditor-expand"==i.className&&(i=t[n-2]),i||(i=t[t.length-1]),i&&i.focus(),l=!0):39==a?(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&(r=t[n+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},i.prototype._isChildOf=function(e,t){for(var n=e.parentNode;n;){if(n==t)return!0;n=n.parentNode}return!1},e.exports=i},function(e,t,n){"use strict";function i(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),i.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),i.prototype.DEBOUNCE_INTERVAL)}var o=n(9),r=n(7),s=n(10),a=n(4);i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},i.prototype.getPath=function(){for(var e=this,t=[];e;){var n=e.parent&&"array"==e.parent.type?e.index:e.field;void 0!==n&&t.unshift(n),e=e.parent}return t},i.prototype.findNode=function(e){for(var t=a.parsePath(e),n=this;n&&t.length>0;){var i=t.shift();if("number"==typeof i){if("array"!==n.type)throw new Error("Cannot get child node at index "+i+": node is no array");n=n.childs[i]}else{if("object"!==n.type)throw new Error("Cannot get child node "+i+": node is no object");n=n.childs.filter(function(e){return e.field===i})[0]}}return n},i.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},i.prototype.setError=function(e,t){this.getDom(),this.error=e;var n=this.dom.tdError;if(e){n||(n=document.createElement("td"),this.dom.tdError=n,this.dom.tdValue.parentNode.appendChild(n));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.className="jsoneditor-schema-error",o.appendChild(i),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)n=e[s],void 0===n||n instanceof Function||(o=new i(this.editor,{value:n}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(n=e[l],void 0===n||n instanceof Function||(o=new i(this.editor,{field:l,value:n}),this.appendChild(o)));this.value="",this.editor.options.sortObjectKeys===!0&&this.sort("asc")}else this.childs=void 0,this.value=e;this.previousValue=this.value},i.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},i.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},i.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},i.prototype.clone=function(){var e=new i(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(n){var i=n.clone();i.setParent(e),t.push(i)}),e.childs=t}else e.childs=void 0;return e},i.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},i.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},i.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,n=t?t.parentNode:void 0;if(n){var i=this.getAppend(),o=t.nextSibling;o?n.insertBefore(i,o):n.appendChild(i),this.childs.forEach(function(e){n.insertBefore(e.getDom(),i),e.showChilds()})}}},i.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},i.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},i.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),n=this.getAppend(),i=n?n.parentNode:void 0;n&&i&&i.insertBefore(t,n),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.moveBefore=function(e,t){if(this._hasChilds()){var n=this.dom.tr?this.dom.tr.parentNode:void 0;if(n){var i=document.createElement("tr");i.style.height=n.clientHeight+"px",n.appendChild(i)}e.parent&&e.parent.removeChild(e),t instanceof l?this.appendChild(e):this.insertBefore(e,t),n&&n.removeChild(i)}},i.prototype.moveTo=function(e,t){if(e.parent==this){var n=this.childs.indexOf(e);t>n&&t++}var i=this.childs[t]||this.append;this.moveBefore(e,i)},i.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var n=this.childs.indexOf(t);if(-1==n)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(n,0,e)}if(this.expanded){var i=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(i,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.insertAfter=function(e,t){if(this._hasChilds()){var n=this.childs.indexOf(t),i=this.childs[n+1];i?this.insertBefore(e,i):this.appendChild(e)}},i.prototype.search=function(e){var t,n=[],i=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(i),-1!=t&&(this.searchField=!0,n.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),n=n.concat(r)}if(void 0!=i){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(i),-1!=t&&(this.searchValue=!0,n.push({node:this,elem:"value"}))}this._updateDomValue()}return n},i.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,n=!1;t;)t.expand(n),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},i.focusElement=void 0,i.prototype.focus=function(e){if(i.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},i.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},i.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},i.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var n=0,i=t.length;i>n;n++)if(t[n].containsNode(e))return!0;return!1},i.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var n=e.clone();e.clearDom(),t?this.insertBefore(n,t):this.appendChild(n)}},i.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var n=this.childs.splice(t,1)[0];return n.parent=null,this.updateDom({updateIndexes:!0}),n}}},i.prototype._remove=function(e){this.removeChild(e)},i.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var n,i=this.dom.tr?this.dom.tr.parentNode:void 0;n=this.expanded?this.getAppend():this.getDom();var o=n&&n.parentNode?n.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),"string"!=t&&"auto"!=t||(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),"string"!=t&&"auto"!=t||(this.expanded=!0)):this.expanded=!1,i&&(o?i.insertBefore(this.getDom(),o):i.appendChild(this.getDom())),this.showChilds()}else this.type=e;"auto"!=e&&"string"!=e||("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},i.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(i){if(this.value=void 0,e!==!0)throw i}},i.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(String(this.previousValue),String(this.value));n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:n}),this.previousValue=this.value},i.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=a.textDiff(this.previousField,this.field);n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:n}),this.previousField=this.field},i.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],n=this.value,i="auto"==this.type?a.type(n):this.type,o="string"==i&&a.isUrl(n);t.push("jsoneditor-"+i),o&&t.push("jsoneditor-url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==i||"object"==i){var s=this.childs?this.childs.length:0;e.title=this.type+" containing "+s+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===i&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),a.stripFormatting(e)}},i.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?a.addClassName(e,"jsoneditor-empty"):a.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?a.addClassName(e,"jsoneditor-highlight-active"):a.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?a.addClassName(e,"jsoneditor-highlight"):a.removeClassName(e,"jsoneditor-highlight"),a.stripFormatting(e)}},i.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=a.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(n){if(this.field=void 0,e!==!0)throw n}},i.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},n=[],i=0;i0&&(e=this.childs.filter(function(e){return-1!==n.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var i=0;i0&&(e=e.concat(r))}return e},i.prototype.clearDom=function(){this.dom={}},i.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var n=document.createElement("button");e.drag=n,n.className="jsoneditor-dragarea",n.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(n)}e.tr.appendChild(t);var i=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",i.appendChild(e.menu),e.tr.appendChild(i)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},i.onDragStart=function(e,t){if(!Array.isArray(e))return i.onDragStart([e],t);if(0!==e.length){var n=e[0],o=e[e.length-1],r=i.getNodeFromTarget(t.target),s=o._nextSibling(),l=n.editor,c=a.getAbsoluteTop(r.dom.tr)-a.getAbsoluteTop(n.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){i.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){i.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:n.getLevel()},document.body.style.cursor="move",t.preventDefault()}},i.onDrag=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n,o,r,s,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(n=E.dom.tr,p=a.getAbsoluteTop(n),g=n.offsetHeight,p>w){o=n;do o=o.previousSibling,h=i.getNodeFromTarget(o),f=o?a.getAbsoluteTop(o):0;while(o&&f>w);h&&!h.parent&&(h=void 0),h||(d=n.parentNode.firstChild,o=d?d.nextSibling:void 0,h=i.getNodeFromTarget(o),h==E&&(h=void 0)),h&&(o=h.dom.tr,f=o?a.getAbsoluteTop(o):0,w>f+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),r=s;do u=i.getNodeFromTarget(r),r&&(v=r.nextSibling?a.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling;while(r&&w>p+y);if(u&&u.parent){var j=x-b.drag.mouseX,S=Math.round(j/24/2),N=b.drag.level+S,k=u.getLevel();for(o=u.dom.tr.previousSibling;N>k&&o;){h=i.getNodeFromTarget(o);var A=e.some(function(e){return e===h||h._isChildOf(e)});if(A);else{if(!(h instanceof l))break;var O=h.parent.childs;if(O.length==e.length&&O[e.length-1]==C)break;u=i.getNodeFromTarget(o),k=u.getLevel()}o=o.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),_=!0)}}}_&&(b.drag.mouseX=x,b.drag.level=E.getLevel()),b.startAutoScroll(w),t.preventDefault()}},i.onDragEnd=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n=e[0],o=n.editor,r=n.parent,s=r.childs.indexOf(n),l=r.childs[s+e.length]||r.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:o.drag.oldSelection,newSelection:o.getSelection(),oldBeforeNode:o.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&o._onAction("moveNodes",c),document.body.style.cursor=o.drag.oldCursor,o.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&o.highlighter.unhighlight()}),delete o.drag,o.mousemove&&(a.removeEventListener(window,"mousemove",o.mousemove),delete o.mousemove),o.mouseup&&(a.removeEventListener(window,"mouseup",o.mouseup),delete o.mouseup),o.stopAutoScroll(),t.preventDefault()}},i.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},i.prototype._createDomField=function(){return document.createElement("div")},i.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},i.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},i.prototype.updateValue=function(e){this.value=e,this.updateDom()},i.prototype.updateField=function(e){this.field=e,this.updateDom()},i.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var n=this.dom.field;if(n){this.fieldEditable?(n.contentEditable=this.editable.field,n.spellcheck=!1,n.className="jsoneditor-field"):n.className="jsoneditor-readonly";var i;i=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",n.innerHTML=this._escapeHTML(i)}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;"array"==this.type?(o.innerHTML="["+r+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(o.innerHTML="{"+r+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(o.innerHTML=this._escapeHTML(this.value), +a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},i.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var n=e.dom.field;n&&(n.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},i.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&a.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},i.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},i.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),n=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(n);var i=document.createElement("tr");n.appendChild(i);var o=document.createElement("td");o.className="jsoneditor-tree",i.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="jsoneditor-tree",i.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="jsoneditor-tree",i.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",i.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},i.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,o=this,r=this._hasChilds();if(n!=i.drag&&n!=i.menu||("mouseover"==t?this.editor.highlighter.highlight(this):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=o.editor.highlighter;s.highlight(o),s.lock(),a.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){a.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}if("click"==t&&(n==i.expand||("view"===o.editor.options.mode||"form"===o.editor.options.mode)&&"DIV"===n.nodeName)&&r){var l=e.ctrlKey;this._onExpand(l)}"change"==t&&n==i.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var c=i.value;if(n==c)switch(t){case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(c.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":!e.ctrlKey&&this.editable.value||a.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){o._getDomValue(!0),o._updateDomValue()},1)}var d=i.field;if(n==d)switch(t){case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(d.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){o._getDomField(!0),o._updateDomField()},1)}var h=i.tree;if(n==h.parentNode&&"click"==t&&!e.hasMoved){var u=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(i.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(i.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var j=this._firstNode();j&&j.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(p);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(x.expanded){var N=x.getAppend();o=N?N.nextSibling:void 0}else{var k=x.getDom();o=k.nextSibling}o&&(n=i.getNodeFromTarget(o),r=o.nextSibling,T=i.getNodeFromTarget(r),n&&n instanceof l&&1!=x.parent.childs.length&&T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(i.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){k=w.getDom();var O=k.previousSibling;O&&(t=i.getNodeFromTarget(O),t&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)n=this._nextNode(),n&&(this.editor.deselect(!0),n.focus(i.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)n=this._nextNode(),n&&(h=this.editor.multiselection,h.start=h.start||this,h.end=n,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),n.focus("field")),v=!0;else if(g&&m&&y){n=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=n&&(n._nextNode()||n.parent.append);T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},i.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,n=t.parentNode,i=n.scrollTop;n.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(n.appendChild(t),n.scrollTop=i)},i.onRemove=function(e){if(!Array.isArray(e))return i.onRemove([e]);if(e&&e.length>0){var t=e[0],n=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();i.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:n,index:r,oldSelection:s,newSelection:a})}},i.onDuplicate=function(e){if(!Array.isArray(e))return i.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],n=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return n.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:n,oldSelection:r,newSelection:l})}},i.prototype._onInsertBefore=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onInsertAfter=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onAppend=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var n=this.editor.getSelection();this.changeType(e);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:n,newSelection:i})}},i.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,n="array"==this.type?"value":"field";this.hideChilds();var i=this.childs,r=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,i){return t*o(e[n],i[n])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:i,oldSort:r,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},i.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},i.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},i.blurNodes=function(e){if(!Array.isArray(e))return void i.blurNodes([e]);var t=e[0],n=t.parent,o=t.getIndex();n.childs[o+e.length]?n.childs[o+e.length].focus():n.childs[o-1]?n.childs[o-1].focus():n.focus()},i.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},i.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do n=n.previousSibling,e=i.getNodeFromTarget(n);while(n&&e instanceof l&&!e.isVisible())}return e},i.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t;do n=n.nextSibling,e=i.getNodeFromTarget(n);while(n&&e instanceof l&&!e.isVisible())}return e},i.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.firstChild;e=i.getNodeFromTarget(n)}return e},i.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var n=t.parentNode.lastChild;for(e=i.getNodeFromTarget(n);n&&e instanceof l&&!e.isVisible();)n=n.previousSibling,e=i.getNodeFromTarget(n)}return e},i.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},i.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},i.prototype._getElementName=function(e){var t=this.dom;for(var n in t)if(t.hasOwnProperty(n)&&t[n]==e)return n;return null},i.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},i.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},i.prototype.showContextMenu=function(e,t){var n=this,o=i.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:o.auto,click:function(){n._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:o.array,click:function(){n._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:o.object,click:function(){n._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:o.string,click:function(){n._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){n.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){n.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){n.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=n.parent.childs;n==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){n._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){i.onDuplicate(n)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){i.onRemove(n)}}))}var c=new r(s,{close:t});c.show(e,this.editor.content)},i.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},i.prototype._stringCast=function(e){var t=e.toLowerCase(),n=Number(e),i=parseFloat(e);return""==e?"":"null"==t?null:"true"==t?!0:"false"==t?!1:isNaN(n)||isNaN(i)?e:n},i.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),n=JSON.stringify(t),i=n.substring(1,n.length-1);return this.editor.options.escapeUnicode===!0&&(i=a.escapeUnicodeChars(i)),i},i.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e.trim())+'"',n=a.parse(t);return n.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},i.prototype._escapeJSON=function(e){for(var t="",n=0;nm)return-1;if(m>g)return 1}for(var v=0,y=Math.max(p.length,f.length);y>v;v++){if(i=!(p[v]||"").match(c)&&parseFloat(p[v])||p[v]||0,o=!(f[v]||"").match(c)&&parseFloat(f[v])||f[v]||0,isNaN(i)!==isNaN(o))return isNaN(i)?1:-1;if(typeof i!=typeof o&&(i+="",o+=""),o>i)return-1;if(i>o)return 1}return 0}},function(e,t,n){"use strict";function i(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var n=document.createElement("td");e.tdMenu=n;var i=document.createElement("button");i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",e.menu=i,n.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var n=e.text;n&&(n.innerHTML="(empty "+this.parent.type+")");var i=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&i.appendChild(e.tdDrag),e.tdMenu&&i.appendChild(e.tdMenu),i.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&i.removeChild(e.tdDrag),e.tdMenu&&i.removeChild(e.tdMenu),i.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,n){var i=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}]}],a=new r(s,{close:n});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,r=i.menu;if(n==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),o.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){o.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=n(4),r=n(7);e.exports=i},function(e,t,n){"use strict";function i(e,t,n,i){for(var r={code:{text:"Code",title:"Switch to code highlighter",click:function(){i("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){i("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){i("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){i("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){i("view")}}},s=[],a=0;a0){var r=n.length>l;if(r){n=n.slice(0,l);var a=this.validateSchema.errors.length-l;n.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+n.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var d=c.clientHeight;this.content.style.marginBottom=-d+"px",this.content.style.paddingBottom=d+"px"}if(this.aceEditor){var h=!1;this.aceEditor.resize(h)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,n){var i=n(!function(){var e=new Error('Cannot find module "brace"');throw e.code="MODULE_NOT_FOUND",e}());n(14),n(16),n(17),e.exports=i},function(e,t,n){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../range").Range,o=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),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],d={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,d.rangeCount!=e.multiSelect.rangeCount&&(d={rangeCount:e.multiSelect.rangeCount})),d[t]?i=d[t]:void(i=d[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return u(c,d,"{","}");if(p.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var f=l.substring(s.column,s.column+1);if("}"==f){var m=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var g="";p.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({ +row:s.row,column:s.column+1},"}");if(!v)return null;var y=this.$getIndent(o.getLine(v.row))}else{if(!g)return void p.clearMaybeInsertedClosing();var y=this.$getIndent(l)}var b=y+o.getTabString();return{text:"\n"+b+"\n"+y+g,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=i.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=i.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if('"'==o||"'"==o){h(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&n.getWrapBehavioursEnabled())return u(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),d=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),m=i.getTokenAt(l.row,l.column+1);if("\\"==d&&f&&/escape/.test(f.type))return null;var g,v=f&&/string|escape/.test(f.type),y=!m||/string|escape/.test(m.type);if(p==r)g=v!==y;else{if(v&&!y)return null;if(v&&y)return null;var b=i.$mode.tokenRe;b.lastIndex=0;var w=b.test(d);b.lastIndex=0;var x=b.test(d);if(w||x)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;g=!0}return{text:g?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),ace.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 i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=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)))};i.inherits(s,r),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 i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o=e.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,n);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],n,s);var a=e.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],n,s):e.getCommentFoldRange(n,s,-1)}}},this.getSectionRange=function(e,t){var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns?new o(s,i,d,t.length):void 0}}.call(s.prototype)}),ace.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/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,i){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(i+=n)}return i},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 d(["ace"],n(15),"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(h.prototype),t.Mode=h})},function(e,t){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n\x0B\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; +},function(e,t){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");i.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),d=function(e,t,n){var o=i.createElement("div");o.innerHTML=c,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var n=e.target||e.srcElement,i=n.getAttribute("action");i&&t[i]?t[i]():t.$searchBarKb.commands[i]&&t.$searchBarKb.commands[i].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),r=!o&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(d.prototype),t.SearchBox=d,t.Search=function(e,t){var n=e.searchBox||new d(e);n.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})}])}); //# sourceMappingURL=jsoneditor-minimalist.map \ No newline at end of file diff --git a/dist/jsoneditor.css b/dist/jsoneditor.css index 6ca358c..1a7baea 100644 --- a/dist/jsoneditor.css +++ b/dist/jsoneditor.css @@ -1,3 +1,28 @@ +/* reset styling (prevent conflicts with bootstrap, materialize.css, etc.) */ + +div.jsoneditor input { + height: auto; + border: inherit; +} + +div.jsoneditor input:focus { + border: none !important; + box-shadow: none !important; +} + +div.jsoneditor table { + border-collapse: collapse; + width: auto; +} + +div.jsoneditor td, +div.jsoneditor th { + padding: 0; + display: table-cell; + text-align: left; + vertical-align: inherit; + border-radius: inherit; +} div.jsoneditor-field, div.jsoneditor-value, div.jsoneditor-readonly { @@ -465,6 +490,7 @@ div.jsoneditor-contextmenu-root { div.jsoneditor-contextmenu { position: absolute; + box-sizing: content-box; z-index: 99999; } diff --git a/dist/jsoneditor.js b/dist/jsoneditor.js index 396d6f4..444469b 100644 --- a/dist/jsoneditor.js +++ b/dist/jsoneditor.js @@ -24,14 +24,14 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.3.0 - * @date 2016-04-06 + * @version 5.4.0 + * @date 2016-04-09 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) - define(factory); + define([], factory); else if(typeof exports === 'object') exports["JSONEditor"] = factory(); else @@ -83,17 +83,19 @@ return /******/ (function(modules) { // webpackBootstrap /* 0 */ /***/ function(module, exports, __webpack_require__) { + 'use strict'; + var Ajv; try { - Ajv = __webpack_require__(4); + Ajv = __webpack_require__(1); } catch (err) { // no problem... when we need Ajv we will throw a neat exception } - var treemode = __webpack_require__(1); - var textmode = __webpack_require__(2); - var util = __webpack_require__(3); + var treemode = __webpack_require__(51); + var textmode = __webpack_require__(62); + var util = __webpack_require__(54); /** * @constructor JSONEditor @@ -462,13 +464,7915 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { - var Highlighter = __webpack_require__(6); - var History = __webpack_require__(7); - var SearchBox = __webpack_require__(8); - var ContextMenu = __webpack_require__(9); - var Node = __webpack_require__(10); - var ModeSwitcher = __webpack_require__(5); - var util = __webpack_require__(3); + 'use strict'; + + var compileSchema = __webpack_require__(2) + , resolve = __webpack_require__(3) + , Cache = __webpack_require__(21) + , SchemaObject = __webpack_require__(16) + , stableStringify = __webpack_require__(12) + , formats = __webpack_require__(22) + , rules = __webpack_require__(23) + , v5 = __webpack_require__(43) + , util = __webpack_require__(11) + , async = __webpack_require__(17) + , co = __webpack_require__(19); + + module.exports = Ajv; + + Ajv.prototype.compileAsync = async.compile; + Ajv.prototype.addKeyword = __webpack_require__(49); + Ajv.ValidationError = __webpack_require__(20); + + var META_SCHEMA_ID = 'http://json-schema.org/draft-04/schema'; + var SCHEMA_URI_FORMAT = /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i; + function SCHEMA_URI_FORMAT_FUNC(str) { + return SCHEMA_URI_FORMAT.test(str); + } + + var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ]; + + /** + * Creates validator instance. + * Usage: `Ajv(opts)` + * @param {Object} opts optional options + * @return {Object} ajv instance + */ + function Ajv(opts) { + if (!(this instanceof Ajv)) return new Ajv(opts); + var self = this; + + opts = this._opts = util.copy(opts) || {}; + this._schemas = {}; + this._refs = {}; + this._formats = formats(opts.format); + this._cache = opts.cache || new Cache; + this._loadingSchemas = {}; + this.RULES = rules(); + + // this is done on purpose, so that methods are bound to the instance + // (without using bind) so that they can be used without the instance + this.validate = validate; + this.compile = compile; + this.addSchema = addSchema; + this.addMetaSchema = addMetaSchema; + this.validateSchema = validateSchema; + this.getSchema = getSchema; + this.removeSchema = removeSchema; + this.addFormat = addFormat; + this.errorsText = errorsText; + + this._addSchema = _addSchema; + this._compile = _compile; + + opts.loopRequired = opts.loopRequired || Infinity; + if (opts.async || opts.transpile) async.setup(opts); + if (opts.beautify === true) opts.beautify = { indent_size: 2 }; + if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; + this._metaOpts = getMetaSchemaOptions(); + + addInitialSchemas(); + if (opts.formats) addInitialFormats(); + if (opts.v5) v5.enable(this); + if (typeof opts.meta == 'object') addMetaSchema(opts.meta); + + + /** + * Validate data using schema + * Schema will be compiled and cached (using serialized JSON as key. [json-stable-stringify](https://github.com/substack/json-stable-stringify) is used to serialize. + * @param {String|Object} schemaKeyRef key, ref or schema object + * @param {Any} data to be validated + * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). + */ + function validate(schemaKeyRef, data) { + var v; + if (typeof schemaKeyRef == 'string') { + v = getSchema(schemaKeyRef); + if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); + } else { + var schemaObj = _addSchema(schemaKeyRef); + v = schemaObj.validate || _compile(schemaObj); + } + + var valid = v(data); + if (v.async) return self._opts.async == '*' ? co(valid) : valid; + self.errors = v.errors; + return valid; + } + + + /** + * Create validating function for passed schema. + * @param {Object} schema schema object + * @return {Function} validating function + */ + function compile(schema) { + var schemaObj = _addSchema(schema); + return schemaObj.validate || _compile(schemaObj); + } + + + /** + * Adds schema to the instance. + * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. + * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. + * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. + * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. + */ + function addSchema(schema, key, _skipValidation, _meta) { + if (Array.isArray(schema)){ + for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. + * @param {Object} options optional options with properties `separator` and `dataVar`. + * @return {String} human readable string with all errors descriptions + */ + function errorsText(errors, options) { + errors = errors || self.errors; + if (!errors) return 'No errors'; + options = options || {}; + var separator = options.separator === undefined ? ', ' : options.separator; + var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + + var text = ''; + for (var i=0; i', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = __webpack_require__(7); + + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; + } + + Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a puny coded representation of "domain". + // It only converts the part of the domain name that + // has non ASCII characters. I.e. it dosent matter if + // you call it with a domain that already is in ASCII. + var domainArray = this.hostname.split('.'); + var newOut = []; + for (var i = 0; i < domainArray.length; ++i) { + var s = domainArray[i]; + newOut.push(s.match(/[^A-Za-z0-9_-]/) ? + 'xn--' + punycode.encode(s) : s); + } + this.hostname = newOut.join('.'); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; + }; + + // format a parsed object into a url string + function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); + } + + Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; + }; + + function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); + } + + Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); + }; + + function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); + } + + Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + Object.keys(this).forEach(function(k) { + result[k] = this[k]; + }, this); + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + Object.keys(relative).forEach(function(k) { + if (k !== 'protocol') + result[k] = relative[k]; + }); + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + Object.keys(relative).forEach(function(k) { + result[k] = relative[k]; + }); + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host) && (last === '.' || last === '..') || + last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last == '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + }; + + Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; + }; + + function isString(arg) { + return typeof arg === "string"; + } + + function isObject(arg) { + return typeof arg === 'object' && arg !== null; + } + + function isNull(arg) { + return arg === null; + } + function isNullOrUndefined(arg) { + return arg == null; + } + + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */ + ;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * http://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.3.2', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return punycode; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { // in Rhino or a web browser + root.punycode = punycode; + } + + }(this)); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)(module), (function() { return this; }()))) + +/***/ }, +/* 6 */ +/***/ function(module, exports) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + exports.decode = exports.parse = __webpack_require__(8); + exports.encode = exports.stringify = __webpack_require__(9); + + +/***/ }, +/* 8 */ +/***/ function(module, exports) { + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + // If obj.hasOwnProperty has been overridden, then calling + // obj.hasOwnProperty(prop) will break. + // See: https://github.com/joyent/node/issues/1707 + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + + module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; + }; + + +/***/ }, +/* 9 */ +/***/ function(module, exports) { + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } + }; + + module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); + }; + + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + 'use strict'; + + module.exports = function equal(a, b) { + if (a === b) return true; + + var arrA = Array.isArray(a) + , arrB = Array.isArray(b) + , i; + + if (arrA && arrB) { + if (a.length != b.length) return false; + for (i = 0; i < a.length; i++) + if (!equal(a[i], b[i])) return false; + return true; + } + + if (arrA != arrB) return false; + + if (a && b && typeof a === 'object' && typeof b === 'object') { + var keys = Object.keys(a); + + if (keys.length !== Object.keys(b).length) return false; + + for (i = 0; i < keys.length; i++) + if (b[keys[i]] === undefined) return false; + + for (i = 0; i < keys.length; i++) + if(!equal(a[keys[i]], b[keys[i]])) return false; + + return true; + } + + return false; + }; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + module.exports = { + copy: copy, + checkDataType: checkDataType, + checkDataTypes: checkDataTypes, + coerceToTypes: coerceToTypes, + toHash: toHash, + getProperty: getProperty, + escapeQuotes: escapeQuotes, + ucs2length: ucs2length, + varOccurences: varOccurences, + varReplace: varReplace, + cleanUpCode: cleanUpCode, + cleanUpVarErrors: cleanUpVarErrors, + schemaHasRules: schemaHasRules, + stableStringify: __webpack_require__(12), + toQuotedString: toQuotedString, + getPathExpr: getPathExpr, + getPath: getPath, + getData: getData, + unescapeFragment: unescapeFragment, + escapeFragment: escapeFragment, + escapeJsonPointer: escapeJsonPointer + }; + + + function copy(o, to) { + to = to || {}; + for (var key in o) to[key] = o[key]; + return to; + } + + + function checkDataType(dataType, data, negate) { + var EQUAL = negate ? ' !== ' : ' === ' + , AND = negate ? ' || ' : ' && ' + , OK = negate ? '!' : '' + , NOT = negate ? '' : '!'; + switch (dataType) { + case 'null': return data + EQUAL + 'null'; + case 'array': return OK + 'Array.isArray(' + data + ')'; + case 'object': return '(' + OK + data + AND + + 'typeof ' + data + EQUAL + '"object"' + AND + + NOT + 'Array.isArray(' + data + '))'; + case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + + NOT + '(' + data + ' % 1))'; + default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; + } + } + + + function checkDataTypes(dataTypes, data) { + switch (dataTypes.length) { + case 1: return checkDataType(dataTypes[0], data, true); + default: + var code = ''; + var types = toHash(dataTypes); + if (types.array && types.object) { + code = types.null ? '(': '(!' + data + ' || '; + code += 'typeof ' + data + ' !== "object")'; + delete types.null; + delete types.array; + delete types.object; + } + if (types.number) delete types.integer; + for (var t in types) + code += (code ? ' && ' : '' ) + checkDataType(t, data, true); + + return code; + } + } + + + var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); + function coerceToTypes(dataTypes) { + if (Array.isArray(dataTypes)) { + var types = []; + for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } + } + return length; + } + + + function varOccurences(str, dataVar) { + dataVar += '[^0-9]'; + var matches = str.match(new RegExp(dataVar, 'g')); + return matches ? matches.length : 0; + } + + + function varReplace(str, dataVar, expr) { + dataVar += '([^0-9])'; + expr = expr.replace(/\$/g, '$$$$'); + return str.replace(new RegExp(dataVar, 'g'), expr + '$1'); + } + + + var EMPTY_ELSE = /else\s*{\s*}/g + , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g + , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g; + function cleanUpCode(out) { + return out.replace(EMPTY_ELSE, '') + .replace(EMPTY_IF_NO_ELSE, '') + .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))'); + } + + + var ERRORS_REGEXP = /[^v\.]errors/g + , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g + , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g + , RETURN_VALID = 'return errors === 0;' + , RETURN_TRUE = 'validate.errors = null; return true;' + , RETURN_ASYNC = /if \(errors === 0\) return true;\s*else throw new ValidationError\(vErrors\);/ + , RETURN_TRUE_ASYNC = 'return true;'; + + function cleanUpVarErrors(out, async) { + var matches = out.match(ERRORS_REGEXP); + if (!matches || matches.length !== 2) return out; + return async + ? out.replace(REMOVE_ERRORS_ASYNC, '') + .replace(RETURN_ASYNC, RETURN_TRUE_ASYNC) + : out.replace(REMOVE_ERRORS, '') + .replace(RETURN_VALID, RETURN_TRUE); + } + + + function schemaHasRules(schema, rules) { + for (var key in schema) if (rules[key]) return true; + } + + + function toQuotedString(str) { + return '\'' + escapeQuotes(str) + '\''; + } + + + function getPathExpr(currentPath, expr, jsonPointers, isNumber) { + var path = jsonPointers // false by default + ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')') + : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\''); + return joinPaths(currentPath, path); + } + + + function getPath(currentPath, prop, jsonPointers) { + var path = jsonPointers // false by default + ? toQuotedString('/' + escapeJsonPointer(prop)) + : toQuotedString(getProperty(prop)); + return joinPaths(currentPath, path); + } + + + var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; + function getData($data, lvl, paths) { + var matches = $data.match(RELATIVE_JSON_POINTER); + if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data); + var up = +matches[1]; + var jsonPointer = matches[2]; + if (jsonPointer == '#') { + if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } + + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + var data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; + + var expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i= '0' && ch <= '9') { + string += ch; + next(); + } + if (ch === '.') { + string += '.'; + while (next() && ch >= '0' && ch <= '9') { + string += ch; + } + } + if (ch === 'e' || ch === 'E') { + string += ch; + next(); + if (ch === '-' || ch === '+') { + string += ch; + next(); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + } + number = +string; + if (!isFinite(number)) { + error("Bad number"); + } else { + return number; + } + }, + + string = function () { + // Parse a string value. + var hex, + i, + string = '', + uffff; + + // When parsing for string values, we must look for " and \ characters. + if (ch === '"') { + while (next()) { + if (ch === '"') { + next(); + return string; + } else if (ch === '\\') { + next(); + if (ch === 'u') { + uffff = 0; + for (i = 0; i < 4; i += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === 'string') { + string += escapee[ch]; + } else { + break; + } + } else { + string += ch; + } + } + } + error("Bad string"); + }, + + white = function () { + + // Skip whitespace. + + while (ch && ch <= ' ') { + next(); + } + }, + + word = function () { + + // true, false, or null. + + switch (ch) { + case 't': + next('t'); + next('r'); + next('u'); + next('e'); + return true; + case 'f': + next('f'); + next('a'); + next('l'); + next('s'); + next('e'); + return false; + case 'n': + next('n'); + next('u'); + next('l'); + next('l'); + return null; + } + error("Unexpected '" + ch + "'"); + }, + + value, // Place holder for the value function. + + array = function () { + + // Parse an array value. + + var array = []; + + if (ch === '[') { + next('['); + white(); + if (ch === ']') { + next(']'); + return array; // empty array + } + while (ch) { + array.push(value()); + white(); + if (ch === ']') { + next(']'); + return array; + } + next(','); + white(); + } + } + error("Bad array"); + }, + + object = function () { + + // Parse an object value. + + var key, + object = {}; + + if (ch === '{') { + next('{'); + white(); + if (ch === '}') { + next('}'); + return object; // empty object + } + while (ch) { + key = string(); + white(); + next(':'); + if (Object.hasOwnProperty.call(object, key)) { + error('Duplicate key "' + key + '"'); + } + object[key] = value(); + white(); + if (ch === '}') { + next('}'); + return object; + } + next(','); + white(); + } + } + error("Bad object"); + }; + + value = function () { + + // Parse a JSON value. It could be an object, an array, a string, a number, + // or a word. + + white(); + switch (ch) { + case '{': + return object(); + case '[': + return array(); + case '"': + return string(); + case '-': + return number(); + default: + return ch >= '0' && ch <= '9' ? number() : word(); + } + }; + + // Return the json_parse function. It will have access to all of the above + // functions and variables. + + module.exports = function (source, reviver) { + var result; + + text = source; + at = 0; + ch = ' '; + result = value(); + white(); + if (ch) { + error("Syntax error"); + } + + // If there is a reviver function, we recursively walk the new structure, + // passing each name/value pair to the reviver function for possible + // transformation, starting with a temporary root object that holds the result + // in an empty key. If there is not a reviver function, we simply return the + // result. + + return typeof reviver === 'function' ? (function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + }({'': result}, '')) : result; + }; + + +/***/ }, +/* 15 */ +/***/ function(module, exports) { + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + function quote(string) { + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + function str(key, holder) { + // Produce a string from holder[key]. + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + + // If the value has a toJSON method, call it to obtain a replacement value. + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + + // What happens next depends on the value's type. + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + // JSON numbers must be finite. Encode non-finite numbers as null. + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. + return String(value); + + case 'object': + if (!value) return 'null'; + gap += indent; + partial = []; + + // Array.isArray + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + + // Join all of the elements together, separated with commas, and + // wrap them in brackets. + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + + // If the replacer is an array, use it to select the members to be + // stringified. + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + else { + // Otherwise, iterate through all of the keys in the object. + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + + module.exports = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + + // If the space parameter is a number, make an indent string containing that + // many spaces. + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } + // If the space parameter is a string, it will be used as the indent string. + else if (typeof space === 'string') { + indent = space; + } + + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. + rep = replacer; + if (replacer && typeof replacer !== 'function' + && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. + return str('', {'': value}); + }; + + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(11); + + module.exports = SchemaObject; + + function SchemaObject(obj) { + util.copy(obj, this); + } + + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = { + setup: setupAsync, + compile: compileAsync + }; + + + var util = __webpack_require__(11); + + var ASYNC = { + '*': checkGenerators, + 'co*': checkGenerators, + 'es7': checkAsyncFunction + }; + + var TRANSPILE = { + 'nodent': getNodent, + 'regenerator': getRegenerator + }; + + var MODES = [ + { async: 'co*' }, + { async: 'es7', transpile: 'nodent' }, + { async: 'co*', transpile: 'regenerator' } + ]; + + + var regenerator, nodent; + + + function setupAsync(opts, required) { + if (required !== false) required = true; + var async = opts.async + , transpile = opts.transpile + , check; + + switch (typeof transpile) { + case 'string': + var get = TRANSPILE[transpile]; + if (!get) throw new Error('bad transpiler: ' + transpile); + return (opts._transpileFunc = get(opts, required)); + case 'undefined': + case 'boolean': + if (typeof async == 'string') { + check = ASYNC[async]; + if (!check) throw new Error('bad async mode: ' + async); + return (opts.transpile = check(opts, required)); + } + + for (var i=0; i 2) res = slice.call(arguments, 1); + resolve(res); + }); + }); + } + + /** + * Convert an array of "yieldables" to a promise. + * Uses `Promise.all()` internally. + * + * @param {Array} obj + * @return {Promise} + * @api private + */ + + function arrayToPromise(obj) { + return Promise.all(obj.map(toPromise, this)); + } + + /** + * Convert an object of "yieldables" to a promise. + * Uses `Promise.all()` internally. + * + * @param {Object} obj + * @return {Promise} + * @api private + */ + + function objectToPromise(obj){ + var results = new obj.constructor(); + var keys = Object.keys(obj); + var promises = []; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var promise = toPromise.call(this, obj[key]); + if (promise && isPromise(promise)) defer(promise, key); + else results[key] = obj[key]; + } + return Promise.all(promises).then(function () { + return results; + }); + + function defer(promise, key) { + // predefine the key in the result + results[key] = undefined; + promises.push(promise.then(function (res) { + results[key] = res; + })); + } + } + + /** + * Check if `obj` is a promise. + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ + + function isPromise(obj) { + return 'function' == typeof obj.then; + } + + /** + * Check if `obj` is a generator. + * + * @param {Mixed} obj + * @return {Boolean} + * @api private + */ + + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj.throw; + } + + /** + * Check if `obj` is a generator function. + * + * @param {Mixed} obj + * @return {Boolean} + * @api private + */ + function isGeneratorFunction(obj) { + var constructor = obj.constructor; + if (!constructor) return false; + if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true; + return isGenerator(constructor.prototype); + } + + /** + * Check for plain object. + * + * @param {Mixed} val + * @return {Boolean} + * @api private + */ + + function isObject(val) { + return Object == val.constructor; + } + + +/***/ }, +/* 20 */ +/***/ function(module, exports) { + + 'use strict'; + + module.exports = ValidationError; + + + function ValidationError(errors) { + this.message = 'validation failed'; + this.errors = errors; + this.ajv = this.validation = true; + } + + + ValidationError.prototype = Object.create(Error.prototype); + ValidationError.prototype.constructor = ValidationError; + + +/***/ }, +/* 21 */ +/***/ function(module, exports) { + + 'use strict'; + + + var Cache = module.exports = function Cache() { + this._cache = {}; + }; + + + Cache.prototype.put = function Cache_put(key, value) { + this._cache[key] = value; + }; + + + Cache.prototype.get = function Cache_get(key) { + return this._cache[key]; + }; + + + Cache.prototype.del = function Cache_del(key) { + delete this._cache[key]; + }; + + + Cache.prototype.clear = function Cache_clear() { + this._cache = {}; + }; + + +/***/ }, +/* 22 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(11); + + var DATE = /^\d\d\d\d-(\d\d)-(\d\d)$/; + var DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31]; + var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i; + var HOSTNAME = /^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i; + var URI = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i; + var UUID = /^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; + var JSON_POINTER = /^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i; + var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/; + + + module.exports = formats; + + function formats(mode) { + mode = mode == 'full' ? 'full' : 'fast'; + var formatDefs = util.copy(formats[mode]); + for (var fName in formats.compare) { + formatDefs[fName] = { + validate: formatDefs[fName], + compare: formats.compare[fName] + }; + } + return formatDefs; + } + + + formats.fast = { + // date: http://tools.ietf.org/html/rfc3339#section-5.6 + date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, + // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 + time: /^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, + 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i, + // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js + uri: /^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i, + // email (sources from jsen validator): + // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 + // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') + email: /^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, + hostname: HOSTNAME, + // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + // uuid: http://tools.ietf.org/html/rfc4122 + uuid: UUID, + // JSON-pointer: https://tools.ietf.org/html/rfc6901 + // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A + 'json-pointer': JSON_POINTER, + // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 + 'relative-json-pointer': RELATIVE_JSON_POINTER + }; + + + formats.full = { + date: date, + time: time, + 'date-time': date_time, + uri: uri, + email: /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, + hostname: hostname, + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + uuid: UUID, + 'json-pointer': JSON_POINTER, + 'relative-json-pointer': RELATIVE_JSON_POINTER + }; + + + formats.compare = { + date: compareDate, + time: compareTime, + 'date-time': compareDateTime + }; + + + function date(str) { + // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 + var matches = str.match(DATE); + if (!matches) return false; + + var month = +matches[1]; + var day = +matches[2]; + return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; + } + + + function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; + + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); + } + + + var DATE_TIME_SEPARATOR = /t|\s/i; + function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return date(dateTime[0]) && time(dateTime[1], true); + } + + + function hostname(str) { + // http://tools.ietf.org/html/rfc1034#section-3.5 + return str.length <= 255 && HOSTNAME.test(str); + } + + + var NOT_URI_FRAGMENT = /\/|\:/; + function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); + } + + + function regex(str) { + try { + new RegExp(str); + return true; + } catch(e) { + return false; + } + } + + + function compareDate(d1, d2) { + if (!(d1 && d2)) return; + if (d1 > d2) return 1; + if (d1 < d2) return -1; + if (d1 === d2) return 0; + } + + + function compareTime(t1, t2) { + if (!(t1 && t2)) return; + t1 = t1.match(TIME); + t2 = t2.match(TIME); + if (!(t1 && t2)) return; + t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); + t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); + if (t1 > t2) return 1; + if (t1 < t2) return -1; + if (t1 === t2) return 0; + } + + + function compareDateTime(dt1, dt2) { + if (!(dt1 && dt2)) return; + dt1 = dt1.split(DATE_TIME_SEPARATOR); + dt2 = dt2.split(DATE_TIME_SEPARATOR); + var res = compareDate(dt1[0], dt2[0]); + if (res === undefined) return; + return res || compareTime(dt1[1], dt2[1]); + } + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var ruleModules = __webpack_require__(24) + , util = __webpack_require__(11); + + module.exports = function rules() { + var RULES = [ + { type: 'number', + rules: [ 'maximum', 'minimum', 'multipleOf'] }, + { type: 'string', + rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, + { type: 'array', + rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] }, + { type: 'object', + rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] }, + { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } + ]; + + RULES.all = [ 'type', 'additionalProperties', 'patternProperties' ]; + RULES.keywords = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ]; + RULES.types = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; + + RULES.forEach(function (group) { + group.rules = group.rules.map(function (keyword) { + RULES.all.push(keyword); + return { + keyword: keyword, + code: ruleModules[keyword] + }; + }); + }); + + RULES.keywords = util.toHash(RULES.all.concat(RULES.keywords)); + RULES.all = util.toHash(RULES.all); + RULES.types = util.toHash(RULES.types); + + return RULES; + }; + + +/***/ }, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + //all requires must be explicit because browserify won't work with dynamic requires + module.exports = { + '$ref': __webpack_require__(25), + allOf: __webpack_require__(26), + anyOf: __webpack_require__(27), + dependencies: __webpack_require__(28), + enum: __webpack_require__(29), + format: __webpack_require__(30), + items: __webpack_require__(31), + maximum: __webpack_require__(32), + minimum: __webpack_require__(32), + maxItems: __webpack_require__(33), + minItems: __webpack_require__(33), + maxLength: __webpack_require__(34), + minLength: __webpack_require__(34), + maxProperties: __webpack_require__(35), + minProperties: __webpack_require__(35), + multipleOf: __webpack_require__(36), + not: __webpack_require__(37), + oneOf: __webpack_require__(38), + pattern: __webpack_require__(39), + properties: __webpack_require__(40), + required: __webpack_require__(41), + uniqueItems: __webpack_require__(42), + validate: __webpack_require__(18) + }; + + +/***/ }, +/* 25 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_ref(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $async, $refCode; + if ($schema == '#' || $schema == '#/') { + if (it.isRoot) { + $async = it.async; + $refCode = 'validate'; + } else { + $async = it.root.schema.$async === true; + $refCode = 'root.refVal[0]'; + } + } else { + var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); + if ($refVal === undefined) { + var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; + if (it.opts.missingRefs == 'fail') { + console.log($message); + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; + } + if (it.opts.verbose) { + out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + if ($breakOnError) { + out += ' if (false) { '; + } + } else if (it.opts.missingRefs == 'ignore') { + console.log($message); + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + var $error = new Error($message); + $error.missingRef = it.resolve.url(it.baseId, $schema); + $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); + throw $error; + } + } else if ($refVal.inline) { + var $it = it.util.copy(it); + $it.level++; + $it.schema = $refVal.schema; + $it.schemaPath = ''; + $it.errSchemaPath = $schema; + var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); + out += ' ' + ($code) + ' '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + } + } else { + $async = $refVal.async; + $refCode = $refVal.code; + } + } + if ($refCode) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + if (it.opts.passContext) { + out += ' ' + ($refCode) + '.call(this, '; + } else { + out += ' ' + ($refCode) + '( '; + } + out += ' ' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + if ($dataLvl) { + out += ' , data' + (($dataLvl - 1) || '') + ' , ' + (it.dataPathArr[$dataLvl]) + ' '; + } else { + out += ' , parentData , parentDataProperty '; + } + out += ') '; + var __callValidate = out; + out = $$outStack.pop(); + if ($async) { + if (!it.async) throw new Error('async schema referenced by sync schema'); + out += ' try { '; + if ($breakOnError) { + out += 'var ' + ($valid) + ' ='; + } + out += ' ' + (it.yieldAwait) + ' ' + (__callValidate) + '; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + } + } else { + out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } + } + return out; + } + + +/***/ }, +/* 26 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_allOf(it, $keyword) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces.slice(0, -1)); + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 27 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_anyOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $noEmptySchema = $schema.every(function($sch) { + return it.util.schemaHasRules($sch, it.RULES.all); + }); + if ($noEmptySchema) { + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + +/***/ }, +/* 28 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_dependencies(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $schemaDeps = {}, + $propertyDeps = {}; + for ($property in $schema) { + var $sch = $schema[$property]; + var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; + $deps[$property] = $sch; + } + out += 'var ' + ($errs) + ' = errors;'; + var $currentErrorPath = it.errorPath; + out += 'var missing' + ($lvl) + ';'; + for (var $property in $propertyDeps) { + $deps = $propertyDeps[$property]; + out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( '; + var arr1 = $deps; + if (arr1) { + var _$property, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + _$property = arr1[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty(_$property); + out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; + } + } + out += ')) { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + it.errorPath = $currentErrorPath; + for (var $property in $schemaDeps) { + var $sch = $schemaDeps[$property]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\'' + ($property) + '\'] !== undefined) { '; + $it.schema = $sch; + $it.schemaPath = $schemaPath + it.util.getProperty($property); + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); + out += ' ' + (it.validate($it)) + ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 29 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_enum(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $i = 'i' + $lvl; + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ';'; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); + var $passData = $data + '[i' + $lvl + ']'; + $it.dataPathArr[$dataNxt] = 'i' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } else if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); + var $passData = $data + '[i' + $lvl + ']'; + $it.dataPathArr[$dataNxt] = 'i' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 32 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limit(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $isMax = $keyword == 'maximum', + $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $notOp = $isMax ? '>' : '<'; + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp); + if ($exclusive) { + out += '='; + } + out += ' ' + ($schemaValue) + ') {'; + } + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schema) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 33 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limitItems(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 34 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limitLength(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 35 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limitProperties(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 36 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_multipleOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schema) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 37 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_not(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + var $allErrorsOption; + if ($it.opts.allErrors) { + $allErrorsOption = $it.opts.allErrors; + $it.opts.allErrors = false; + } + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (valid' + ($it.level) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; + } + + +/***/ }, +/* 38 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_oneOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + } else { + out += ' var valid' + ($it.level) + ' = true; '; + } + if ($i) { + out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; + } + + +/***/ }, +/* 39 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_pattern(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 40 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_properties(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt; + var $schemaKeys = Object.keys($schema || {}), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional; + var $required = it.schema.required; + if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); + if (it.opts.v5) { + var $pgProperties = it.schema.patternGroups || {}, + $pgPropertyKeys = Object.keys($pgProperties); + } + out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;'; + if ($checkAdditional) { + out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { '; + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 5) { + out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') '; + } + } + } + if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { + var arr3 = $pgPropertyKeys; + if (arr3) { + var $pgProperty, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $pgProperty = arr3[$i += 1]; + out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + key' + $lvl + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; + } else { + out += ' valid' + ($it.level) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have additional properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr4 = $schemaKeys; + if (arr4) { + var $propertyKey, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $propertyKey = arr4[i4 += 1]; + var $sch = $schema[$propertyKey]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + var arr5 = $pPropertyKeys; + if (arr5) { + var $pProperty, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $pProperty = arr5[i5 += 1]; + var $sch = $pProperties[$pProperty]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else valid' + ($it.level) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (it.opts.v5) { + var arr6 = $pgPropertyKeys; + if (arr6) { + var $pgProperty, i6 = -1, + l6 = arr6.length - 1; + while (i6 < l6) { + $pgProperty = arr6[i6 += 1]; + var $pgSchema = $pgProperties[$pgProperty], + $sch = $pgSchema.schema; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; + $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; + out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else valid' + ($it.level) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + var $pgMin = $pgSchema.minimum, + $pgMax = $pgSchema.maximum; + if ($pgMin !== undefined || $pgMax !== undefined) { + out += ' var ' + ($valid) + ' = true; '; + var $currErrSchemaPath = $errSchemaPath; + if ($pgMin !== undefined) { + var $limit = $pgMin, + $reason = 'minimum', + $moreOrLess = 'less'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($pgMax !== undefined) { + out += ' else '; + } + } + if ($pgMax !== undefined) { + var $limit = $pgMax, + $reason = 'maximum', + $moreOrLess = 'more'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 41 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_required(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if (!$isData) { + if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { + var $required = []; + var arr1 = $schema; + if (arr1) { + var $property, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $property = arr1[i1 += 1]; + var $propertySch = it.schema.properties[$property]; + if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { + $required[$required.length] = $property; + } + } + } + } else { + var $required = $schema; + } + } + if ($isData || $required.length) { + var $currentErrorPath = it.errorPath, + $loopRequired = $isData || $required.length >= it.opts.loopRequired; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var _$property, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + _$property = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty(_$property); + out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $property, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $property = arr3[$i += 1]; + var $prop = it.util.getProperty($property), + $missingProperty = it.util.escapeQuotes($property); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers); + } + out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; + } + + +/***/ }, +/* 42 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_uniqueItems(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json'; + + module.exports = { + enable: enableV5, + META_SCHEMA_ID: META_SCHEMA_ID + }; + + + function enableV5(ajv) { + var inlineFunctions = { + 'switch': __webpack_require__(44), + 'constant': __webpack_require__(45), + '_formatLimit': __webpack_require__(46), + 'patternRequired': __webpack_require__(47) + }; + + if (ajv._opts.meta !== false) { + var metaSchema = __webpack_require__(48); + ajv.addMetaSchema(metaSchema, META_SCHEMA_ID); + } + _addKeyword('constant'); + ajv.addKeyword('contains', { type: 'array', macro: containsMacro }); + + _addKeyword('formatMaximum', 'string', inlineFunctions._formatLimit); + _addKeyword('formatMinimum', 'string', inlineFunctions._formatLimit); + ajv.addKeyword('exclusiveFormatMaximum'); + ajv.addKeyword('exclusiveFormatMinimum'); + + ajv.addKeyword('patternGroups'); // implemented in properties.jst + _addKeyword('patternRequired', 'object'); + _addKeyword('switch'); + + + function _addKeyword(keyword, types, inlineFunc) { + var definition = { + inline: inlineFunc || inlineFunctions[keyword], + statements: true, + errors: 'full' + }; + if (types) definition.type = types; + ajv.addKeyword(keyword, definition); + } + } + + + function containsMacro(schema) { + return { + not: { items: { not: schema } } + }; + } + + +/***/ }, +/* 44 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_switch(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $ifPassed = 'ifPassed' + it.level, + $shouldContinue; + out += 'var ' + ($ifPassed) + ';'; + var arr1 = $schema; + if (arr1) { + var $sch, $caseIndex = -1, + l1 = arr1.length - 1; + while ($caseIndex < l1) { + $sch = arr1[$caseIndex += 1]; + if ($caseIndex && !$shouldContinue) { + out += ' if (!' + ($ifPassed) + ') { '; + $closingBraces += '}'; + } + if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + $it.schema = $sch.if; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; + } else { + out += ' ' + ($ifPassed) + ' = true; '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + } + } + $shouldContinue = $sch.continue + } + } + out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; '; + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 45 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_constant(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'constant') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to constant\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + return out; + } + + +/***/ }, +/* 46 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__formatLimit(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + out += 'var ' + ($valid) + ' = undefined;'; + if (it.opts.format === false) { + out += ' ' + ($valid) + ' = true; '; + return out; + } + var $schemaFormat = it.schema.format, + $isDataFormat = it.opts.v5 && $schemaFormat.$data, + $closingBraces = ''; + if ($isDataFormat) { + var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr), + $format = 'format' + $lvl, + $compare = 'compare' + $lvl; + out += ' var ' + ($format) + ' = formats[' + ($schemaValueFormat) + '] , ' + ($compare) + ' = ' + ($format) + ' && ' + ($format) + '.compare;'; + } else { + var $format = it.formats[$schemaFormat]; + if (!($format && $format.compare)) { + out += ' ' + ($valid) + ' = true; '; + return out; + } + var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare'; + } + var $isMax = $keyword == 'formatMaximum', + $exclusiveKeyword = 'exclusiveFormat' + ($isMax ? 'Maximum' : 'Minimum'), + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $result = 'result' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveFormatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); + if (!$exclusive) { + out += '='; + } + out += ' 0;'; + } + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '}'; + return out; + } + + +/***/ }, +/* 47 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_patternRequired(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $key = 'key' + $lvl, + $matched = 'patternMatched' + $lvl, + $closingBraces = ''; + out += 'var ' + ($valid) + ' = true;'; + var arr1 = $schema; + if (arr1) { + var $pProperty, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $pProperty = arr1[i1 += 1]; + out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } '; + var $missingPattern = it.util.escapeQuotes($pProperty); + out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingPattern: \'' + ($missingPattern) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have property matching pattern \\\'' + ($missingPattern) + '\\\'\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + } + out += '' + ($closingBraces); + return out; + } + + +/***/ }, +/* 48 */ +/***/ function(module, exports) { + + module.exports = { + "id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Core schema meta-schema (v5 proposals)", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#" + } + }, + "positiveInteger": { + "type": "integer", + "minimum": 0 + }, + "positiveIntegerDefault0": { + "allOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "default": 0 + } + ] + }, + "simpleTypes": { + "enum": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string" + ] + }, + "stringArray": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1, + "uniqueItems": true + }, + "$data": { + "type": "object", + "required": [ + "$data" + ], + "properties": { + "$data": { + "type": "string", + "format": "relative-json-pointer" + } + }, + "additionalProperties": false + } + }, + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "$schema": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": {}, + "multipleOf": { + "anyOf": [ + { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "maximum": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "exclusiveMaximum": { + "anyOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "minimum": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "exclusiveMinimum": { + "anyOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "maxLength": { + "anyOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "minLength": { + "anyOf": [ + { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "pattern": { + "anyOf": [ + { + "type": "string", + "format": "regex" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "additionalItems": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#" + }, + { + "$ref": "#/definitions/$data" + } + ], + "default": {} + }, + "items": { + "anyOf": [ + { + "$ref": "#" + }, + { + "$ref": "#/definitions/schemaArray" + } + ], + "default": {} + }, + "maxItems": { + "anyOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "minItems": { + "anyOf": [ + { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "uniqueItems": { + "anyOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "maxProperties": { + "anyOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "minProperties": { + "anyOf": [ + { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "required": { + "anyOf": [ + { + "$ref": "#/definitions/stringArray" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#" + }, + { + "$ref": "#/definitions/$data" + } + ], + "default": {} + }, + "definitions": { + "type": "object", + "additionalProperties": { + "$ref": "#" + }, + "default": {} + }, + "properties": { + "type": "object", + "additionalProperties": { + "$ref": "#" + }, + "default": {} + }, + "patternProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#" + }, + "default": {} + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#" + }, + { + "$ref": "#/definitions/stringArray" + } + ] + } + }, + "enum": { + "anyOf": [ + { + "type": "array", + "minItems": 1, + "uniqueItems": true + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/simpleTypes" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/simpleTypes" + }, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "allOf": { + "$ref": "#/definitions/schemaArray" + }, + "anyOf": { + "$ref": "#/definitions/schemaArray" + }, + "oneOf": { + "$ref": "#/definitions/schemaArray" + }, + "not": { + "$ref": "#" + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "formatMaximum": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "formatMinimum": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "exclusiveFormatMaximum": { + "anyOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "exclusiveFormatMinimum": { + "anyOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "constant": { + "anyOf": [ + {}, + { + "$ref": "#/definitions/$data" + } + ] + }, + "contains": { + "$ref": "#" + }, + "patternGroups": { + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "schema" + ], + "properties": { + "maximum": { + "anyOf": [ + { + "$ref": "#/definitions/positiveInteger" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "minimum": { + "anyOf": [ + { + "$ref": "#/definitions/positiveIntegerDefault0" + }, + { + "$ref": "#/definitions/$data" + } + ] + }, + "schema": { + "$ref": "#" + } + }, + "additionalProperties": false + }, + "default": {} + }, + "switch": { + "type": "array", + "items": { + "required": [ + "then" + ], + "properties": { + "if": { + "$ref": "#" + }, + "then": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#" + } + ] + }, + "continue": { + "type": "boolean" + } + }, + "additionalProperties": false, + "dependencies": { + "continue": [ + "if" + ] + } + } + } + }, + "dependencies": { + "exclusiveMaximum": [ + "maximum" + ], + "exclusiveMinimum": [ + "minimum" + ], + "formatMaximum": [ + "format" + ], + "formatMinimum": [ + "format" + ], + "exclusiveFormatMaximum": [ + "formatMaximum" + ], + "exclusiveFormatMinimum": [ + "formatMinimum" + ] + }, + "default": {} + }; + +/***/ }, +/* 49 */ +/***/ function(module, exports) { + + 'use strict'; + + var IDENTIFIER = /^[a-z_$][a-z0-9_$]*$/i; + + /** + * Define custom keyword + * @this Ajv + * @param {String} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords. + * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. + */ + module.exports = function addKeyword(keyword, definition) { + /* eslint no-shadow: 0 */ + var self = this; + if (this.RULES.keywords[keyword]) + throw new Error('Keyword ' + keyword + ' is already defined'); + + if (!IDENTIFIER.test(keyword)) + throw new Error('Keyword ' + keyword + ' is not a valid identifier'); + + if (definition) { + var dataType = definition.type; + if (Array.isArray(dataType)) { + var i, len = dataType.length; + for (i=0; i 0) { - // limit the number of displayed errors - var limit = errors.length > MAX_ERRORS; - if (limit) { - errors = errors.slice(0, MAX_ERRORS); - var hidden = this.validateSchema.errors.length - MAX_ERRORS; - errors.push('(' + hidden + ' more errors...)') - } - - var validationErrors = document.createElement('div'); - validationErrors.innerHTML = '' + - '' + - errors.map(function (error) { - var message; - if (typeof error === 'string') { - message = ''; - } - else { - message = '' + - ''; - } - - return '' + message + '' - }).join('') + - '' + - '
' + error + '
' + error.dataPath + '' + error.message + '
'; - - this.dom.validationErrors = validationErrors; - this.frame.appendChild(validationErrors); - - var height = validationErrors.clientHeight; - this.content.style.marginBottom = (-height) + 'px'; - this.content.style.paddingBottom = height + 'px'; - } - - // update the height of the ace editor - if (this.aceEditor) { - var force = false; - this.aceEditor.resize(force); - } - }; - - // define modes - module.exports = [ - { - mode: 'text', - mixin: textmode, - data: 'text', - load: textmode.format - }, - { - mode: 'code', - mixin: textmode, - data: 'text', - load: textmode.format - } - ]; + module.exports = Highlighter; /***/ }, -/* 3 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { - var jsonlint = __webpack_require__(12); + 'use strict'; + + var util = __webpack_require__(54); + + /** + * @constructor History + * Store action history, enables undo and redo + * @param {JSONEditor} editor + */ + function History (editor) { + this.editor = editor; + this.history = []; + this.index = -1; + + this.clear(); + + // map with all supported actions + this.actions = { + 'editField': { + 'undo': function (params) { + params.node.updateField(params.oldValue); + }, + 'redo': function (params) { + params.node.updateField(params.newValue); + } + }, + 'editValue': { + 'undo': function (params) { + params.node.updateValue(params.oldValue); + }, + 'redo': function (params) { + params.node.updateValue(params.newValue); + } + }, + 'changeType': { + 'undo': function (params) { + params.node.changeType(params.oldType); + }, + 'redo': function (params) { + params.node.changeType(params.newType); + } + }, + + 'appendNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.appendChild(node); + }); + } + }, + 'insertBeforeNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.insertBefore(node, params.beforeNode); + }); + } + }, + 'insertAfterNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + var afterNode = params.afterNode; + params.nodes.forEach(function (node) { + params.parent.insertAfter(params.node, afterNode); + afterNode = node; + }); + } + }, + 'removeNodes': { + 'undo': function (params) { + var parent = params.parent; + var beforeNode = parent.childs[params.index] || parent.append; + params.nodes.forEach(function (node) { + parent.insertBefore(node, beforeNode); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + } + }, + 'duplicateNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.parent.removeChild(node); + }); + }, + 'redo': function (params) { + var afterNode = params.afterNode; + params.nodes.forEach(function (node) { + params.parent.insertAfter(node, afterNode); + afterNode = node; + }); + } + }, + 'moveNodes': { + 'undo': function (params) { + params.nodes.forEach(function (node) { + params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode); + }); + }, + 'redo': function (params) { + params.nodes.forEach(function (node) { + params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode); + }); + } + }, + + 'sort': { + 'undo': function (params) { + var node = params.node; + node.hideChilds(); + node.sort = params.oldSort; + node.childs = params.oldChilds; + node.showChilds(); + }, + 'redo': function (params) { + var node = params.node; + node.hideChilds(); + node.sort = params.newSort; + node.childs = params.newChilds; + node.showChilds(); + } + } + + // TODO: restore the original caret position and selection with each undo + // TODO: implement history for actions "expand", "collapse", "scroll", "setDocument" + }; + } + + /** + * The method onChange is executed when the History is changed, and can + * be overloaded. + */ + History.prototype.onChange = function () {}; + + /** + * Add a new action to the history + * @param {String} action The executed action. Available actions: "editField", + * "editValue", "changeType", "appendNode", + * "removeNode", "duplicateNode", "moveNode" + * @param {Object} params Object containing parameters describing the change. + * The parameters in params depend on the action (for + * example for "editValue" the Node, old value, and new + * value are provided). params contains all information + * needed to undo or redo the action. + */ + History.prototype.add = function (action, params) { + this.index++; + this.history[this.index] = { + 'action': action, + 'params': params, + 'timestamp': new Date() + }; + + // remove redo actions which are invalid now + if (this.index < this.history.length - 1) { + this.history.splice(this.index + 1, this.history.length - this.index - 1); + } + + // fire onchange event + this.onChange(); + }; + + /** + * Clear history + */ + History.prototype.clear = function () { + this.history = []; + this.index = -1; + + // fire onchange event + this.onChange(); + }; + + /** + * Check if there is an action available for undo + * @return {Boolean} canUndo + */ + History.prototype.canUndo = function () { + return (this.index >= 0); + }; + + /** + * Check if there is an action available for redo + * @return {Boolean} canRedo + */ + History.prototype.canRedo = function () { + return (this.index < this.history.length - 1); + }; + + /** + * Undo the last action + */ + History.prototype.undo = function () { + if (this.canUndo()) { + var obj = this.history[this.index]; + if (obj) { + var action = this.actions[obj.action]; + if (action && action.undo) { + action.undo(obj.params); + if (obj.params.oldSelection) { + this.editor.setSelection(obj.params.oldSelection); + } + } + else { + console.error(new Error('unknown action "' + obj.action + '"')); + } + } + this.index--; + + // fire onchange event + this.onChange(); + } + }; + + /** + * Redo the last action + */ + History.prototype.redo = function () { + if (this.canRedo()) { + this.index++; + + var obj = this.history[this.index]; + if (obj) { + var action = this.actions[obj.action]; + if (action && action.redo) { + action.redo(obj.params); + if (obj.params.newSelection) { + this.editor.setSelection(obj.params.newSelection); + } + } + else { + console.error(new Error('unknown action "' + obj.action + '"')); + } + } + + // fire onchange event + this.onChange(); + } + }; + + /** + * Destroy history + */ + History.prototype.destroy = function () { + this.editor = null; + + this.history = []; + this.index = -1; + }; + + module.exports = History; + + +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var jsonlint = __webpack_require__(55); /** * Parse JSON using the parser built-in in the browser. @@ -2916,819 +10694,434 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 4 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { + /* Jison generated parser */ + var jsonlint = (function(){ + var parser = {trace: function trace() { }, + yy: {}, + symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, + terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, + productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], + performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { + + var $0 = $$.length - 1; + switch (yystate) { + case 1: // replace escaped characters with actual character + this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") + .replace(/\\n/g,'\n') + .replace(/\\r/g,'\r') + .replace(/\\t/g,'\t') + .replace(/\\v/g,'\v') + .replace(/\\f/g,'\f') + .replace(/\\b/g,'\b'); + + break; + case 2:this.$ = Number(yytext); + break; + case 3:this.$ = null; + break; + case 4:this.$ = true; + break; + case 5:this.$ = false; + break; + case 6:return this.$ = $$[$0-1]; + break; + case 13:this.$ = {}; + break; + case 14:this.$ = $$[$0-1]; + break; + case 15:this.$ = [$$[$0-2], $$[$0]]; + break; + case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; + break; + case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; + break; + case 18:this.$ = []; + break; + case 19:this.$ = $$[$0-1]; + break; + case 20:this.$ = [$$[$0]]; + break; + case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); + break; + } + }, + table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], + defaultActions: {16:[2,6]}, + parseError: function parseError(str, hash) { + throw new Error(str); + }, + parse: function parse(input) { + var self = this, + stack = [0], + vstack = [null], // semantic value stack + lstack = [], // location stack + table = this.table, + yytext = '', + yylineno = 0, + yyleng = 0, + recovering = 0, + TERROR = 2, + EOF = 1; + + //this.reductionCount = this.shiftCount = 0; + + this.lexer.setInput(input); + this.lexer.yy = this.yy; + this.yy.lexer = this.lexer; + if (typeof this.lexer.yylloc == 'undefined') + this.lexer.yylloc = {}; + var yyloc = this.lexer.yylloc; + lstack.push(yyloc); + + if (typeof this.yy.parseError === 'function') + this.parseError = this.yy.parseError; + + function popStack (n) { + stack.length = stack.length - 2*n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; + } + + function lex() { + var token; + token = self.lexer.lex() || 1; // $end = 1 + // if token isn't its numeric value, convert + if (typeof token !== 'number') { + token = self.symbols_[token] || token; + } + return token; + } + + var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; + while (true) { + // retreive state number from top of stack + state = stack[stack.length-1]; + + // use default actions if available + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol == null) + symbol = lex(); + // read action for current state and first input + action = table[state] && table[state][symbol]; + } + + // handle parse error + _handle_error: + if (typeof action === 'undefined' || !action.length || !action[0]) { + + if (!recovering) { + // Report error + expected = []; + for (p in table[state]) if (this.terminals_[p] && p > 2) { + expected.push("'"+this.terminals_[p]+"'"); + } + var errStr = ''; + if (this.lexer.showPosition) { + errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; + } else { + errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + + (symbol == 1 /*EOF*/ ? "end of input" : + ("'"+(this.terminals_[symbol] || symbol)+"'")); + } + this.parseError(errStr, + {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); + } + + // just recovered from another error + if (recovering == 3) { + if (symbol == EOF) { + throw new Error(errStr || 'Parsing halted.'); + } + + // discard current lookahead and grab another + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + symbol = lex(); + } + + // try to recover from error + while (1) { + // check for error recovery rule in this state + if ((TERROR.toString()) in table[state]) { + break; + } + if (state == 0) { + throw new Error(errStr || 'Parsing halted.'); + } + popStack(1); + state = stack[stack.length-1]; + } + + preErrorSymbol = symbol; // save the lookahead token + symbol = TERROR; // insert generic error symbol as new lookahead + state = stack[stack.length-1]; + action = table[state] && table[state][TERROR]; + recovering = 3; // allow 3 real symbols to be shifted before reporting a new error + } + + // this shouldn't happen, unless resolve defaults are off + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); + } + + switch (action[0]) { + + case 1: // shift + //this.shiftCount++; + + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); // push state + symbol = null; + if (!preErrorSymbol) { // normal execution/no error + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + if (recovering > 0) + recovering--; + } else { // error just occurred, resume old lookahead f/ before error + symbol = preErrorSymbol; + preErrorSymbol = null; + } + break; + + case 2: // reduce + //this.reductionCount++; + + len = this.productions_[action[1]][1]; + + // perform semantic action + yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 + // default location, uses first token for firsts, last for lasts + yyval._$ = { + first_line: lstack[lstack.length-(len||1)].first_line, + last_line: lstack[lstack.length-1].last_line, + first_column: lstack[lstack.length-(len||1)].first_column, + last_column: lstack[lstack.length-1].last_column + }; + r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); + + if (typeof r !== 'undefined') { + return r; + } + + // pop off stack + if (len) { + stack = stack.slice(0,-1*len*2); + vstack = vstack.slice(0, -1*len); + lstack = lstack.slice(0, -1*len); + } + + stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) + vstack.push(yyval.$); + lstack.push(yyval._$); + // goto new state = table[STATE][NONTERMINAL] + newState = table[stack[stack.length-2]][stack[stack.length-1]]; + stack.push(newState); + break; + + case 3: // accept + return true; + } + + } + + return true; + }}; + /* Jison generated lexer */ + var lexer = (function(){ + var lexer = ({EOF:1, + parseError:function parseError(str, hash) { + if (this.yy.parseError) { + this.yy.parseError(str, hash); + } else { + throw new Error(str); + } + }, + setInput:function (input) { + this._input = input; + this._more = this._less = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; + return this; + }, + input:function () { + var ch = this._input[0]; + this.yytext+=ch; + this.yyleng++; + this.match+=ch; + this.matched+=ch; + var lines = ch.match(/\n/); + if (lines) this.yylineno++; + this._input = this._input.slice(1); + return ch; + }, + unput:function (ch) { + this._input = ch + this._input; + return this; + }, + more:function () { + this._more = true; + return this; + }, + less:function (n) { + this._input = this.match.slice(n) + this._input; + }, + pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, + upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); + }, + showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c+"^"; + }, + next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) this.done = true; + + var token, + match, + tempMatch, + index, + col, + lines; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i=0;i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (!this.options.flex) break; + } + } + if (match) { + lines = match[0].match(/\n.*/g); + if (lines) this.yylineno += lines.length; + this.yylloc = {first_line: this.yylloc.last_line, + last_line: this.yylineno+1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} + this.yytext += match[0]; + this.match += match[0]; + this.yyleng = this.yytext.length; + this._more = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); + if (this.done && this._input) this.done = false; + if (token) return token; + else return; + } + if (this._input === "") { + return this.EOF; + } else { + this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), + {text: "", token: null, line: this.yylineno}); + } + }, + lex:function lex() { + var r = this.next(); + if (typeof r !== 'undefined') { + return r; + } else { + return this.lex(); + } + }, + begin:function begin(condition) { + this.conditionStack.push(condition); + }, + popState:function popState() { + return this.conditionStack.pop(); + }, + _currentRules:function _currentRules() { + return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; + }, + topState:function () { + return this.conditionStack[this.conditionStack.length-2]; + }, + pushState:function begin(condition) { + this.begin(condition); + }}); + lexer.options = {}; + lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { + + var YYSTATE=YY_START + switch($avoiding_name_collisions) { + case 0:/* skip whitespace */ + break; + case 1:return 6 + break; + case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 + break; + case 3:return 17 + break; + case 4:return 18 + break; + case 5:return 23 + break; + case 6:return 24 + break; + case 7:return 22 + break; + case 8:return 21 + break; + case 9:return 10 + break; + case 10:return 11 + break; + case 11:return 8 + break; + case 12:return 14 + break; + case 13:return 'INVALID' + break; + } + }; + lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; + lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; + + + ; + return lexer;})() + parser.lexer = lexer; + return parser; + })(); + if (true) { + exports.parser = jsonlint; + exports.parse = jsonlint.parse.bind(jsonlint); + } + +/***/ }, +/* 56 */ +/***/ function(module, exports) { + 'use strict'; - var compileSchema = __webpack_require__(22) - , resolve = __webpack_require__(13) - , Cache = __webpack_require__(14) - , SchemaObject = __webpack_require__(15) - , stableStringify = __webpack_require__(24) - , formats = __webpack_require__(16) - , rules = __webpack_require__(17) - , v5 = __webpack_require__(18); - - module.exports = Ajv; - - Ajv.prototype.compileAsync = __webpack_require__(19); - Ajv.prototype.addKeyword = __webpack_require__(20); - - var META_SCHEMA_ID = 'http://json-schema.org/draft-04/schema'; - var SCHEMA_URI_FORMAT = /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i; - function SCHEMA_URI_FORMAT_FUNC(str) { - return SCHEMA_URI_FORMAT.test(str); - } - - /** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ - function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - var self = this; - - this.opts = opts || {}; - this._schemas = {}; - this._refs = {}; - this._formats = formats(this.opts.format); - this._cache = this.opts.cache || new Cache; - this._loadingSchemas = {}; - this.RULES = rules(); - - // this is done on purpose, so that methods are bound to the instance - // (without using bind) so that they can be used without the instance - this.validate = validate; - this.compile = compile; - this.addSchema = addSchema; - this.addMetaSchema = addMetaSchema; - this.validateSchema = validateSchema; - this.getSchema = getSchema; - this.removeSchema = removeSchema; - this.addFormat = addFormat; - this.errorsText = errorsText; - - this._addSchema = _addSchema; - this._compile = _compile; - - addInitialSchemas(); - if (this.opts.formats) addInitialFormats(); - - if (this.opts.errorDataPath == 'property') - this.opts._errorDataPathProperty = true; - - if (this.opts.v5) v5.enable(this); - - this.opts.loopRequired = this.opts.loopRequired || Infinity; - - - /** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [json-stable-stringify](https://github.com/substack/json-stable-stringify) is used to serialize. - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ - function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = _addSchema(schemaKeyRef); - v = schemaObj.validate || _compile(schemaObj); - } - - var valid = v(data); - self.errors = v.errors; - return valid; - } - - - /** - * Create validating function for passed schema. - * @param {String|Object} schema - * @return {Function} validating function - */ - function compile(schema) { - var schemaObj = _addSchema(schema); - return schemaObj.validate || _compile(schemaObj); - } - - - /** - * Adds schema to the instance. - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - */ - function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} opts optional options with properties `separator` and `dataVar`. - * @return {String} - */ - function errorsText(errors, opts) { - errors = errors || self.errors; - if (!errors) return 'No errors'; - opts = opts || {}; - var separator = opts.separator || ', '; - var dataVar = opts.dataVar || 'data'; - - var text = ''; - for (var i=0; i= 0); - }; - - /** - * Check if there is an action available for redo - * @return {Boolean} canRedo - */ - History.prototype.canRedo = function () { - return (this.index < this.history.length - 1); - }; - - /** - * Undo the last action - */ - History.prototype.undo = function () { - if (this.canUndo()) { - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.undo) { - action.undo(obj.params); - if (obj.params.oldSelection) { - this.editor.setSelection(obj.params.oldSelection); - } - } - else { - console.error(new Error('unknown action "' + obj.action + '"')); - } - } - this.index--; - - // fire onchange event - this.onChange(); - } - }; - - /** - * Redo the last action - */ - History.prototype.redo = function () { - if (this.canRedo()) { - this.index++; - - var obj = this.history[this.index]; - if (obj) { - var action = this.actions[obj.action]; - if (action && action.redo) { - action.redo(obj.params); - if (obj.params.newSelection) { - this.editor.setSelection(obj.params.newSelection); - } - } - else { - console.error(new Error('unknown action "' + obj.action + '"')); - } - } - - // fire onchange event - this.onChange(); - } - }; - - /** - * Destroy history - */ - History.prototype.destroy = function () { - this.editor = null; - - this.history = []; - this.index = -1; - }; - - module.exports = History; - - -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { - /** * @constructor SearchBox * Create a search box in given HTML container @@ -4042,10 +11435,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 9 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(3); + 'use strict'; + + var util = __webpack_require__(54); /** * A context menu @@ -4503,13 +11898,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 10 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { - var naturalSort = __webpack_require__(29); - var ContextMenu = __webpack_require__(9); - var appendNodeFactory = __webpack_require__(21); - var util = __webpack_require__(3); + 'use strict'; + + var naturalSort = __webpack_require__(59); + var ContextMenu = __webpack_require__(57); + var appendNodeFactory = __webpack_require__(60); + var util = __webpack_require__(54); /** * @constructor Node @@ -7899,1138 +15296,64 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { +/* 59 */ +/***/ function(module, exports) { - // load brace - var ace = __webpack_require__(25); - - // load required ace modules - __webpack_require__(26); - __webpack_require__(27); - __webpack_require__(23); - - module.exports = ace; - - -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { - - /* Jison generated parser */ - var jsonlint = (function(){ - var parser = {trace: function trace() { }, - yy: {}, - symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1}, - terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"}, - productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]], - performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - - var $0 = $$.length - 1; - switch (yystate) { - case 1: // replace escaped characters with actual character - this.$ = yytext.replace(/\\(\\|")/g, "$"+"1") - .replace(/\\n/g,'\n') - .replace(/\\r/g,'\r') - .replace(/\\t/g,'\t') - .replace(/\\v/g,'\v') - .replace(/\\f/g,'\f') - .replace(/\\b/g,'\b'); - - break; - case 2:this.$ = Number(yytext); - break; - case 3:this.$ = null; - break; - case 4:this.$ = true; - break; - case 5:this.$ = false; - break; - case 6:return this.$ = $$[$0-1]; - break; - case 13:this.$ = {}; - break; - case 14:this.$ = $$[$0-1]; - break; - case 15:this.$ = [$$[$0-2], $$[$0]]; - break; - case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1]; - break; - case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1]; - break; - case 18:this.$ = []; - break; - case 19:this.$ = $$[$0-1]; - break; - case 20:this.$ = [$$[$0]]; - break; - case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]); - break; - } - }, - table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}], - defaultActions: {16:[2,6]}, - parseError: function parseError(str, hash) { - throw new Error(str); - }, - parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; - }}; - /* Jison generated lexer */ - var lexer = (function(){ - var lexer = ({EOF:1, - parseError:function parseError(str, hash) { - if (this.yy.parseError) { - this.yy.parseError(str, hash); - } else { - throw new Error(str); - } - }, - setInput:function (input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0}; - return this; - }, - input:function () { - var ch = this._input[0]; - this.yytext+=ch; - this.yyleng++; - this.match+=ch; - this.matched+=ch; - var lines = ch.match(/\n/); - if (lines) this.yylineno++; - this._input = this._input.slice(1); - return ch; - }, - unput:function (ch) { - this._input = ch + this._input; - return this; - }, - more:function () { - this._more = true; - return this; - }, - less:function (n) { - this._input = this.match.slice(n) + this._input; - }, - pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, - upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, ""); - }, - showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c+"^"; - }, - next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, - match, - tempMatch, - index, - col, - lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i=0;i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/\n.*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = {first_line: this.yylloc.last_line, - last_line: this.yylineno+1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length} - this.yytext += match[0]; - this.match += match[0]; - this.yyleng = this.yytext.length; - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), - {text: "", token: null, line: this.yylineno}); - } - }, - lex:function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, - begin:function begin(condition) { - this.conditionStack.push(condition); - }, - popState:function popState() { - return this.conditionStack.pop(); - }, - _currentRules:function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules; - }, - topState:function () { - return this.conditionStack[this.conditionStack.length-2]; - }, - pushState:function begin(condition) { - this.begin(condition); - }}); - lexer.options = {}; - lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { - - var YYSTATE=YY_START - switch($avoiding_name_collisions) { - case 0:/* skip whitespace */ - break; - case 1:return 6 - break; - case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4 - break; - case 3:return 17 - break; - case 4:return 18 - break; - case 5:return 23 - break; - case 6:return 24 - break; - case 7:return 22 - break; - case 8:return 21 - break; - case 9:return 10 - break; - case 10:return 11 - break; - case 11:return 8 - break; - case 12:return 14 - break; - case 13:return 'INVALID' - break; - } - }; - lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/]; - lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}}; - - - ; - return lexer;})() - parser.lexer = lexer; - return parser; - })(); - if (true) { - exports.parser = jsonlint; - exports.parse = jsonlint.parse.bind(jsonlint); - } - -/***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var url = __webpack_require__(38) - , equal = __webpack_require__(30) - , util = __webpack_require__(31) - , SchemaObject = __webpack_require__(15); - - module.exports = resolve; - - resolve.normalizeId = normalizeId; - resolve.fullPath = getFullPath; - resolve.url = resolveUrl; - resolve.ids = resolveIds; - resolve.inlineRef = inlineRef; - - function resolve(compile, root, ref) { - /* jshint validthis: true */ - var refVal = this._refs[ref]; - if (typeof refVal == 'string') { - if (this._refs[refVal]) refVal = this._refs[refVal]; - else return resolve.call(this, compile, root, refVal); - } - - refVal = refVal || this._schemas[ref]; - if (refVal instanceof SchemaObject) - return inlineRef(refVal.schema, this.opts.inlineRefs) - ? refVal.schema - : refVal.validate || this._compile(refVal); - - var res = _resolve.call(this, root, ref); - var schema, v, baseId; - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - - if (schema instanceof SchemaObject) - v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); - else if (schema) - v = inlineRef(schema, this.opts.inlineRefs) - ? schema - : compile.call(this, schema, root, undefined, baseId); - - return v; - } - - - function _resolve(root, ref) { - /* jshint validthis: true */ - var p = url.parse(ref, false, true) - , refPath = _getFullPath(p) - , baseId = getFullPath(root.schema.id); - if (refPath !== baseId) { - var id = normalizeId(refPath); - var refVal = this._refs[id]; - if (typeof refVal == 'string') { - return resolveRecursive.call(this, root, refVal, p); - } else if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - root = refVal; - } else { - refVal = this._schemas[id]; - if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - if (id == normalizeId(ref)) - return { schema: refVal, root: root, baseId: baseId }; - root = refVal; - } - } - if (!root.schema) return; - baseId = getFullPath(root.schema.id); - } - return getJsonPointer.call(this, p, baseId, root.schema, root); - } - - - function resolveRecursive(root, ref, parsedRef) { - /* jshint validthis: true */ - var res = _resolve.call(this, root, ref); - if (res) { - var schema = res.schema; - var baseId = res.baseId; - root = res.root; - if (schema.id) baseId = resolveUrl(baseId, schema.id); - return getJsonPointer.call(this, parsedRef, baseId, schema, root); - } - } - - - var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); - function getJsonPointer(parsedRef, baseId, schema, root) { - /* jshint validthis: true */ - parsedRef.hash = parsedRef.hash || ''; - if (parsedRef.hash.slice(0,2) != '#/') return; - var parts = parsedRef.hash.split('/'); - - for (var i = 1; i < parts.length; i++) { - var part = parts[i]; - if (part) { - part = util.unescapeFragment(part); - schema = schema[part]; - if (!schema) break; - if (schema.id && !PREVENT_SCOPE_CHANGE[part]) baseId = resolveUrl(baseId, schema.id); - if (schema.$ref) { - var $ref = resolveUrl(baseId, schema.$ref); - var res = _resolve.call(this, root, $ref); - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - } - } - } - if (schema && schema != root.schema) - return { schema: schema, root: root, baseId: baseId }; - } - - - var SIMPLE_INLINED = util.toHash([ - 'type', 'format', 'pattern', - 'maxLength', 'minLength', - 'maxProperties', 'minProperties', - 'maxItems', 'minItems', - 'maximum', 'minimum', - 'uniqueItems', 'multipleOf', - 'required', 'enum' - ]); - function inlineRef(schema, limit) { - if (limit === undefined) return checkNoRef(schema); - else if (limit) return countKeys(schema) <= limit; - } - - - function checkNoRef(schema) { - var item; - if (Array.isArray(schema)) { - for (var i=0; i= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; - } - - - function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); - } - - - var DATE_TIME_SEPARATOR = /t|\s/i; - function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return date(dateTime[0]) && time(dateTime[1], true); - } - - - function hostname(str) { - // http://tools.ietf.org/html/rfc1034#section-3.5 - return str.length <= 255 && HOSTNAME.test(str); - } - - - var NOT_URI_FRAGMENT = /\/|\:/; - function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); - } - - - function regex(str) { - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } - } - - - function compareDate(d1, d2) { - if (!(d1 && d2)) return; - if (d1 > d2) return 1; - if (d1 < d2) return -1; - if (d1 === d2) return 0; - } - - - function compareTime(t1, t2) { - if (!(t1 && t2)) return; - t1 = t1.match(TIME); - t2 = t2.match(TIME); - if (!(t1 && t2)) return; - t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); - t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); - if (t1 > t2) return 1; - if (t1 < t2) return -1; - if (t1 === t2) return 0; - } - - - function compareDateTime(dt1, dt2) { - if (!(dt1 && dt2)) return; - dt1 = dt1.split(DATE_TIME_SEPARATOR); - dt2 = dt2.split(DATE_TIME_SEPARATOR); - var res = compareDate(dt1[0], dt2[0]); - if (res === undefined) return; - return res || compareTime(dt1[1], dt2[1]); - } - - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var ruleModules = __webpack_require__(36) - , util = __webpack_require__(31); - - module.exports = function rules() { - var RULES = [ - { type: 'number', - rules: [ 'maximum', 'minimum', 'multipleOf'] }, - { type: 'string', - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, - { type: 'array', - rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] }, - { type: 'object', - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] }, - { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } - ]; - - RULES.all = [ 'type', 'additionalProperties', 'patternProperties' ]; - RULES.keywords = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ]; - RULES.types = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; - - RULES.forEach(function (group) { - group.rules = group.rules.map(function (keyword) { - RULES.all.push(keyword); - return { - keyword: keyword, - code: ruleModules[keyword] - }; - }); - }); - - RULES.keywords = util.toHash(RULES.all.concat(RULES.keywords)); - RULES.all = util.toHash(RULES.all); - RULES.types = util.toHash(RULES.types); - - return RULES; - }; - - -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json'; - - module.exports = { - enable: enableV5, - META_SCHEMA_ID: META_SCHEMA_ID - }; - - - function enableV5(ajv) { - if (ajv.opts.meta !== false) { - var metaSchema = __webpack_require__(32); - ajv.addMetaSchema(metaSchema, META_SCHEMA_ID); - } - ajv.addKeyword('constant', { inline: __webpack_require__(33), statements: true, errors: 'full' }); - ajv.addKeyword('contains', { type: 'array', macro: containsMacro }); - - var formatLimit = __webpack_require__(34); - ajv.addKeyword('formatMaximum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' }); - ajv.addKeyword('formatMinimum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' }); - ajv.addKeyword('exclusiveFormatMaximum'); - ajv.addKeyword('exclusiveFormatMinimum'); - - ajv.addKeyword('patternGroups'); // implemented in properties.jst - ajv.addKeyword('switch', { inline: __webpack_require__(35), statements: true, errors: 'full' }); - } - - function containsMacro(schema) { - return { - "not": { "items": { "not": schema } } - }; - } - - -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Create validating function for passed schema with asynchronous loading of missing schemas. - * `loadSchema` option should be a function that accepts schema uri and node-style callback. - * @param {String|Object} schema - * @param {Function} callback node-style callback, it is always called with 2 parameters: error (or null) and validating function. + /* + * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license + * Author: Jim Palmer (based on chunking idea from Dave Koelle) */ - module.exports = function compileAsync(schema, callback) { - var schemaObj; - var self = this; - try { - schemaObj = this._addSchema(schema); - } catch(e) { - setTimeout(function() { callback(e); }); - return; - } - if (schemaObj.validate) - setTimeout(function() { callback(null, schemaObj.validate); }); - else { - if (typeof this.opts.loadSchema != 'function') - throw new Error('options.loadSchema should be a function'); - _compileAsync(schema, callback, true); - } - - - function _compileAsync(schema, callback, firstCall) { - var validate; - try { validate = self.compile(schema); } - catch(e) { - if (e.missingSchema) loadMissingSchema(e); - else deferCallback(e); - return; - } - deferCallback(null, validate); - - function loadMissingSchema(e) { - var ref = e.missingSchema; - if (self._refs[ref] || self._schemas[ref]) - return callback(new Error('Schema ' + ref + ' is loaded but' + e.missingRef + 'cannot be resolved')); - var _callbacks = self._loadingSchemas[ref]; - if (_callbacks) { - if (typeof _callbacks == 'function') - self._loadingSchemas[ref] = [_callbacks, schemaLoaded]; - else - _callbacks[_callbacks.length] = schemaLoaded; - } else { - self._loadingSchemas[ref] = schemaLoaded; - self.opts.loadSchema(ref, function (err, sch) { - var _callbacks = self._loadingSchemas[ref]; - delete self._loadingSchemas[ref]; - if (typeof _callbacks == 'function') - _callbacks(err, sch); - else - for (var i=0; i<_callbacks.length; i++) - _callbacks[i](err, sch); - }); - } - - function schemaLoaded(err, sch) { - if (err) callback(err); - else { - if (!(self._refs[ref] || self._schemas[ref])) { - try { - self.addSchema(sch, ref); - } catch(e) { - callback(e); - return; - } - } - _compileAsync(schema, callback); - } - } - } - - function deferCallback(err, validate) { - if (firstCall) setTimeout(function() { callback(err, validate); }); - else callback(err, validate); - } - } + /*jshint unused:false */ + module.exports = function naturalSort (a, b) { + "use strict"; + var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, + sre = /(^[ ]*|[ ]*$)/g, + dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, + hre = /^0x[0-9a-f]+$/i, + ore = /^0/, + i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; }, + // convert all to strings strip whitespace + x = i(a).replace(sre, '') || '', + y = i(b).replace(sre, '') || '', + // chunk/tokenize + xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + // numeric, hex or date detection + xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), + yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, + oFxNcL, oFyNcL; + // first try and sort Hex codes or Dates + if (yD) { + if ( xD < yD ) { return -1; } + else if ( xD > yD ) { return 1; } + } + // natural sorting through split numeric strings and default strings + for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { + // find floats not starting with '0', string or 0 if not defined (Clint Priest) + oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; + oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; + // handle numeric vs string comparison - number < string - (Kyle Adams) + if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } + // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' + else if (typeof oFxNcL !== typeof oFyNcL) { + oFxNcL += ''; + oFyNcL += ''; + } + if (oFxNcL < oFyNcL) { return -1; } + if (oFxNcL > oFyNcL) { return 1; } + } + return 0; }; /***/ }, -/* 20 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var IDENTIFIER = /^[a-z_$][a-z0-9_$]*$/i; - - /** - * Define custom keyword - * @param {String} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords. - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - */ - module.exports = function addKeyword(keyword, definition) { - var self = this; - if (this.RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - var dataType = definition.type; - if (Array.isArray(dataType)) { - var i, len = dataType.length; - for (i=0; i 0) { + // limit the number of displayed errors + var limit = errors.length > MAX_ERRORS; + if (limit) { + errors = errors.slice(0, MAX_ERRORS); + var hidden = this.validateSchema.errors.length - MAX_ERRORS; + errors.push('(' + hidden + ' more errors...)') + } + + var validationErrors = document.createElement('div'); + validationErrors.innerHTML = '' + + '' + + errors.map(function (error) { + var message; + if (typeof error === 'string') { + message = ''; + } + else { + message = '' + + ''; + } + + return '' + message + '' + }).join('') + + '' + + '
' + error + '
' + error.dataPath + '' + error.message + '
'; + + this.dom.validationErrors = validationErrors; + this.frame.appendChild(validationErrors); + + var height = validationErrors.clientHeight; + this.content.style.marginBottom = (-height) + 'px'; + this.content.style.paddingBottom = height + 'px'; + } + + // update the height of the ace editor + if (this.aceEditor) { + var force = false; + this.aceEditor.resize(force); + } + }; + + // define modes + module.exports = [ + { + mode: 'text', + mixin: textmode, + data: 'text', + load: textmode.format + }, + { + mode: 'code', + mixin: textmode, + data: 'text', + load: textmode.format + } + ]; + + +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { + + // load brace + var ace = __webpack_require__(64); + + // load required ace modules + __webpack_require__(67); + __webpack_require__(69); + __webpack_require__(70); + + module.exports = ace; + + +/***/ }, +/* 64 */ /***/ function(module, exports, __webpack_require__) { /* ***** BEGIN LICENSE BLOCK ***** @@ -11262,7 +17740,7 @@ return /******/ (function(modules) { // webpackBootstrap } }; - exports.addMultiMouseDownListener = function(el, timeouts, eventHandler, callbackName) { + exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) { var clicks = 0; var startX, startY, timer; var eventNames = { @@ -11271,7 +17749,7 @@ return /******/ (function(modules) { // webpackBootstrap 4: "quadclick" }; - exports.addListener(el, "mousedown", function(e) { + function onMousedown(e) { if (exports.getButton(e) !== 0) { clicks = 0; } else if (e.detail > 1) { @@ -11303,18 +17781,22 @@ return /******/ (function(modules) { // webpackBootstrap clicks = 0; else if (clicks > 1) return eventHandler[callbackName](eventNames[clicks], e); - }); - - if (useragent.isOldIE) { - exports.addListener(el, "dblclick", function(e) { - clicks = 2; - if (timer) - clearTimeout(timer); - timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600); - eventHandler[callbackName]("mousedown", e); - eventHandler[callbackName](eventNames[clicks], e); - }); } + function onDblclick(e) { + clicks = 2; + if (timer) + clearTimeout(timer); + timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600); + eventHandler[callbackName]("mousedown", e); + eventHandler[callbackName](eventNames[clicks], e); + } + if (!Array.isArray(elements)) + elements = [elements]; + elements.forEach(function(el) { + exports.addListener(el, "mousedown", onMousedown); + if (useragent.isOldIE) + exports.addListener(el, "dblclick", onDblclick); + }); }; var getModifierHash = useragent.isMac && useragent.isOpera && !("KeyboardEvent" in window) @@ -11716,11 +18198,11 @@ return /******/ (function(modules) { // webpackBootstrap if (tempStyle) return text.focus(); var top = text.style.top; text.style.position = "fixed"; - text.style.top = "-1000px"; + text.style.top = "0px"; text.focus(); setTimeout(function() { text.style.position = ""; - if (text.style.top == "-1000px") + if (text.style.top == "0px") text.style.top = top; }, 0); }; @@ -12090,6 +18572,8 @@ return /******/ (function(modules) { // webpackBootstrap if (host.renderer.$keepTextAreaAtCursor) host.renderer.$keepTextAreaAtCursor = null; + + clearTimeout(closeTimeout); if (useragent.isWin && !useragent.isOldIE) event.capture(host.container, move, onContextMenuClose); }; @@ -12114,6 +18598,11 @@ return /******/ (function(modules) { // webpackBootstrap host.textInput.onContextMenu(e); onContextMenuClose(); }; + event.addListener(text, "mouseup", onContextMenu); + event.addListener(text, "mousedown", function(e) { + e.preventDefault(); + onContextMenuClose(); + }); event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); event.addListener(text, "contextmenu", onContextMenu); }; @@ -12165,10 +18654,11 @@ return /******/ (function(modules) { // webpackBootstrap var selectionRange = editor.getSelectionRange(); var selectionEmpty = selectionRange.isEmpty(); editor.$blockScrolling++; - if (selectionEmpty) + if (selectionEmpty || button == 1) editor.selection.moveToPosition(pos); editor.$blockScrolling--; - editor.textInput.onContextMenu(ev.domEvent); + if (button == 2) + editor.textInput.onContextMenu(ev.domEvent); return; // stopping event here breaks contextmenu on ff mac } @@ -13447,10 +19937,10 @@ return /******/ (function(modules) { // webpackBootstrap }; init(true);function init(packaged) { - options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(59).packaged); - - if (!global.document) - return ""; + if (!global || !global.document) + return; + + options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(65).packaged); var scriptOptions = {}; var scriptUrl = ""; @@ -13492,7 +19982,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var key in scriptOptions) if (typeof scriptOptions[key] !== "undefined") exports.set(key, scriptOptions[key]); - }; + } exports.init = init; @@ -13522,25 +20012,22 @@ return /******/ (function(modules) { // webpackBootstrap new DragdropHandler(this); var focusEditor = function(e) { - if (!document.hasFocus || !document.hasFocus()) + var windowBlurred = !document.hasFocus || !document.hasFocus() + || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()) + if (windowBlurred) window.focus(); editor.focus(); - if (!editor.isFocused()) - window.focus(); }; var mouseTarget = editor.renderer.getMouseEventTarget(); event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click")); event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove")); - event.addMultiMouseDownListener(mouseTarget, [400, 300, 250], this, "onMouseEvent"); - if (editor.renderer.scrollBarV) { - event.addMultiMouseDownListener(editor.renderer.scrollBarV.inner, [400, 300, 250], this, "onMouseEvent"); - event.addMultiMouseDownListener(editor.renderer.scrollBarH.inner, [400, 300, 250], this, "onMouseEvent"); - if (useragent.isIE) { - event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor); - event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor); - } - } + event.addMultiMouseDownListener([ + mouseTarget, + editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, + editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, + editor.textInput && editor.textInput.getElement() + ].filter(Boolean), [400, 300, 250], this, "onMouseEvent"); event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel")); event.addTouchMoveListener(editor.container, this.onTouchMove.bind(this, "touchmove")); @@ -13551,11 +20038,11 @@ return /******/ (function(modules) { // webpackBootstrap event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove")); event.addListener(mouseTarget, "mousedown", focusEditor); - - event.addListener(gutterEl, "mousedown", function(e) { - editor.focus(); - return event.preventDefault(e); - }); + event.addListener(gutterEl, "mousedown", focusEditor); + if (useragent.isIE && editor.renderer.scrollBarV) { + event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor); + event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor); + } editor.on("mousemove", function(e){ if (_self.state || _self.$dragDelay || !_self.$dragEnabled) @@ -13992,7 +20479,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!this.isMultiLine()) { if (row === this.start.row) { return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - }; + } } if (row < this.start.row) @@ -14652,7 +21139,7 @@ return /******/ (function(modules) { // webpackBootstrap this.getRangeOfMovements = function(func) { var start = this.getCursor(); try { - func.call(null, this); + func(this); var end = this.getCursor(); return Range.fromPoints(start,end); } catch(e) { @@ -14819,7 +21306,7 @@ return /******/ (function(modules) { // webpackBootstrap }; } return tokens; - }, + }; this.$arrayTokens = function(str) { if (!str) @@ -15328,7 +21815,7 @@ return /******/ (function(modules) { // webpackBootstrap var codePoint = /\w{4}/g; for (var name in pack) exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); - }; + } }); @@ -15490,7 +21977,7 @@ return /******/ (function(modules) { // webpackBootstrap return true; var tokens = session.getTokens(row); for (var i = 0; i < tokens.length; i++) { - if (tokens[i].type === 'comment') + if (tokens[i].type === "comment") return true; } }; @@ -15663,8 +22150,8 @@ return /******/ (function(modules) { // webpackBootstrap } } - var delegations = ['toggleBlockComment', 'toggleCommentLines', 'getNextLineIndent', - 'checkOutdent', 'autoOutdent', 'transformAction', 'getCompletions']; + var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", + "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; for (var i = 0; i < delegations.length; i++) { (function(scope) { @@ -15673,7 +22160,7 @@ return /******/ (function(modules) { // webpackBootstrap scope[delegations[i]] = function() { return this.$delegator(functionName, arguments, defaultHandler); }; - } (this)); + }(this)); } }; @@ -16771,7 +23258,7 @@ return /******/ (function(modules) { // webpackBootstrap this.addList = function(list) { var removed = []; for (var i = list.length; i--; ) { - removed.push.call(removed, this.add(list[i])); + removed.push.apply(removed, this.add(list[i])); } return removed; }; @@ -19135,11 +25622,11 @@ return /******/ (function(modules) { // webpackBootstrap function addSplit(screenPos) { var displayed = tokens.slice(lastSplit, screenPos); var len = displayed.length; - displayed.join(""). - replace(/12/g, function() { + displayed.join("") + .replace(/12/g, function() { len -= 1; - }). - replace(/2/g, function() { + }) + .replace(/2/g, function() { len -= 1; }); @@ -19592,7 +26079,7 @@ return /******/ (function(modules) { // webpackBootstrap c >= 0xFE68 && c <= 0xFE6B || c >= 0xFF01 && c <= 0xFF60 || c >= 0xFFE0 && c <= 0xFFE6; - }; + } }).call(EditSession.prototype); @@ -20058,7 +26545,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.bindKey = function(key, command, position) { - if (typeof key == "object") { + if (typeof key == "object" && key) { if (position == undefined) position = key.position; key = key[this.platform]; @@ -21227,76 +27714,76 @@ return /******/ (function(modules) { // webpackBootstrap var oldSession = this.session; if (oldSession) { - this.session.removeEventListener("change", this.$onDocumentChange); - this.session.removeEventListener("changeMode", this.$onChangeMode); - this.session.removeEventListener("tokenizerUpdate", this.$onTokenizerUpdate); - this.session.removeEventListener("changeTabSize", this.$onChangeTabSize); - this.session.removeEventListener("changeWrapLimit", this.$onChangeWrapLimit); - this.session.removeEventListener("changeWrapMode", this.$onChangeWrapMode); - this.session.removeEventListener("onChangeFold", this.$onChangeFold); - this.session.removeEventListener("changeFrontMarker", this.$onChangeFrontMarker); - this.session.removeEventListener("changeBackMarker", this.$onChangeBackMarker); - this.session.removeEventListener("changeBreakpoint", this.$onChangeBreakpoint); - this.session.removeEventListener("changeAnnotation", this.$onChangeAnnotation); - this.session.removeEventListener("changeOverwrite", this.$onCursorChange); - this.session.removeEventListener("changeScrollTop", this.$onScrollTopChange); - this.session.removeEventListener("changeScrollLeft", this.$onScrollLeftChange); + this.session.off("change", this.$onDocumentChange); + this.session.off("changeMode", this.$onChangeMode); + this.session.off("tokenizerUpdate", this.$onTokenizerUpdate); + this.session.off("changeTabSize", this.$onChangeTabSize); + this.session.off("changeWrapLimit", this.$onChangeWrapLimit); + this.session.off("changeWrapMode", this.$onChangeWrapMode); + this.session.off("changeFold", this.$onChangeFold); + this.session.off("changeFrontMarker", this.$onChangeFrontMarker); + this.session.off("changeBackMarker", this.$onChangeBackMarker); + this.session.off("changeBreakpoint", this.$onChangeBreakpoint); + this.session.off("changeAnnotation", this.$onChangeAnnotation); + this.session.off("changeOverwrite", this.$onCursorChange); + this.session.off("changeScrollTop", this.$onScrollTopChange); + this.session.off("changeScrollLeft", this.$onScrollLeftChange); var selection = this.session.getSelection(); - selection.removeEventListener("changeCursor", this.$onCursorChange); - selection.removeEventListener("changeSelection", this.$onSelectionChange); + selection.off("changeCursor", this.$onCursorChange); + selection.off("changeSelection", this.$onSelectionChange); } this.session = session; if (session) { this.$onDocumentChange = this.onDocumentChange.bind(this); - session.addEventListener("change", this.$onDocumentChange); + session.on("change", this.$onDocumentChange); this.renderer.setSession(session); this.$onChangeMode = this.onChangeMode.bind(this); - session.addEventListener("changeMode", this.$onChangeMode); + session.on("changeMode", this.$onChangeMode); this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); - session.addEventListener("tokenizerUpdate", this.$onTokenizerUpdate); + session.on("tokenizerUpdate", this.$onTokenizerUpdate); this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); - session.addEventListener("changeTabSize", this.$onChangeTabSize); + session.on("changeTabSize", this.$onChangeTabSize); this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); - session.addEventListener("changeWrapLimit", this.$onChangeWrapLimit); + session.on("changeWrapLimit", this.$onChangeWrapLimit); this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); - session.addEventListener("changeWrapMode", this.$onChangeWrapMode); + session.on("changeWrapMode", this.$onChangeWrapMode); this.$onChangeFold = this.onChangeFold.bind(this); - session.addEventListener("changeFold", this.$onChangeFold); + session.on("changeFold", this.$onChangeFold); this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); - this.session.addEventListener("changeFrontMarker", this.$onChangeFrontMarker); + this.session.on("changeFrontMarker", this.$onChangeFrontMarker); this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); - this.session.addEventListener("changeBackMarker", this.$onChangeBackMarker); + this.session.on("changeBackMarker", this.$onChangeBackMarker); this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); - this.session.addEventListener("changeBreakpoint", this.$onChangeBreakpoint); + this.session.on("changeBreakpoint", this.$onChangeBreakpoint); this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); - this.session.addEventListener("changeAnnotation", this.$onChangeAnnotation); + this.session.on("changeAnnotation", this.$onChangeAnnotation); this.$onCursorChange = this.onCursorChange.bind(this); - this.session.addEventListener("changeOverwrite", this.$onCursorChange); + this.session.on("changeOverwrite", this.$onCursorChange); this.$onScrollTopChange = this.onScrollTopChange.bind(this); - this.session.addEventListener("changeScrollTop", this.$onScrollTopChange); + this.session.on("changeScrollTop", this.$onScrollTopChange); this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); - this.session.addEventListener("changeScrollLeft", this.$onScrollLeftChange); + this.session.on("changeScrollLeft", this.$onScrollLeftChange); this.selection = session.getSelection(); - this.selection.addEventListener("changeCursor", this.$onCursorChange); + this.selection.on("changeCursor", this.$onCursorChange); this.$onSelectionChange = this.onSelectionChange.bind(this); - this.selection.addEventListener("changeSelection", this.$onSelectionChange); + this.selection.on("changeSelection", this.$onSelectionChange); this.onChangeMode(); @@ -22763,9 +29250,9 @@ return /******/ (function(modules) { // webpackBootstrap if (enable) return; delete this.setAutoScrollEditorIntoView; - this.removeEventListener("changeSelection", onChangeSelection); - this.renderer.removeEventListener("afterRender", onAfterRender); - this.renderer.removeEventListener("beforeRender", onBeforeRender); + this.off("changeSelection", onChangeSelection); + this.renderer.off("afterRender", onAfterRender); + this.renderer.off("beforeRender", onBeforeRender); }; }; @@ -22820,6 +29307,11 @@ return /******/ (function(modules) { // webpackBootstrap autoScrollEditorIntoView: { set: function(val) {this.setAutoScrollEditorIntoView(val)} }, + keyboardHandler: { + set: function(val) { this.setKeyboardHandler(val); }, + get: function() { return this.keybindingId; }, + handlesSet: true + }, hScrollBarAlwaysVisible: "renderer", vScrollBarAlwaysVisible: "renderer", @@ -22936,7 +29428,7 @@ return /******/ (function(modules) { // webpackBootstrap start: delta.start, end: delta.end, lines: delta.lines.length == 1 ? null : delta.lines, - text: delta.lines.length == 1 ? delta.lines[0] : null, + text: delta.lines.length == 1 ? delta.lines[0] : null }; } @@ -24320,7 +30812,7 @@ return /******/ (function(modules) { // webpackBootstrap var CHAR_COUNT = 0; - var FontMetrics = exports.FontMetrics = function(parentEl, interval) { + var FontMetrics = exports.FontMetrics = function(parentEl) { this.el = dom.createElement("div"); this.$setMeasureNodeStyles(this.el.style, true); @@ -24415,7 +30907,7 @@ return /******/ (function(modules) { // webpackBootstrap rect = this.$measureNode.getBoundingClientRect(); } catch(e) { rect = {width: 0, height:0 }; - }; + } var size = { height: rect.height, width: rect.width / CHAR_COUNT @@ -24903,7 +31395,7 @@ return /******/ (function(modules) { // webpackBootstrap column : 0 }; - this.$fontMetrics = new FontMetrics(this.container, 500); + this.$fontMetrics = new FontMetrics(this.container); this.$textLayer.$setFontMetrics(this.$fontMetrics); this.$textLayer.addEventListener("changeCharacterSize", function(e) { _self.updateCharacterSize(); @@ -25298,8 +31790,12 @@ return /******/ (function(modules) { // webpackBootstrap return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); }; this.getLastFullyVisibleRow = function() { - var flint = Math.floor((this.layerConfig.height + this.layerConfig.offset) / this.layerConfig.lineHeight); - return this.layerConfig.firstRow - 1 + flint; + var config = this.layerConfig; + var lastRow = config.lastRow + var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; + if (top - this.session.getScrollTop() > config.height - config.lineHeight) + return lastRow - 1; + return lastRow; }; this.getLastVisibleRow = function() { return this.layerConfig.lastRow; @@ -25673,13 +32169,13 @@ return /******/ (function(modules) { // webpackBootstrap var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; if (scrollTop + topMargin > top) { - if (offset) + if (offset && scrollTop + topMargin > top + this.lineHeight) top -= offset * this.$size.scrollerHeight; if (top === 0) top = -this.scrollMargin.top; this.session.setScrollTop(top); } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) { - if (offset) + if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight) top += offset * this.$size.scrollerHeight; this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight); } @@ -26127,7 +32623,7 @@ return /******/ (function(modules) { // webpackBootstrap try { var workerSrc = mod.src; - var Blob = __webpack_require__(60); + var Blob = __webpack_require__(66); var blob = new Blob([ workerSrc ], { type: 'application/javascript' }); var blobUrl = (window.URL || window.webkitURL).createObjectURL(blob); @@ -27467,8 +33963,8 @@ return /******/ (function(modules) { // webpackBootstrap oldSession.multiSelect.off("removeRange", this.$onRemoveRange); oldSession.multiSelect.off("multiSelect", this.$onMultiSelect); oldSession.multiSelect.off("singleSelect", this.$onSingleSelect); - oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); - oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); + oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); + oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); } if (session) { @@ -27476,8 +33972,8 @@ return /******/ (function(modules) { // webpackBootstrap session.multiSelect.on("removeRange", this.$onRemoveRange); session.multiSelect.on("multiSelect", this.$onMultiSelect); session.multiSelect.on("singleSelect", this.$onSingleSelect); - session.multiSelect.lead.on("change", this.$checkMultiselectChange); - session.multiSelect.anchor.on("change", this.$checkMultiselectChange); + session.multiSelect.lead.on("change", this.$checkMultiselectChange); + session.multiSelect.anchor.on("change", this.$checkMultiselectChange); } if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { @@ -28340,7 +34836,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.config = acequire("./config"); exports.acequire = acequire; exports.edit = function(el) { - if (typeof(el) == "string") { + if (typeof el == "string") { var _id = el; el = document.getElementById(_id); if (!el) @@ -28358,7 +34854,7 @@ return /******/ (function(modules) { // webpackBootstrap oldNode.parentNode.replaceChild(el, oldNode); } else if (el) { value = dom.getInnerText(el); - el.innerHTML = ''; + el.innerHTML = ""; } var doc = exports.createEditSession(value); @@ -28387,7 +34883,7 @@ return /******/ (function(modules) { // webpackBootstrap } exports.EditSession = EditSession; exports.UndoManager = UndoManager; - exports.version = "1.2.2"; + exports.version = "1.2.3"; }); (function() { ace.acequire(["ace/ace"], function(a) { @@ -28402,7 +34898,49 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = window.ace.acequire("ace/ace"); /***/ }, -/* 26 */ +/* 65 */ +/***/ function(module, exports) { + + module.exports = function() { throw new Error("define cannot be used indirect"); }; + + +/***/ }, +/* 66 */ +/***/ function(module, exports) { + + /* WEBPACK VAR INJECTION */(function(global) {module.exports = get_blob() + + function get_blob() { + if(global.Blob) { + try { + new Blob(['asdf'], {type: 'text/plain'}) + return Blob + } catch(err) {} + } + + var Builder = global.WebKitBlobBuilder || + global.MozBlobBuilder || + global.MSBlobBuilder + + return function(parts, bag) { + var builder = new Builder + , endings = bag.endings + , type = bag.type + + if(endings) for(var i = 0, len = parts.length; i < len; ++i) { + builder.append(parts[i], endings) + } else for(var i = 0, len = parts.length; i < len; ++i) { + builder.append(parts[i]) + } + + return type ? builder.getBlob(type) : builder.getBlob() + } + } + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 67 */ /***/ function(module, exports, __webpack_require__) { ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { @@ -29053,7 +35591,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], __webpack_require__(39), "JsonWorker"); + var worker = new WorkerClient(["ace"], __webpack_require__(68), "JsonWorker"); worker.attachToDocument(session.getDocument()); worker.on("annotate", function(e) { @@ -29076,8 +35614,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { +/* 68 */ +/***/ function(module, exports) { + + module.exports.id = 'ace/mode/json_worker'; + module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; + +/***/ }, +/* 69 */ +/***/ function(module, exports) { ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(acequire, exports, module) { "use strict"; @@ -29497,5724 +36042,153 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - "id": "http://json-schema.org/draft-04/schema#", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#" - } - }, - "positiveInteger": { - "type": "integer", - "minimum": 0 - }, - "positiveIntegerDefault0": { - "allOf": [ - { - "$ref": "#/definitions/positiveInteger" - }, - { - "default": 0 - } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "uniqueItems": true - } - }, - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uri" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "multipleOf": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "boolean", - "default": false - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "boolean", - "default": false - }, - "maxLength": { - "$ref": "#/definitions/positiveInteger" - }, - "minLength": { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#" - } - ], - "default": {} - }, - "items": { - "anyOf": [ - { - "$ref": "#" - }, - { - "$ref": "#/definitions/schemaArray" - } - ], - "default": {} - }, - "maxItems": { - "$ref": "#/definitions/positiveInteger" - }, - "minItems": { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxProperties": { - "$ref": "#/definitions/positiveInteger" - }, - "minProperties": { - "$ref": "#/definitions/positiveIntegerDefault0" - }, - "required": { - "$ref": "#/definitions/stringArray" - }, - "additionalProperties": { - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#" - } - ], - "default": {} - }, - "definitions": { - "type": "object", - "additionalProperties": { - "$ref": "#" - }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#" - }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { - "$ref": "#" - }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "$ref": "#" - }, - { - "$ref": "#/definitions/stringArray" - } - ] - } - }, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { - "$ref": "#/definitions/simpleTypes" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/simpleTypes" - }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "allOf": { - "$ref": "#/definitions/schemaArray" - }, - "anyOf": { - "$ref": "#/definitions/schemaArray" - }, - "oneOf": { - "$ref": "#/definitions/schemaArray" - }, - "not": { - "$ref": "#" - } - }, - "dependencies": { - "exclusiveMaximum": [ - "maximum" - ], - "exclusiveMinimum": [ - "minimum" - ] - }, - "default": {} - }; - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - /* - * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license - * Author: Jim Palmer (based on chunking idea from Dave Koelle) - */ - /*jshint unused:false */ - module.exports = function naturalSort (a, b) { - "use strict"; - var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, - sre = /(^[ ]*|[ ]*$)/g, - dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, - hre = /^0x[0-9a-f]+$/i, - ore = /^0/, - i = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; }, - // convert all to strings strip whitespace - x = i(a).replace(sre, '') || '', - y = i(b).replace(sre, '') || '', - // chunk/tokenize - xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - // numeric, hex or date detection - xD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), - yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, - oFxNcL, oFyNcL; - // first try and sort Hex codes or Dates - if (yD) { - if ( xD < yD ) { return -1; } - else if ( xD > yD ) { return 1; } - } - // natural sorting through split numeric strings and default strings - for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { - // find floats not starting with '0', string or 0 if not defined (Clint Priest) - oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; - oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; - // handle numeric vs string comparison - number < string - (Kyle Adams) - if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; } - // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' - else if (typeof oFxNcL !== typeof oFyNcL) { - oFxNcL += ''; - oFyNcL += ''; - } - if (oFxNcL < oFyNcL) { return -1; } - if (oFxNcL > oFyNcL) { return 1; } - } - return 0; - }; - - -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - module.exports = function equal(a, b) { - if (a === b) return true; - - var arrA = Array.isArray(a) - , arrB = Array.isArray(b) - , i; - - if (arrA && arrB) { - if (a.length != b.length) return false; - for (i = 0; i < a.length; i++) - if (!equal(a[i], b[i])) return false; - return true; - } - - if (arrA != arrB) return false; - - if (a && b && typeof a === 'object' && typeof b === 'object') { - var keys = Object.keys(a); - - if (keys.length !== Object.keys(b).length) return false; - - for (i = 0; i < keys.length; i++) - if (b[keys[i]] === undefined) return false; - - for (i = 0; i < keys.length; i++) - if(!equal(a[keys[i]], b[keys[i]])) return false; - - return true; - } - - return false; - }; - - -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - - module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - ucs2length: ucs2length, - varOccurences: varOccurences, - varReplace: varReplace, - cleanUpCode: cleanUpCode, - cleanUpVarErrors: cleanUpVarErrors, - schemaHasRules: schemaHasRules, - stableStringify: __webpack_require__(24), - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer - }; - - - function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; - } - - - function checkDataType(dataType, data, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1))'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } - } - - - function checkDataTypes(dataTypes, data) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); - - return code; - } - } - - - function toHash(arr) { - var hash = {}; - for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; - } - - - function varOccurences(str, dataVar) { - dataVar += '[^0-9]'; - var matches = str.match(new RegExp(dataVar, 'g')); - return matches ? matches.length : 0; - } - - - function varReplace(str, dataVar, expr) { - dataVar += '([^0-9])'; - expr = expr.replace(/\$/g, '$$$$'); - return str.replace(new RegExp(dataVar, 'g'), expr + '$1'); - } - - - var EMPTY_ELSE = /else\s*{\s*}/g - , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g - , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g; - function cleanUpCode(out) { - return out.replace(EMPTY_ELSE, '') - .replace(EMPTY_IF_NO_ELSE, '') - .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))'); - } - - - var ERRORS_REGEXP = /[^v\.]errors/g - , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g - , RETURN_VALID = 'return errors === 0;' - , RETURN_TRUE = 'validate.errors = null; return true;'; - - function cleanUpVarErrors(out) { - var matches = out.match(ERRORS_REGEXP); - if (matches && matches.length === 2) - return out.replace(REMOVE_ERRORS, '') - .replace(RETURN_VALID, RETURN_TRUE); - else - return out; - } - - - function schemaHasRules(schema, rules) { - for (var key in schema) if (rules[key]) return true; - } - - - function toQuotedString(str) { - return '\'' + escapeQuotes(str) + '\''; - } - - - function getPathExpr(currentPath, expr, jsonPointers, isNumber) { - var path = jsonPointers // false by default - ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')') - : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\''); - return joinPaths(currentPath, path); - } - - - function getPath(currentPath, prop, jsonPointers) { - var path = jsonPointers // false by default - ? toQuotedString('/' + escapeJsonPointer(prop)) - : toQuotedString(getProperty(prop)); - return joinPaths(currentPath, path); - } - - - var RELATIVE_JSON_POINTER = /^([0-9]+)((?:[^0-9]|~0|~1)*)$/; - function getData($data, lvl, paths) { - var matches = $data.match(RELATIVE_JSON_POINTER); - if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data); - var up = +matches[1]; - var jsonPointer = matches[2]; - if (jsonPointer == '#') { - if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } else { - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - var data = 'data' + ((lvl - up) || '') - , expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i', - $result = 'result' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveFormatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); - if (!$exclusive) { - out += '='; - } - out += ' 0;'; - } - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '}'; - return out; - } - - -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_switch(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $ifPassed = 'ifPassed' + it.level, - $shouldContinue; - out += 'var ' + ($ifPassed) + ';'; - var arr1 = $schema; - if (arr1) { - var $sch, $caseIndex = -1, - l1 = arr1.length - 1; - while ($caseIndex < l1) { - $sch = arr1[$caseIndex += 1]; - if ($caseIndex && !$shouldContinue) { - out += ' if (!' + ($ifPassed) + ') { '; - $closingBraces += '}'; - } - if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - $it.schema = $sch.if; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; - } else { - out += ' ' + ($ifPassed) + ' = true; '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - } - } - $shouldContinue = $sch.continue - } - } - out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; '; - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - //all requires must be explicit because browserify won't work with dynamic requires - module.exports = { - '$ref': __webpack_require__(41), - allOf: __webpack_require__(42), - anyOf: __webpack_require__(43), - dependencies: __webpack_require__(44), - enum: __webpack_require__(45), - format: __webpack_require__(46), - items: __webpack_require__(47), - maximum: __webpack_require__(48), - minimum: __webpack_require__(48), - maxItems: __webpack_require__(49), - minItems: __webpack_require__(49), - maxLength: __webpack_require__(50), - minLength: __webpack_require__(50), - maxProperties: __webpack_require__(51), - minProperties: __webpack_require__(51), - multipleOf: __webpack_require__(52), - not: __webpack_require__(53), - oneOf: __webpack_require__(54), - pattern: __webpack_require__(55), - properties: __webpack_require__(56), - required: __webpack_require__(57), - uniqueItems: __webpack_require__(58), - validate: __webpack_require__(37) - }; - - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_validate(it, $keyword) { - var out = ''; - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.root.schema.id); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - if (it.opts.v5) it.dataPathArr = [undefined]; - out += ' validate = function (data, dataPath) { \'use strict\'; var vErrors = null; '; - out += ' var errors = 0; '; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if (it.schema.id) it.baseId = it.resolve.url(it.baseId, it.schema.id); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = '', - $errorKeyword; - var $typeSchema = it.schema.type; - var arr1 = it.RULES; - if (arr1) { - var $rulesGroup, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $rulesGroup = arr1[i1 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; - } - if (it.opts.useDefaults && !it.compositeRule) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr2 = $schemaKeys; - if (arr2) { - var $propertyKey, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $propertyKey = arr2[i2 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ' + (it.useDefault($sch.default)) + '; '; - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr3 = it.schema.items; - if (arr3) { - var $sch, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $sch = arr3[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ' + (it.useDefault($sch.default)) + '; '; - } - } - } - } - } - var arr4 = $rulesGroup.rules; - if (arr4) { - var $rule, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $rule = arr4[i4 += 1]; - if ($shouldUseRule($rule)) { - if ($rule.custom) { - var $schema = it.schema[$rule.keyword], - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it), - $ruleErrs = $ruleValidate.code + '.errors', - $schemaPath = it.schemaPath + '.' + $rule.keyword, - $errSchemaPath = it.errSchemaPath + '/' + $rule.keyword, - $errs = 'errs' + $lvl, - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $rDef = $rule.definition, - $inline = $rDef.inline, - $macro = $rDef.macro; - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;'; - if ($inline && $rDef.statements) { - out += ' ' + ($ruleValidate.validate); - } else if ($macro) { - var $it = it.util.copy(it); - $it.level++; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $ruleValidate.code); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } - out += 'if (! '; - if ($inline) { - if ($rDef.statements) { - out += ' valid' + ($lvl) + ' '; - } else { - out += ' (' + ($ruleValidate.validate) + ') '; - } - } else if ($macro) { - out += ' valid' + ($it.level) + ' '; - } else { - out += ' ' + ($ruleValidate.code) + '.call(self '; - if ($rDef.compile) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , validate.schema' + ($schemaPath) + ' , ' + ($data) + ' '; - if ($ruleValidate.validate.length > 2) { - out += ' , validate.schema' + (it.schemaPath) + ' '; - } - } - out += ' ) '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = __webpack_require__(64); - - function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; - } - - Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a puny coded representation of "domain". - // It only converts the part of the domain name that - // has non ASCII characters. I.e. it dosent matter if - // you call it with a domain that already is in ASCII. - var domainArray = this.hostname.split('.'); - var newOut = []; - for (var i = 0; i < domainArray.length; ++i) { - var s = domainArray[i]; - newOut.push(s.match(/[^A-Za-z0-9_-]/) ? - 'xn--' + punycode.encode(s) : s); - } - this.hostname = newOut.join('.'); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; - }; - - // format a parsed object into a url string - function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); - } - - Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; - }; - - function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); - } - - Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); - }; - - function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); - } - - Url.prototype.resolveObject = function(relative) { - if (isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - Object.keys(this).forEach(function(k) { - result[k] = this[k]; - }, this); - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - Object.keys(relative).forEach(function(k) { - if (k !== 'protocol') - result[k] = relative[k]; - }); - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - Object.keys(relative).forEach(function(k) { - result[k] = relative[k]; - }); - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host) && (last === '.' || last === '..') || - last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last == '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - }; - - Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; - }; - - function isString(arg) { - return typeof arg === "string"; - } - - function isObject(arg) { - return typeof arg === 'object' && arg !== null; - } - - function isNull(arg) { - return arg === null; - } - function isNullOrUndefined(arg) { - return arg == null; - } - - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports.id = 'ace/mode/json_worker'; - module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; - -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - exports.parse = __webpack_require__(62); - exports.stringify = __webpack_require__(63); - - -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_ref(it, $keyword) { - var out = ' '; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - out += ' if (! ' + ('validate') + '(' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - out += ') ) { if (vErrors === null) vErrors = ' + ('validate') + '.errors; else vErrors = vErrors.concat(' + ('validate') + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - out += ' if (! ' + ('root.refVal[0]') + '(' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - out += ') ) { if (vErrors === null) vErrors = ' + ('root.refVal[0]') + '.errors; else vErrors = vErrors.concat(' + ('root.refVal[0]') + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; - if (it.opts.missingRefs == 'fail') { - console.log($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - console.log($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - var $error = new Error($message); - $error.missingRef = it.resolve.url(it.baseId, $schema); - $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); - throw $error; - } - } else if (typeof $refVal == 'string') { - out += ' if (! ' + ($refVal) + '(' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - out += ') ) { if (vErrors === null) vErrors = ' + ($refVal) + '.errors; else vErrors = vErrors.concat(' + ($refVal) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - var $it = it.util.copy(it); - $it.level++; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - } - } - } - return out; - } - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_allOf(it, $keyword) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces.slice(0, -1)); - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_anyOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $noEmptySchema = $schema.every(function($sch) { - return it.util.schemaHasRules($sch, it.RULES.all); - }); - if ($noEmptySchema) { - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_dependencies(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $schemaDeps = {}, - $propertyDeps = {}; - for ($property in $schema) { - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } - out += 'var ' + ($errs) + ' = errors;'; - var $currentErrorPath = it.errorPath; - out += 'var missing' + ($lvl) + ';'; - for (var $property in $propertyDeps) { - $deps = $propertyDeps[$property]; - out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( '; - var arr1 = $deps; - if (arr1) { - var _$property, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - _$property = arr1[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ')) { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - it.errorPath = $currentErrorPath; - for (var $property in $schemaDeps) { - var $sch = $schemaDeps[$property]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\'' + ($property) + '\'] !== undefined) { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_enum(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $i = 'i' + $lvl; - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - if (it.opts.v5) $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); - var $passData = $data + '[i' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'i' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } else if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); - var $passData = $data + '[i' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'i' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate__limit(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<'; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp); - if ($exclusive) { - out += '='; - } - out += ' ' + ($schemaValue) + ') {'; - } - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate__limitItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate__limitLength(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 51 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate__limitProperties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_multipleOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_not(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (valid' + ($it.level) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; - } - - -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_oneOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - } else { - out += ' var valid' + ($it.level) + ' = true; '; - } - if ($i) { - out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; - } - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_pattern(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - -/***/ }, -/* 56 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_properties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional; - var $required = it.schema.required; - if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - if (it.opts.v5) { - var $pgProperties = it.schema.patternGroups || {}, - $pgPropertyKeys = Object.keys($pgProperties); - } - out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;'; - if ($checkAdditional) { - out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { '; - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 5) { - out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') '; - } - } - } - if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { - var arr3 = $pgPropertyKeys; - if (arr3) { - var $pgProperty, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $pgProperty = arr3[$i += 1]; - out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + key' + $lvl + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; - } else { - out += ' valid' + ($it.level) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have additional properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr4 = $schemaKeys; - if (arr4) { - var $propertyKey, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $propertyKey = arr4[i4 += 1]; - var $sch = $schema[$propertyKey]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - if (it.opts.v5) $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - var arr5 = $pPropertyKeys; - if (arr5) { - var $pProperty, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $pProperty = arr5[i5 += 1]; - var $sch = $pProperties[$pProperty]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else valid' + ($it.level) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (it.opts.v5) { - var arr6 = $pgPropertyKeys; - if (arr6) { - var $pgProperty, i6 = -1, - l6 = arr6.length - 1; - while (i6 < l6) { - $pgProperty = arr6[i6 += 1]; - var $pgSchema = $pgProperties[$pgProperty], - $sch = $pgSchema.schema; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; - $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; - out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else valid' + ($it.level) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - var $pgMin = $pgSchema.minimum, - $pgMax = $pgSchema.maximum; - if ($pgMin !== undefined || $pgMax !== undefined) { - out += ' var ' + ($valid) + ' = true; '; - var $currErrSchemaPath = $errSchemaPath; - if ($pgMin !== undefined) { - var $limit = $pgMin, - $reason = 'minimum', - $moreOrLess = 'less'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($pgMax !== undefined) { - out += ' else '; - } - } - if ($pgMax !== undefined) { - var $limit = $pgMax, - $reason = 'maximum', - $moreOrLess = 'more'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_required(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (!$isData) { - if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { - var $required = []; - var arr1 = $schema; - if (arr1) { - var $property, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $property = arr1[i1 += 1]; - var $propertySch = it.schema.properties[$property]; - if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var _$property, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - _$property = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $property, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $property = arr3[$i += 1]; - var $prop = it.util.getProperty($property), - $missingProperty = it.util.escapeQuotes($property); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers); - } - out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; - } - - -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - module.exports = function generate_uniqueItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = function() { throw new Error("define cannot be used indirect"); }; - - -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(global) {module.exports = get_blob() - - function get_blob() { - if(global.Blob) { - try { - new Blob(['asdf'], {type: 'text/plain'}) - return Blob - } catch(err) {} - } - - var Builder = global.WebKitBlobBuilder || - global.MozBlobBuilder || - global.MSBlobBuilder - - return function(parts, bag) { - var builder = new Builder - , endings = bag.endings - , type = bag.type - - if(endings) for(var i = 0, len = parts.length; i < len; ++i) { - builder.append(parts[i], endings) - } else for(var i = 0, len = parts.length; i < len; ++i) { - builder.append(parts[i]) - } - - return type ? builder.getBlob(type) : builder.getBlob() - } - } - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) - -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */ - ;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - true - ) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return punycode; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - - }(this)); - - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(65)(module), (function() { return this; }()))) - -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { - - var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - // Call error when something is wrong. - throw { - name: 'SyntaxError', - message: m, - at: at, - text: text - }; - }, - - next = function (c) { - // If a c parameter is provided, verify that it matches the current character. - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - - // Get the next character. When there are no more characters, - // return the empty string. - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - // Parse a number value. - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - // Parse a string value. - var hex, - i, - string = '', - uffff; - - // When parsing for string values, we must look for " and \ characters. - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - - // Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - - // true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - - // Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - - // Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - - value = function () { - - // Parse a JSON value. It could be an object, an array, a string, a number, - // or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } - }; - - // Return the json_parse function. It will have access to all of the above - // functions and variables. - - module.exports = function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - // If there is a reviver function, we recursively walk the new structure, - // passing each name/value pair to the reviver function for possible - // transformation, starting with a temporary root object that holds the result - // in an empty key. If there is not a reviver function, we simply return the - // result. - - return typeof reviver === 'function' ? (function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '')) : result; - }; - - -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - function str(key, holder) { - // Produce a string from holder[key]. - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - return String(value); - - case 'object': - if (!value) return 'null'; - gap += indent; - partial = []; - - // Array.isArray - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and - // wrap them in brackets. - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be - // stringified. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - else { - // Otherwise, iterate through all of the keys in the object. - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - - module.exports = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } - // If the space parameter is a string, it will be used as the indent string. - else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' - && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - return str('', {'': value}); - }; - - -/***/ }, -/* 64 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.decode = exports.parse = __webpack_require__(66); - exports.encode = exports.stringify = __webpack_require__(67); - - -/***/ }, -/* 65 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } - - -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { - - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - 'use strict'; - - // If obj.hasOwnProperty has been overridden, then calling - // obj.hasOwnProperty(prop) will break. - // See: https://github.com/joyent/node/issues/1707 - function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (Array.isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; - }; - - -/***/ }, -/* 67 */ -/***/ function(module, exports, __webpack_require__) { - - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - 'use strict'; - - var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } - }; - - module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return Object.keys(obj).map(function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (Array.isArray(obj[k])) { - return obj[k].map(function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); - }; +/* 70 */ +/***/ function(module, exports) { + + /* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ + + ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) { + + exports.isDark = false; + exports.cssClass = "ace-jsoneditor"; + exports.cssText = ".ace-jsoneditor .ace_gutter {\ + background: #ebebeb;\ + color: #333\ + }\ + \ + .ace-jsoneditor.ace_editor {\ + font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\ + line-height: 1.3;\ + }\ + .ace-jsoneditor .ace_print-margin {\ + width: 1px;\ + background: #e8e8e8\ + }\ + .ace-jsoneditor .ace_scroller {\ + background-color: #FFFFFF\ + }\ + .ace-jsoneditor .ace_text-layer {\ + color: gray\ + }\ + .ace-jsoneditor .ace_variable {\ + color: #1a1a1a\ + }\ + .ace-jsoneditor .ace_cursor {\ + border-left: 2px solid #000000\ + }\ + .ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\ + border-left: 0px;\ + border-bottom: 1px solid #000000\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_selection {\ + background: lightgray\ + }\ + .ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\ + box-shadow: 0 0 3px 0px #FFFFFF;\ + border-radius: 2px\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_step {\ + background: rgb(255, 255, 0)\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_bracket {\ + margin: -1px 0 0 -1px;\ + border: 1px solid #BFBFBF\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_active-line {\ + background: #FFFBD1\ + }\ + .ace-jsoneditor .ace_gutter-active-line {\ + background-color : #dcdcdc\ + }\ + .ace-jsoneditor .ace_marker-layer .ace_selected-word {\ + border: 1px solid lightgray\ + }\ + .ace-jsoneditor .ace_invisible {\ + color: #BFBFBF\ + }\ + .ace-jsoneditor .ace_keyword,\ + .ace-jsoneditor .ace_meta,\ + .ace-jsoneditor .ace_support.ace_constant.ace_property-value {\ + color: #AF956F\ + }\ + .ace-jsoneditor .ace_keyword.ace_operator {\ + color: #484848\ + }\ + .ace-jsoneditor .ace_keyword.ace_other.ace_unit {\ + color: #96DC5F\ + }\ + .ace-jsoneditor .ace_constant.ace_language {\ + color: darkorange\ + }\ + .ace-jsoneditor .ace_constant.ace_numeric {\ + color: red\ + }\ + .ace-jsoneditor .ace_constant.ace_character.ace_entity {\ + color: #BF78CC\ + }\ + .ace-jsoneditor .ace_invalid {\ + color: #FFFFFF;\ + background-color: #FF002A;\ + }\ + .ace-jsoneditor .ace_fold {\ + background-color: #AF956F;\ + border-color: #000000\ + }\ + .ace-jsoneditor .ace_storage,\ + .ace-jsoneditor .ace_support.ace_class,\ + .ace-jsoneditor .ace_support.ace_function,\ + .ace-jsoneditor .ace_support.ace_other,\ + .ace-jsoneditor .ace_support.ace_type {\ + color: #C52727\ + }\ + .ace-jsoneditor .ace_string {\ + color: green\ + }\ + .ace-jsoneditor .ace_comment {\ + color: #BCC8BA\ + }\ + .ace-jsoneditor .ace_entity.ace_name.ace_tag,\ + .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\ + color: #606060\ + }\ + .ace-jsoneditor .ace_markup.ace_underline {\ + text-decoration: underline\ + }\ + .ace-jsoneditor .ace_indent-guide {\ + background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ + }"; + + var dom = acequire("../lib/dom"); + dom.importCssString(exports.cssText, exports.cssClass); + }); /***/ } diff --git a/dist/jsoneditor.map b/dist/jsoneditor.map index a4cb493..e000ee4 100644 --- a/dist/jsoneditor.map +++ b/dist/jsoneditor.map @@ -1 +1 @@ -{"version":3,"file":"jsoneditor.map","sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","node","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","search","hasOwnProperty","debounce","bind","Function","content","table","params","field","value","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","MAX_ERRORS","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","originalOnChange","setValue","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","innerHTML","join","jsonlint","jsonString","jsString","curr","charAt","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","quote","parseKey","specialValues","key","regexp","test","match","replace","charCodeAt","toString","a","b","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childNodes","iMax","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","SCHEMA_URI_FORMAT_FUNC","str","SCHEMA_URI_FORMAT","opts","schemaKeyRef","v","getSchema","schemaObj","_addSchema","_compile","self","addSchema","_skipValidation","_meta","resolve","normalizeId","checkUnique","_schemas","meta","addMetaSchema","throwOrLogError","$schema","v5","META_SCHEMA_ID","currentUriFormat","_formats","uri","errorsText","keyRef","_getSchemaObj","_refs","removeSchema","_cache","del","jsonStr","stableStringify","skipValidation","cached","localRefs","ids","SchemaObject","put","callValidate","result","compiling","currentRA","removeAdditional","currentUD","useDefaults","compileSchema","refs","refVal","separator","dataVar","e","addFormat","addInitialSchemas","metaSchema","optsSchemas","schemas","addInitialFormats","formats","cache","Cache","_loadingSchemas","RULES","rules","errorDataPath","_errorDataPathProperty","enable","loopRequired","compileAsync","addKeyword","current","onSwitch","availableModes","code","form","tree","view","item","currentMode","currentTitle","box","position","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","createMenuItems","list","domItems","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","path","getPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","n","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapedText","_escapeJSON","trim","escaped","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","hash","popStack","stack","vstack","lstack","lex","token","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","ref","inlineRef","inlineRefs","baseId","res","_resolve","url","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","$ref","checkNoRef","countKeys","SIMPLE_INLINED","normalize","protocol","host","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","equal","escapeFragment","toHash","copy","formatDefs","fName","compare","date","matches","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","hostname","HOSTNAME","NOT_URI_FRAGMENT","URI","regex","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","UUID","JSON_POINTER","RELATIVE_JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","ruleModules","keywords","types","group","enableV5","inline","statements","macro","containsMacro","formatLimit","not","_compileAsync","firstCall","loadMissingSchema","schemaLoaded","sch","missingSchema","missingRef","_callbacks","loadSchema","deferCallback","IDENTIFIER","definition","_addRule","dataType","ruleGroup","rg","rule","custom","checkDataType","trAppend","tdAppend","domText","paddingLeft","localCompile","_schema","_root","isRoot","validateCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","beautify","indent_size","eval","log","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","replaceLocalRef","refId","regexStr","patternsHash","toQuotedString","valueStr","defaultsHash","parentSchema","it","customRulesHash","statement","js_beautify","ucs2length","acequire","isDark","cssClass","cssText","importCssString","cmp","space","cycles","replacer","aobj","bobj","seen","indent","colonSeparator","toJSON","out","TypeError","objectKeys","keyValue","x","has","exportAce","ns","global","packaged","original","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","l","dep","packagedModule","normalizeModule","moduleName","chunks","base","mod","req","returnValue","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","source","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","floor","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","pos","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","every","reduceRight","sought","lastIndexOf","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","properties","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","o","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssStylsheet","link","rel","getInnerWidth","parseInt","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","proto","oop","Keys","ret","MODIFIER_KEYS",224,"KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS",27,32,33,34,35,36,37,38,39,40,44,45,46,96,97,98,99,100,101,102,103,104,105,"-13",112,113,114,115,116,117,118,119,120,121,122,123,144,145,"PRINTABLE_KEYS",48,49,50,51,52,53,54,55,56,57,59,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,107,109,110,186,187,188,189,190,191,192,219,220,221,222,111,106,"enter","escape","esc","mods","pow","keyCodeToString","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","timeouts","callbackName","startX","startY","timer","clicks","eventNames","isNewClick","_clicks","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","last","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","val","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","t","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","counter","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","s","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","sep","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","h","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","codePoint","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","unicode","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","applyDelta","docLines","delta","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","w","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","number","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","flint","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","$theme","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","q","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","version","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext","description","definitions","schemaArray","minItems","positiveInteger","minimum","positiveIntegerDefault0","allOf","default","simpleTypes","enum","stringArray","uniqueItems","multipleOf","exclusiveMinimum","maximum","exclusiveMaximum","maxLength","minLength","pattern","additionalItems","anyOf","maxItems","maxProperties","minProperties","required","additionalProperties","patternProperties","dependencies","oneOf","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","arrA","arrB","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","integer","getProperty","SINGLE_QUOTE","escapeQuotes","varOccurences","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","escapeJsonPointer","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","formatMaximum","formatMinimum","exclusiveFormatMaximum","exclusiveFormatMinimum","constant","patternGroups","switch","if","then","continue","$keyword","$errorKeyword","$lvl","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","$valid","$isData","$schemaValue","dataPathArr","$$outStack","createErrors","messages","__err","compositeRule","$schemaFormat","$isDataFormat","$closingBraces","$schemaValueFormat","$format","$compare","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$result","$schemaValueExcl","$exclusive","$opExpr","$opStr","$errs","$it","$shouldContinue","$ifPassed","arr1","$sch","$caseIndex","l1","$wasComposite","$shouldUseGroup","$rulesGroup","$shouldUseRule","$rule","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","i1","$schemaKeys","arr2","$propertyKey","i2","l2","$passData","arr3","$i","l3","arr4","i4","l4","$ruleValidate","$ruleErrs","$ruleErr","$rDef","$inline","$macro","$code","def_customError","$typeChecked","$isArray","$method","Url","slashes","auth","port","query","pathname","urlParse","parseQueryString","slashesDenoteHost","isObject","u","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","arg","isNull","isNullOrUndefined","punycode","protocolPattern","portPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","rest","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","k","validParts","notHost","bit","domainArray","newOut","encode","ae","qm","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","$refVal","$message","missingRefs","$error","$noEmptySchema","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","$currErrSchemaPath","$notOp","multipleOfPrecision","$regexp","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","$pProperty","$pgProperty","$additionalProperty","$useDefaults","$hasDefault","$useData","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","get_blob","Builder","MSBlobBuilder","bag","builder","endings","__WEBPACK_AMD_DEFINE_RESULT__","RangeError","mapDomain","regexSeparators","labels","encoded","ucs2decode","extra","ucs2encode","stringFromCharCode","basicToDigit","digitToBasic","adapt","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","basic","oldi","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeGlobal","nodeType","not-basic","invalid-input","ucs2","at","escapee","\"","\\","/","hex","uffff","white","reviver","holder","escapable","partial","mind","gap","rep","\b","\t","\n","\f","\r","webpackPolyfill","deprecate","qs","eq","maxKeys","kstr","vstr","stringifyPrimitive","ks"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","SCHEMA_URI_FORMAT_FUNC","str","SCHEMA_URI_FORMAT","test","opts","schemaKeyRef","v","getSchema","schemaObj","_addSchema","_compile","valid","async","self","_opts","co","errors","addSchema","key","_skipValidation","_meta","Array","undefined","resolve","normalizeId","checkUnique","_schemas","meta","addMetaSchema","skipValidation","throwOrLogError","$schema","defaultMeta","currentUriFormat","_formats","uri","message","errorsText","v5","META_SCHEMA_ID","keyRef","_getSchemaObj","_refs","removeSchema","_removeAllSchemas","_cache","del","jsonStr","RegExp","stableStringify","schemas","regex","shouldAddSchema","cached","addUsedSchema","localRefs","ids","SchemaObject","put","callValidate","_validate","result","apply","compiling","$async","currentOpts","_metaOpts","compileSchema","refs","refVal","separator","dataVar","text","e","dataPath","slice","addFormat","format","addInitialSchemas","metaSchema","optsSchemas","addInitialFormats","formats","getMetaSchemaOptions","metaOpts","copy","META_IGNORE_OPTIONS","cache","Cache","_loadingSchemas","RULES","rules","loopRequired","Infinity","transpile","setup","beautify","indent_size","errorDataPath","_errorDataPathProperty","enable","compileAsync","addKeyword","ValidationError","baseId","localCompile","_schema","_root","isRoot","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","validateCode","_transpileFunc","eval","ref","url","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","code","inline","regexStr","index","patternsHash","value","toQuotedString","valueStr","defaultsHash","rule","parentSchema","it","definition","macro","keyword","arr","statement","js_beautify","ucs2length","equal","res","_resolve","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","parts","split","part","unescapeFragment","PREVENT_SCOPE_CHANGE","$ref","limit","checkNoRef","countKeys","item","count","SIMPLE_INLINED","normalize","protocol","host","path","replace","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","escapeFragment","toHash","Url","slashes","auth","port","hostname","search","query","pathname","href","urlParse","parseQueryString","slashesDenoteHost","isObject","u","urlFormat","obj","isString","urlResolve","source","relative","urlResolveObject","resolveObject","arg","isNull","isNullOrUndefined","punycode","protocolPattern","portPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","TypeError","rest","trim","proto","exec","lowerProto","toLowerCase","substr","match","hostEnd","hec","atSign","lastIndexOf","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","newpart","j","k","charCodeAt","validParts","notHost","bit","push","unshift","join","domainArray","newOut","s","encode","h","ae","esc","encodeURIComponent","escape","qm","charAt","rel","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","type","RangeError","map","array","fn","mapDomain","string","regexSeparators","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","out","basic","oldi","w","t","baseMinusT","inputLength","n","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeGlobal","nodeType","window","overflow","not-basic","invalid-input","Math","String","fromCharCode","version","ucs2","webpackPolyfill","deprecate","paths","children","hasOwnProperty","qs","sep","eq","regexp","maxKeys","len","kstr","vstr","x","idx","stringifyPrimitive","isFinite","ks","a","b","arrA","arrB","o","to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","types","object","number","integer","coerceToTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","SINGLE_QUOTE","escapeQuotes","pos","varOccurences","matches","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_TRUE_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","escapeJsonPointer","getData","$data","lvl","RELATIVE_JSON_POINTER","jsonPointer","segments","segment","unescapeJsonPointer","cmp","space","cycles","replacer","f","node","aobj","bobj","seen","parent","level","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","","toString","has","at","ch","escapee","\"","\\","/","r","next","hex","uffff","parseInt","white","word","reviver","walk","holder","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","setupAsync","required","check","TRANSPILE","ASYNC","MODES","checkGenerators","checkAsyncFunction","getRegenerator","regenerator","runtime","regeneratorTranspile","getNodent","nodent","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","callback","_compileAsync","firstCall","loadMissingSchema","schemaLoaded","sch","missingSchema","missingRef","_callbacks","loadSchema","deferCallback","setTimeout","*","co*","es7","$keyword","$shouldUseGroup","$rulesGroup","$shouldUseRule","$rule","additionalProperties","patternProperties","patternGroups","$top","$lvl","$dataLvl","dataLevel","rootId","$es7","yieldAwait","dataPathArr","$errorKeyword","$valid","$breakOnError","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$schemaPath","$errSchemaPath","$method","$dataType","$coerced","$bracesCoercion","arr1","$type","$i","l1","$$outStack","createErrors","messages","__err","compositeRule","$parentData","$dataProperty","arr2","i2","l2","useDefaults","properties","$schemaKeys","arr3","$propertyKey","i3","l3","$sch","$passData","items","arr4","l4","arr5","i5","l5","custom","$ruleValidate","$ruleErrs","$errs","$ruleErr","$rDef","$asyncKeyword","$inline","$macro","statements","$it","$wasComposite","$code","passContext","def_callRuleValidate","def_customError","$typeChecked","gen","ctx","args","Promise","reject","onFulfilled","ret","onRejected","done","toPromise","isPromise","then","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","objectToPromise","all","defer","promise","results","constructor","displayName","val","wrap","createPromise","__generatorFunction__","validation","formatDefs","fName","compare","date","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","HOSTNAME","NOT_URI_FRAGMENT","URI","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","UUID","JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","ruleModules","keywords","group","allOf","anyOf","dependencies","enum","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","uniqueItems","$refCode","$refVal","$message","missingRefs","$error","__callValidate","$closingBraces","$noEmptySchema","every","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isData","$schemaValue","$format","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$schemaValueExcl","$exclusive","$opExpr","$opStr","unicode","multipleOfPrecision","$allErrorsOption","$regexp","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","i1","$pProperty","$pgProperty","$additionalProperty","$useDefaults","i4","$hasDefault","$useData","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","enableV5","_addKeyword","inlineFunc","inlineFunctions","switch","constant","_formatLimit","patternRequired","containsMacro","$shouldContinue","$ifPassed","$caseIndex","$schemaFormat","$isDataFormat","$schemaValueFormat","$compare","$result","$key","$matched","$missingPattern","description","definitions","schemaArray","positiveInteger","positiveIntegerDefault0","default","simpleTypes","stringArray","title","exclusiveMinimum","exclusiveMaximum","formatMaximum","formatMinimum","exclusiveFormatMaximum","exclusiveFormatMinimum","contains","if","continue","_addRule","ruleGroup","rg","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","debounce","bind","Function","content","table","params","field","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","querySelector","menu","collapse","tbody","getDom","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","filter","entry","reduce","findParents","child","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","scrollTo","editor","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","parseKey","specialValues","escapeUnicodeChars","Number","Boolean","isUrlRegex","isUrl","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","popStack","stack","vstack","lstack","lex","token","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","matched","conditionStack","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","MAX_ERRORS","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","editorDom","edit","$blockScrolling","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","force","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","exportAce","ns","packaged","original","acequire","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","dep","packagedModule","normalizeModule","moduleName","chunks","mod","req","returnValue","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","reduceRight","sought","getPrototypeOf","__proto__","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","importCssStylsheet","link","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS",224,"KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS",27,32,33,34,35,36,37,38,39,40,44,45,46,96,97,98,99,100,101,102,103,104,105,"-13",112,113,114,115,116,117,118,119,120,121,122,123,144,145,"PRINTABLE_KEYS",48,49,50,51,52,53,54,55,56,57,59,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,107,109,110,186,187,188,189,190,191,192,219,220,221,222,111,106,"enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","onMousedown","clicks","isNewClick","startX","startY","timer","_clicks","eventNames","onDblclick","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","windowBlurred","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","get_blob","Builder","MSBlobBuilder","bag","builder","endings","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext"],"mappings":"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","file":"jsoneditor.map"} \ No newline at end of file diff --git a/dist/jsoneditor.min.css b/dist/jsoneditor.min.css index 3268c32..819b3e3 100644 --- a/dist/jsoneditor.min.css +++ b/dist/jsoneditor.min.css @@ -1 +1 @@ -div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-readonly{min-width:16px;color:gray}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty::after,div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}div.jsoneditor-field.jsoneditor-empty::after{content:"field"}div.jsoneditor-value.jsoneditor-empty::after{content:"value"}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:green;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:gray}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#FFFFAB;border:1px solid #ff0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-string{color:green}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px;color:grey}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ED0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:url(img/jsoneditor-icons.svg)}div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree,div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree{cursor:pointer}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu:focus,div.jsoneditor-tree button.jsoneditor-contextmenu:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu{background-position:-48px -48px}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor{color:#1A1A1A;border:1px solid #3883fa;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;overflow:hidden;position:relative;padding:0;line-height:100%}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}div.jsoneditor-outer{margin:-35px 0 0;padding:35px 0 0;box-sizing:border-box}div.jsoneditor-outer,textarea.jsoneditor-text{width:100%;height:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}textarea.jsoneditor-text{margin:0;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#e6e6e6}tr.jsoneditor-selected button.jsoneditor-contextmenu,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(img/jsoneditor-icons.svg)-72px -72px;cursor:move}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}div.jsoneditor td,div.jsoneditor td.jsoneditor-tree{vertical-align:top}.jsoneditor-schema-error,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value{font-family:droid sans mono,consolas,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1A1A1A}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}div.jsoneditor-tree .jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg)-168px -48px}.jsoneditor-schema-error .jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;display:none;padding:7px 10px;position:absolute;width:200px;z-index:4}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-schema-error .jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:'';display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before,.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-top:7px solid transparent;border-bottom:7px solid transparent;content:'';top:19px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;right:-14px;left:inherit}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;left:-14px}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;-webkit-animation:fade-in .3s linear 1,move-up .3s linear 1;-moz-animation:fade-in .3s linear 1,move-up .3s linear 1;-ms-animation:fade-in .3s linear 1,move-up .3s linear 1}@-webkit-keyframes fade-in{from{opacity:0}to{opacity:1}}@-moz-keyframes fade-in{from{opacity:0}to{opacity:1}}@-ms-keyframes fade-in{from{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;background-color:#ffef8b;border-top:1px solid gold}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg)-168px -48px}div.jsoneditor-contextmenu-root{position:relative;width:0;height:0}div.jsoneditor-contextmenu{position:absolute;z-index:99999}div.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}div.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;line-height:26px;text-align:left}div.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}div.jsoneditor-contextmenu ul li button:focus,div.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}div.jsoneditor-contextmenu ul li button.jsoneditor-default{width:92px}div.jsoneditor-contextmenu ul li button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}div.jsoneditor-contextmenu div.jsoneditor-icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.svg)}div.jsoneditor-contextmenu ul li button div.jsoneditor-expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg)0 -72px;opacity:.4}div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand{opacity:1}div.jsoneditor-contextmenu div.jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}div.jsoneditor-contextmenu button.jsoneditor-remove>div.jsoneditor-icon{background-position:-24px -24px}div.jsoneditor-contextmenu button.jsoneditor-remove:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-remove:hover>div.jsoneditor-icon{background-position:-24px 0}div.jsoneditor-contextmenu button.jsoneditor-append>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-append:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-append:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-insert>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-insert:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-insert:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-duplicate>div.jsoneditor-icon{background-position:-48px -24px}div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover>div.jsoneditor-icon{background-position:-48px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-asc>div.jsoneditor-icon{background-position:-168px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover>div.jsoneditor-icon{background-position:-168px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-desc>div.jsoneditor-icon{background-position:-192px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover>div.jsoneditor-icon{background-position:-192px 0}div.jsoneditor-contextmenu ul li button.jsoneditor-selected,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}div.jsoneditor-contextmenu ul li{overflow:hidden}div.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}div.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}div.jsoneditor-contextmenu ul li ul li button:focus,div.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}div.jsoneditor-contextmenu button.jsoneditor-type-string>div.jsoneditor-icon{background-position:-144px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:hover>div.jsoneditor-icon{background-position:-144px 0}div.jsoneditor-contextmenu button.jsoneditor-type-auto>div.jsoneditor-icon{background-position:-120px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover>div.jsoneditor-icon{background-position:-120px 0}div.jsoneditor-contextmenu button.jsoneditor-type-object>div.jsoneditor-icon{background-position:-72px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:hover>div.jsoneditor-icon{background-position:-72px 0}div.jsoneditor-contextmenu button.jsoneditor-type-array>div.jsoneditor-icon{background-position:-96px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:hover>div.jsoneditor-icon{background-position:-96px 0}div.jsoneditor-contextmenu button.jsoneditor-type-modes>div.jsoneditor-icon{background-image:none;width:6px}div.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}div.jsoneditor-menu>button,div.jsoneditor-menu>div.jsoneditor-modes>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:url(img/jsoneditor-icons.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}div.jsoneditor-menu>button:hover,div.jsoneditor-menu>div.jsoneditor-modes>button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}div.jsoneditor-menu>button:active,div.jsoneditor-menu>button:focus,div.jsoneditor-menu>div.jsoneditor-modes>button:active,div.jsoneditor-menu>div.jsoneditor-modes>button:focus{background-color:rgba(255,255,255,.3)}div.jsoneditor-menu>button:disabled,div.jsoneditor-menu>div.jsoneditor-modes>button:disabled{opacity:.5}div.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}div.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}div.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}div.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}div.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}div.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}div.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}div.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}div.jsoneditor-menu>div.jsoneditor-modes{display:inline-block;float:left}div.jsoneditor-menu>div.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}div.jsoneditor-menu>button.jsoneditor-separator,div.jsoneditor-menu>div.jsoneditor-modes>button.jsoneditor-separator{margin-left:10px}div.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}div.jsoneditor-menu a:hover{opacity:1}div.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}table.jsoneditor-search div.jsoneditor-results,table.jsoneditor-search input{font-family:arial,sans-serif;font-size:10pt;color:#1A1A1A;background:0 0}table.jsoneditor-search div.jsoneditor-results{color:#fff;padding-right:5px;line-height:24px}table.jsoneditor-search{position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0}table.jsoneditor-search div.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}table.jsoneditor-search div.jsoneditor-frame table{border-collapse:collapse}table.jsoneditor-search input{width:120px;border:none;outline:0;margin:1px;line-height:20px}table.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.svg);vertical-align:top}table.jsoneditor-search button:hover{background-color:transparent}table.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}table.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}table.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}table.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}table.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px} \ No newline at end of file +div.jsoneditor,div.jsoneditor-outer{-moz-box-sizing:border-box;-webkit-box-sizing:border-box}div.jsoneditor input{height:auto;border:inherit}div.jsoneditor input:focus{border:none!important;box-shadow:none!important}div.jsoneditor table{border-collapse:collapse;width:auto}div.jsoneditor td,div.jsoneditor th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-readonly{min-width:16px;color:gray}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty::after,div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}div.jsoneditor-field.jsoneditor-empty::after{content:"field"}div.jsoneditor-value.jsoneditor-empty::after{content:"value"}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:green;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:gray}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#FFFFAB;border:1px solid #ff0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-string{color:green}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px;color:grey}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ED0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-tree button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:url(img/jsoneditor-icons.svg)}div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree,div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree{cursor:pointer}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu:focus,div.jsoneditor-tree button.jsoneditor-contextmenu:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu{background-position:-48px -48px}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor{color:#1A1A1A;border:1px solid #3883fa;box-sizing:border-box;width:100%;height:100%;overflow:hidden;position:relative;padding:0;line-height:100%}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%;margin:0}div.jsoneditor-outer{width:100%;height:100%;margin:-35px 0 0;padding:35px 0 0;box-sizing:border-box}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}textarea.jsoneditor-text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#e6e6e6}tr.jsoneditor-selected button.jsoneditor-contextmenu,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(img/jsoneditor-icons.svg) -72px -72px;cursor:move}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}div.jsoneditor td,div.jsoneditor td.jsoneditor-tree{vertical-align:top}.jsoneditor-schema-error,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value{font-family:droid sans mono,consolas,monospace,courier new,courier,sans-serif;font-size:10pt;color:#1A1A1A}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}div.jsoneditor-tree .jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) -168px -48px}.jsoneditor-schema-error .jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;display:none;padding:7px 10px;position:absolute;width:200px;z-index:4}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-schema-error .jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:'';display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before,.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-top:7px solid transparent;border-bottom:7px solid transparent;content:'';top:19px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;right:-14px;left:inherit}.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;left:-14px}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;-webkit-animation:fade-in .3s linear 1,move-up .3s linear 1;-moz-animation:fade-in .3s linear 1,move-up .3s linear 1;-ms-animation:fade-in .3s linear 1,move-up .3s linear 1}@-webkit-keyframes fade-in{from{opacity:0}to{opacity:1}}@-moz-keyframes fade-in{from{opacity:0}to{opacity:1}}@-ms-keyframes fade-in{from{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;background-color:#ffef8b;border-top:1px solid gold}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) -168px -48px}div.jsoneditor-contextmenu-root{position:relative;width:0;height:0}div.jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:99999}div.jsoneditor-contextmenu ul{position:relative;left:0;top:0;width:124px;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}div.jsoneditor-contextmenu ul li button{padding:0;margin:0;width:124px;height:24px;border:none;cursor:pointer;color:#4d4d4d;background:0 0;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;line-height:26px;text-align:left}div.jsoneditor-contextmenu ul li button::-moz-focus-inner{padding:0;border:0}div.jsoneditor-contextmenu ul li button:focus,div.jsoneditor-contextmenu ul li button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}div.jsoneditor-contextmenu ul li button.jsoneditor-default{width:92px}div.jsoneditor-contextmenu ul li button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}div.jsoneditor-contextmenu div.jsoneditor-icon{float:left;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(img/jsoneditor-icons.svg)}div.jsoneditor-contextmenu ul li button div.jsoneditor-expand{float:right;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(img/jsoneditor-icons.svg) 0 -72px;opacity:.4}div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand{opacity:1}div.jsoneditor-contextmenu div.jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}div.jsoneditor-contextmenu button.jsoneditor-remove>div.jsoneditor-icon{background-position:-24px -24px}div.jsoneditor-contextmenu button.jsoneditor-remove:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-remove:hover>div.jsoneditor-icon{background-position:-24px 0}div.jsoneditor-contextmenu button.jsoneditor-append>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-append:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-append:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-insert>div.jsoneditor-icon{background-position:0 -24px}div.jsoneditor-contextmenu button.jsoneditor-insert:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-insert:hover>div.jsoneditor-icon{background-position:0 0}div.jsoneditor-contextmenu button.jsoneditor-duplicate>div.jsoneditor-icon{background-position:-48px -24px}div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover>div.jsoneditor-icon{background-position:-48px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-asc>div.jsoneditor-icon{background-position:-168px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover>div.jsoneditor-icon{background-position:-168px 0}div.jsoneditor-contextmenu button.jsoneditor-sort-desc>div.jsoneditor-icon{background-position:-192px -24px}div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover>div.jsoneditor-icon{background-position:-192px 0}div.jsoneditor-contextmenu ul li button.jsoneditor-selected,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}div.jsoneditor-contextmenu ul li{overflow:hidden}div.jsoneditor-contextmenu ul li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}div.jsoneditor-contextmenu ul li ul li button{padding-left:24px;animation:all ease-in-out 1s}div.jsoneditor-contextmenu ul li ul li button:focus,div.jsoneditor-contextmenu ul li ul li button:hover{background-color:#f5f5f5}div.jsoneditor-contextmenu button.jsoneditor-type-string>div.jsoneditor-icon{background-position:-144px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-string:hover>div.jsoneditor-icon{background-position:-144px 0}div.jsoneditor-contextmenu button.jsoneditor-type-auto>div.jsoneditor-icon{background-position:-120px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover>div.jsoneditor-icon{background-position:-120px 0}div.jsoneditor-contextmenu button.jsoneditor-type-object>div.jsoneditor-icon{background-position:-72px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-object:hover>div.jsoneditor-icon{background-position:-72px 0}div.jsoneditor-contextmenu button.jsoneditor-type-array>div.jsoneditor-icon{background-position:-96px -24px}div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:focus>div.jsoneditor-icon,div.jsoneditor-contextmenu button.jsoneditor-type-array:hover>div.jsoneditor-icon{background-position:-96px 0}div.jsoneditor-contextmenu button.jsoneditor-type-modes>div.jsoneditor-icon{background-image:none;width:6px}div.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}div.jsoneditor-menu>button,div.jsoneditor-menu>div.jsoneditor-modes>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:url(img/jsoneditor-icons.svg);color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}div.jsoneditor-menu>button:hover,div.jsoneditor-menu>div.jsoneditor-modes>button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}div.jsoneditor-menu>button:active,div.jsoneditor-menu>button:focus,div.jsoneditor-menu>div.jsoneditor-modes>button:active,div.jsoneditor-menu>div.jsoneditor-modes>button:focus{background-color:rgba(255,255,255,.3)}div.jsoneditor-menu>button:disabled,div.jsoneditor-menu>div.jsoneditor-modes>button:disabled{opacity:.5}div.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}div.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}div.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}div.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}div.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}div.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}div.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}div.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}div.jsoneditor-menu>div.jsoneditor-modes{display:inline-block;float:left}div.jsoneditor-menu>div.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}div.jsoneditor-menu>button.jsoneditor-separator,div.jsoneditor-menu>div.jsoneditor-modes>button.jsoneditor-separator{margin-left:10px}div.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}div.jsoneditor-menu a:hover{opacity:1}div.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}table.jsoneditor-search div.jsoneditor-results,table.jsoneditor-search input{font-family:arial,sans-serif;font-size:10pt;color:#1A1A1A;background:0 0}table.jsoneditor-search div.jsoneditor-results{color:#fff;padding-right:5px;line-height:24px}table.jsoneditor-search{position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0}table.jsoneditor-search div.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}table.jsoneditor-search div.jsoneditor-frame table{border-collapse:collapse}table.jsoneditor-search input{width:120px;border:none;outline:0;margin:1px;line-height:20px}table.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(img/jsoneditor-icons.svg);vertical-align:top}table.jsoneditor-search button:hover{background-color:transparent}table.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}table.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}table.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}table.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}table.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px} \ No newline at end of file diff --git a/dist/jsoneditor.min.js b/dist/jsoneditor.min.js index a4f9592..dfc7068 100644 --- a/dist/jsoneditor.min.js +++ b/dist/jsoneditor.min.js @@ -24,25 +24,26 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.3.0 - * @date 2016-04-06 + * @version 5.4.0 + * @date 2016-04-09 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=l.getInternetExplorerVersion();if(-1!=r&&9>r)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(4)}catch(o){}var s=i(1),a=i(2),l=i(3);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=l.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=l.extend({},this.options),s=o.mode;o.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==a.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),l.clear(this),l.extend(this,a.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(h){console.error(h)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(i){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},n.prototype.validate=function(){},n.registerMode=function(e){var t,i;if(l.isArray(e))for(t=0;te&&i.scrollTop>0?this.autoScrollStep=(n+s-e)/3:e>o-s&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),r=0;r0){var o=i.length>l;if(o){i=i.slice(0,l);var a=this.validateSchema.errors.length-l;i.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+i.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var h=c.clientHeight;this.content.style.marginBottom=-h+"px",this.content.style.paddingBottom=h+"px"}if(this.aceEditor){var d=!1;this.aceEditor.resize(d)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(12);t.parse=function(e){try{return JSON.parse(e)}catch(i){throw t.validate(e),i}},t.sanitize=function(e){function t(){return e.charAt(h)}function i(){return e.charAt(h+1)}function n(){return e.charAt(h-1)}function r(){for(var e=c.length-1;e>=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function o(){for(h+=2;hn;n++){var o=i[n];o.style&&o.removeAttribute("style");var s=o.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var r=e.childNodes,o="",s=0,a=r.length;a>s;s++){var l=r[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=r[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(o+="\n",i.flush()),o+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(o+=i.flush(),i.set("\n")):o+=t.getInnerText(l,i)}return o}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==o){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}o=e}return o},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var o=-1;t.addEventListener=function(e,i,n,r){if(e.addEventListener)return void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,r),n;if(e.attachEvent){var o=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,o),o}},t.removeEventListener=function(e,i,n,r){e.removeEventListener?(void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,r)):e.detachEvent&&e.detachEvent("on"+i,n)},t.parsePath=function s(e){var t,i;if(0===e.length)return[];var n=e.match(/^\.(\w+)/);if(n)t=n[1],i=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var r=e.indexOf("]");if(-1===r)throw new SyntaxError("Character ] expected in path");if(1===r)throw new SyntaxError("Index expected after [");var o=e.substring(1,r);t="*"===o?o:JSON.parse(o),i=e.substr(r+1)}return[t].concat(s(i))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&i>n;)n++;for(;t.charAt(o-1)===e.charAt(r-1)&&o>n&&r>0;)o--,r--;return{start:n,end:o}}},function(e,t,i){"use strict";function n(e){return p.test(e)}function r(e){function t(e,t){var i;if("string"==typeof e){if(i=A(e),!i)throw new Error('no schema with key or ref "'+e+'"')}else{var n=E(e);i=n.validate||b(n)}var r=i(t);return k.errors=i.errors,r}function m(e){var t=E(e);return t.validate||b(t)}function g(e,t,i,n){if(Array.isArray(e))for(var r=0;r=0},n.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},n.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},n.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var r=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?r.searchFieldActive=!0:r.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],r.updateDom(),r.scrollTo(function(){t&&r.focus(o)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},n.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=n},function(e,t,i){function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(e){e.preventDefault(),n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(3);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){t.expandedItem==e&&(o.style.height=24*o.childNodes.length+"px",o.style.padding="5px 10px")},0),r.addClassName(o.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,o,s=e.target,a=e.which,l=!1;27==a?(this.selection&&r.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&o.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&(o=t[i+2]),o||(o=t[0]),o&&(o.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var r=i(29),o=i(9),s=i(21),a=i(3);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getPath=function(){for(var e=this,t=[];e;){var i=e.parent&&"array"==e.parent.type?e.index:e.field;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=a.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)i=e[s],void 0===i||i instanceof Function||(r=new n(this.editor,{value:i}),this.appendChild(r));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(r=new n(this.editor,{field:l,value:i}),this.appendChild(r)));this.value="",this.editor.options.sortObjectKeys===!0&&this.sort("asc")}else this.childs=void 0,this.value=e;this.previousValue=this.value},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),r=t.nextSibling;r?i.insertBefore(n,r):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof l?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),r=t.getDom(),o=r?r.parentNode:void 0;r&&o&&o.insertBefore(n,r),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var r=String(this.field).toLowerCase();t=r.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var o=[];this.childs.forEach(function(t){o=o.concat(t.search(e))}),i=i.concat(o)}if(void 0!=n){var s=!1;0==o.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return i.parent=null,this.updateDom({updateIndexes:!0}),i}}return void 0},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var r=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,n&&(r?n.insertBefore(this.getDom(),r):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(n){if(this.value=void 0,e!==!0)throw n}},n.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=a.textDiff(String(this.previousValue),String(this.value));i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:i}),this.previousValue=this.value},n.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=a.textDiff(this.previousField,this.field);i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:i}),this.previousField=this.field},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],i=this.value,n="auto"==this.type?a.type(i):this.type,r="string"==n&&a.isUrl(i);t.push("jsoneditor-"+n),r&&t.push("jsoneditor-url");var o=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(o&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==n||"object"==n){var s=this.childs?this.childs.length:0;e.title=this.type+" containing "+s+" items"}else r&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===n&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),a.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?a.addClassName(e,"jsoneditor-empty"):a.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?a.addClassName(e,"jsoneditor-highlight-active"):a.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?a.addClassName(e,"jsoneditor-highlight"):a.removeClassName(e,"jsoneditor-highlight"),a.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=a.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(i){if(this.field=void 0,e!==!0)throw i}},n.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},i=[],n=0;n0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),s=r._nextSibling(),l=i.editor,c=a.getAbsoluteTop(o.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,s,c,h,d,u,f,p,m,g,v,w,A=e[0].editor,y=t.pageY-A.drag.offsetY,C=t.pageX,E=!1,b=e[0];if(i=b.dom.tr,f=a.getAbsoluteTop(i),g=i.offsetHeight,f>y){r=i;do r=r.previousSibling,d=n.getNodeFromTarget(r),p=r?a.getAbsoluteTop(r):0;while(r&&p>y);d&&!d.parent&&(d=void 0),d||(h=i.parentNode.firstChild,r=h?h.nextSibling:void 0,d=n.getNodeFromTarget(r),d==b&&(d=void 0)),d&&(r=d.dom.tr,p=r?a.getAbsoluteTop(r):0,y>p+g&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),E=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),o=s;do u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?a.getAbsoluteTop(o.nextSibling):0,w=o?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling;while(o&&y>f+w);if(u&&u.parent){var x=C-A.drag.mouseX,S=Math.round(x/24/2),$=A.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;$>D&&r;){d=n.getNodeFromTarget(r);var k=e.some(function(e){return e===d||d._isChildOf(e)});if(k);else{if(!(d instanceof l))break;var B=d.parent.childs;if(B.length==e.length&&B[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),E=!0)}}}E&&(A.drag.mouseX=C,A.drag.level=b.getLevel()), -A.startAutoScroll(y),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,s=o.childs.indexOf(i),l=o.childs[s+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(a.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(a.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&a.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var r=document.createElement("td");r.className="jsoneditor-tree",n.appendChild(r),e.expand=this._createDomExpandButton(),r.appendChild(e.expand),e.tdExpand=r;var o=document.createElement("td");o.className="jsoneditor-tree",n.appendChild(o),e.field=this._createDomField(),o.appendChild(e.field),e.tdField=o;var s=document.createElement("td");s.className="jsoneditor-tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,r=this,o=this._hasChilds();if((i==n.drag||i==n.menu)&&("mouseover"==t?this.editor.highlighter.highlight(this):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=r.editor.highlighter;s.highlight(r),s.lock(),a.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){a.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}if("click"==t&&(i==n.expand||("view"===r.editor.options.mode||"form"===r.editor.options.mode)&&"DIV"===i.nodeName)&&o){var l=e.ctrlKey;this._onExpand(l)}"change"==t&&i==n.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var c=n.value;if(i==c)switch(t){case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(c.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&a.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var h=n.field;if(i==h)switch(t){case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(h.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var d=n.tree;if(i==d.parentNode&&"click"==t&&!e.hasMoved){var u=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],y=A[0],C=A[A.length-1];if(13==u){if(f==this.dom.value)(!this.editable.value||e.ctrlKey)&&a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var E=this._hasChilds();if(E){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(A),v=!0);else if(69==u)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(A),v=!0);else if(45==u&&w)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(g){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&w){if(C.expanded){var $=C.getAppend();r=$?$.nextSibling:void 0}else{var D=C.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o),i&&i instanceof l&&1!=C.parent.childs.length&&_&&_.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):g&&m&&w&&(t=y._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(g&&m&&w){D=y.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B),t&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(g&&m&&w){i=C.expanded?C.append?C.append._nextNode():void 0:C._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,o=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*r(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:o,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}return void 0},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,r=t.getIndex();i.childs[r+e.length]?i.childs[r+e.length].focus():i.childs[r-1]?i.childs[r-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do i=i.previousSibling,e=n.getNodeFromTarget(i);while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do i=i.nextSibling,e=n.getNodeFromTarget(i);while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.showContextMenu=function(e,t){var i=this,r=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:r.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:r.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:r.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:r.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;i==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}var c=new o(s,{close:t});c.show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t?!0:"false"==t?!1:isNaN(i)||isNaN(n)?e:i},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e.trim())+'"',i=a.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;i2&&b.push("'"+this.terminals_[y]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+b.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:p,expected:b})}if(3==d){if(m==f)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,m=i()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=r[r.length-1]}g=m,m=u,v=r[r.length-1],w=a[v]&&a[v][u],d=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(w[0]){case 1:r.push(m),o.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),m=null,g?(m=g,g=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[w[1]][1],F.$=o[o.length-C],F._$={first_line:s[s.length-(C||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(C||1)].first_column,last_column:s[s.length-1].last_column},A=this.performAction.call(F,l,h,c,this.yy,w[1],o,s),"undefined"!=typeof A)return A;C&&(r=r.slice(0,-1*C*2),o=o.slice(0,-1*C),s=s.slice(0,-1*C)),r.push(this.productions_[w[1]][0]),o.push(F.$),s.push(F._$),E=a[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t,i){"use strict";function n(e,t,i){var o=this._refs[i];if("string"==typeof o){if(!this._refs[o])return n.call(this,e,t,o);o=this._refs[o]}if(o=o||this._schemas[i],o instanceof w)return a(o.schema,this.opts.inlineRefs)?o.schema:o.validate||this._compile(o);var s,l,c,h=r.call(this,t,i);return h&&(s=h.schema,t=h.root,c=h.baseId),s instanceof w?l=s.validate||e.call(this,s.schema,t,void 0,c):s&&(l=a(s,this.opts.inlineRefs)?s:e.call(this,s,t,void 0,c)),l}function r(e,t){var i=m.parse(t,!1,!0),n=d(i),r=h(e.schema.id);if(n!==r){var a=u(n),l=this._refs[a];if("string"==typeof l)return o.call(this,e,l,i);if(l instanceof w)l.validate||this._compile(l),e=l;else if(l=this._schemas[a],l instanceof w){if(l.validate||this._compile(l),a==u(t))return{schema:l,root:e,baseId:r};e=l}if(!e.schema)return;r=h(e.schema.id)}return s.call(this,i,r,e.schema,e)}function o(e,t,i){var n=r.call(this,e,t);if(n){var o=n.schema,a=n.baseId;return e=n.root,o.id&&(a=f(a,o.id)),s.call(this,i,a,o,e)}}function s(e,t,i,n){if(e.hash=e.hash||"","#/"==e.hash.slice(0,2)){for(var o=e.hash.split("/"),s=1;s=1&&12>=i&&n>=1&&n<=m[i]; -}function o(e,t){var i=e.match(g);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return 23>=n&&59>=r&&59>=o&&(!t||s)}function s(e){var t=e.split(E);return r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return b.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(t){return!1}}function h(e,t){return e&&t?e>t?1:t>e?-1:e===t?0:void 0:void 0}function d(e,t){return e&&t&&(e=e.match(g),t=t.match(g),e&&t)?(e=e[1]+e[2]+e[3]+(e[4]||""),t=t[1]+t[2]+t[3]+(t[4]||""),e>t?1:t>e?-1:e===t?0:void 0):void 0}function u(e,t){if(e&&t){e=e.split(E),t=t.split(E);var i=h(e[0],t[0]);if(void 0!==i)return i||d(e[1],t[1])}}var f=i(31),p=/^\d\d\d\d-(\d\d)-(\d\d)$/,m=[0,31,29,31,30,31,30,31,31,30,31,30,31],g=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,v=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,w=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i,A=/^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,y=/^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i,C=/^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/;e.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:v,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:A,"json-pointer":y,"relative-json-pointer":C},n.full={date:r,time:o,"date-time":s,uri:l,email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:a,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:A,"json-pointer":y,"relative-json-pointer":C},n.compare={date:h,time:d,"date-time":u};var E=/t|\s/i,b=/\/|\:/},function(e,t,i){"use strict";var n=i(36),r=i(31);e.exports=function(){var e=[{type:"number",rules:["maximum","minimum","multipleOf"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","properties"]},{rules:["$ref","enum","not","anyOf","oneOf","allOf"]}];return e.all=["type","additionalProperties","patternProperties"],e.keywords=["additionalItems","$schema","id","title","description","default"],e.types=["number","integer","string","array","object","boolean","null"],e.forEach(function(t){t.rules=t.rules.map(function(t){return e.all.push(t),{keyword:t,code:n[t]}})}),e.keywords=r.toHash(e.all.concat(e.keywords)),e.all=r.toHash(e.all),e.types=r.toHash(e.types),e}},function(e,t,i){"use strict";function n(e){if(e.opts.meta!==!1){var t=i(32);e.addMetaSchema(t,o)}e.addKeyword("constant",{inline:i(33),statements:!0,errors:"full"}),e.addKeyword("contains",{type:"array",macro:r});var n=i(34);e.addKeyword("formatMaximum",{type:"string",inline:n,statements:!0,errors:"full"}),e.addKeyword("formatMinimum",{type:"string",inline:n,statements:!0,errors:"full"}),e.addKeyword("exclusiveFormatMaximum"),e.addKeyword("exclusiveFormatMinimum"),e.addKeyword("patternGroups"),e.addKeyword("switch",{inline:i(35),statements:!0,errors:"full"})}function r(e){return{not:{items:{not:e}}}}var o="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";e.exports={enable:n,META_SCHEMA_ID:o}},function(e,t,i){"use strict";e.exports=function(e,t){function i(e,t,n){function o(n){function o(n,o){if(n)t(n);else{if(!r._refs[s]&&!r._schemas[s])try{r.addSchema(o,s)}catch(a){return void t(a)}i(e,t)}}var s=n.missingSchema;if(r._refs[s]||r._schemas[s])return t(new Error("Schema "+s+" is loaded but"+n.missingRef+"cannot be resolved"));var a=r._loadingSchemas[s];a?"function"==typeof a?r._loadingSchemas[s]=[a,o]:a[a.length]=o:(r._loadingSchemas[s]=o,r.opts.loadSchema(s,function(e,t){var i=r._loadingSchemas[s];if(delete r._loadingSchemas[s],"function"==typeof i)i(e,t);else for(var n=0;na;a++)r(s[a]);for(a=0;l>a;a++)i(e,s[a],t)}else s&&r(s),i(e,s,t)}this.RULES.keywords[e]=!0,this.RULES.all[e]=!0}},function(e,t,i){function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}]}],a=new o(s,{close:i});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,o=n.menu;if(i==o&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(3),o=i(9);e.exports=n},function(module,exports,__webpack_require__){"use strict";function compile(schema,root,localRefs,baseId){function localCompile(_schema,_root,localRefs,baseId){var isRoot=!_root||_root&&_root.schema==_schema;if(_root.schema!=root.schema)return compile.call(self,_schema,_root,localRefs,baseId);var validateCode=validateGenerator({isTop:!0,schema:_schema,isRoot:isRoot,baseId:baseId,root:_root,schemaPath:"",errSchemaPath:"#",errorPath:'""',RULES:RULES,validate:validateGenerator,util:util,resolve:resolve,resolveRef:resolveRef,usePattern:usePattern,useDefault:useDefault,useCustomRule:useCustomRule,opts:self.opts,formats:formats,self:self});if(validateCode=vars(refVal,refValCode)+vars(patterns,patternCode)+vars(defaults,defaultCode)+vars(customRules,customRuleCode)+validateCode,self.opts.beautify){var opts=self.opts.beautify===!0?{indent_size:2}:self.opts.beautify;beautify?validateCode=beautify(validateCode,opts):console.error('"npm install js-beautify" to use beautify option')}var validate;try{eval(validateCode),refVal[0]=validate}catch(e){throw console.log("Error compiling schema, function code:",validateCode),e}return validate.schema=_schema,validate.errors=null,validate.refs=refs,validate.refVal=refVal,validate.root=isRoot?validate:_root,validate}function resolveRef(e,t,i){t=resolve.url(e,t);var n,r,o=refs[t];if(void 0!==o)return n=refVal[o],r="refVal["+o+"]",resolvedRef(n,r);if(!i){var s=root.refs[t];if(void 0!==s)return n=root.refVal[s],r=addLocalRef(t,n),resolvedRef(n,r)}r=addLocalRef(t);var a=resolve.call(self,localCompile,root,t);if(!a){var l=localRefs&&localRefs[t];l&&(a=resolve.inlineRef(l,self.opts.inlineRefs)?l:compile.call(self,l,root,localRefs,e))}return a?(replaceLocalRef(t,a),resolvedRef(a,r)):void 0}function addLocalRef(e,t){var i=refVal.length;return refVal[i]=t,refs[e]=i,"refVal"+i}function replaceLocalRef(e,t){var i=refs[e];refVal[i]=t}function resolvedRef(e,t){return"object"==typeof e?{schema:e,code:t}:t}function usePattern(e){var t=patternsHash[e];return void 0===t&&(t=patternsHash[e]=patterns.length,patterns[t]=e),"pattern"+t}function useDefault(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return util.toQuotedString(e);case"object":if(null===e)return"null";var t=stableStringify(e),i=defaultsHash[t];return void 0===i&&(i=defaultsHash[t]=defaults.length,defaults[i]=e),"default"+i}}function useCustomRule(e,t,i,n){var r,o=e.definition.compile,s=e.definition.inline,a=e.definition.macro;o?r=o.call(self,t,i):a?(r=a.call(self,t,i),self.opts.validateSchema!==!1&&self.validateSchema(r,!0)):r=s?s.call(self,n,e.keyword,t,i):e.definition.validate;var l=customRules.length;return customRules[l]=r,{code:"customRule"+l,validate:r}}var self=this,refVal=[void 0],refs={},patterns=[],patternsHash={},defaults=[],defaultsHash={},customRules=[],customRulesHash={};root=root||{schema:schema,refVal:refVal,refs:refs};var formats=this._formats,RULES=this.RULES;return localCompile(schema,root,localRefs,baseId)}function patternCode(e,t){return"var pattern"+e+" = new RegExp("+util.toQuotedString(t[e])+");"}function defaultCode(e){return"var default"+e+" = defaults["+e+"];"}function refValCode(e,t){return t[e]?"var refVal"+e+" = refVal["+e+"];":""}function customRuleCode(e){return"var customRule"+e+" = customRules["+e+"];"}function vars(e,t){if(!e.length)return"";for(var i="",n=0;ns;++s){var c=a(e,t[s]);if(void 0==c&&o.original)return;r.push(c)}return i&&i.apply(null,r)||!0}},o=function(e,t){var i=r("",e,t);return void 0==i&&o.original?o.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&r!=t;){var r=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var o={},a={id:t,uri:"",exports:o,packaged:!0},l=function(e,i){return r(t,e,i)},c=i(l,o,a);o=c||a.exports,n.modules[t]=o,delete n.payloads[t]}i=n.modules[t]=o||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function r(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,m=d.bind(f.toString),g=d.bind(f.hasOwnProperty);if((h=g(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),r=p.call(arguments,2),o=r.length;if(e===i)o&&this.push.apply(this,r);else{var s=Math.min(t,i-e),a=e+s,l=a+o-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;o>d;++d)this[e+d]=r[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==m(e)});var w=Object("a"),A="a"!=w[0]||!(0 in w);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=arguments[1],r=-1,o=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(r[s]=e.call(o,i[s],s,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=M(this),n=A&&"[object String]"==m(this)?this.split(""):i,r=n.length>>>0,o=[],s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;r>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&o.push(t));return o}),Array.prototype.every||(Array.prototype.every=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&!e.call(r,i[o],o,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&e.call(r,i[o],o,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>o;o++)o in i&&(r=e.call(void 0,r,i[o],o,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do o in this&&(r=e.call(void 0,r,i[o],o,t));while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=A&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=A&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(y+e);if(g(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var C;C=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=C();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),b="undefined"==typeof document||r(document.createElement("div"));if(!E||!b)var F=Object.defineProperty}if(!Object.defineProperty||F){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(F)try{return F.call(Object,e,t,i)}catch(n){}if(g(i,"value"))if(h&&(l(e,t)||c(e,t))){var r=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=r}else e[t]=i.value;else{if(!h)throw new TypeError($);g(i,"get")&&s(e,t,i.get),g(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(D){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var k=!0,B=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],_=B.length;for(var L in{toString:null})k=!1;Object.keys=function O(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var O=[];for(var t in e)g(e,t)&&O.push(t);if(k)for(var i=0,n=_;n>i;i++){var r=B[i];g(e,r)&&O.push(r)}return O}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),P=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(P,"")}}var M=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||n,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var r=i.indexOf(t);if(-1==r)break;n=!1,i.splice(r,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?(r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1),!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS?e(t,n,i):!1}function r(){a=Object.create(null),a.count=0,a.lastT=0}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,o=e.changedTouches[0];e.wheelX=-(o.clientX-n)/t,e.wheelY=-(o.clientY-r)/t,n=o.clientX,r=o.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){var o,a,l,c=0,h={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){if(0!==t.getButton(e)?c=0:e.detail>1?(c++,c>4&&(c=1)):c=1,s.isIE){var d=Math.abs(e.clientX-o)>5||Math.abs(e.clientY-a)>5;(!l||d)&&(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(o=e.clientX,a=e.clientY)}if(e._clicks=c,n[r]("mousedown",e),c>4)c=0;else if(c>1)return n[r](h[c],e)}),s.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[r]("mousedown",e),n[r](h[c],e)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&r(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var o=n(i,e,t);return c=e.defaultPrevented,o}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):r(),(91==t||92==t)&&(a.OSKey=!1),a[t]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function r(o){o.data==n&&(t.stopPropagation(o),t.removeListener(i,"message",r),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"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){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function o(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,s&&n.selection.moveToPosition(i),n.$blockScrolling--,void n.textInput.onContextMenu(e.domEvent)}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(r.end.row!=n.row||r.end.column!=n.column)&&(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(r.start.row!=n.row||r.start.column!=n.column)&&(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();var o=s.session.getLength();if(t==o){var a=s.renderer.pixelToScreenCoordinates(0,d.y).row,h=d.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var f=d.domEvent.target,p=f.getBoundingClientRect(),m=c.getElement().style;m.left=p.right+"px",m.top=p.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,r=s.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(u&&e.$tooltipFollowsMouse&&n(r),d=r,void(h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!D||n||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,D=i,k={x:y,y:C};else{var s=r(k.x,k.y,y,C);s>h?D=null:i-D>=c&&(g.renderer.scrollCursorIntoView(),D=null)}}function i(e,t){var i=Date.now(),n=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:y-o.left,right:o.right-y},y:{top:C-o.top,bottom:o.bottom-C}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=a/r&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&g.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){var e=F;F=g.renderer.screenToTextCoordinates(y,C),t(F,e),i(F,e)}function d(){b=g.selection.toOrientedRange(),A=g.session.addMarker(b,"ace_selection",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),_=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),g.session.removeMarker(A),A=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(b),g.$blockScrolling-=1,g.isFocused()&&!S&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),b=null,F=null,_=0,$=null,D=null,s.removeListener(document,"mousemove",f)}function f(){null==L&&(L=setTimeout(function(){null!=L&&A&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function m(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var g=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var w=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];w.forEach(function(t){e[t]=this[t]},this),g.addEventListener("mousedown",this.onMouseDown.bind(e));var A,y,C,E,b,F,x,S,$,D,k,B=g.container,_=0;this.onDragStart=function(e){if(this.cancelDrag||!B.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}b=g.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=g.getReadOnly()?"copy":"copyMove",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),i.clearData(),i.setData("Text",g.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(B.draggable=!1, -S=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(y=e.clientX,C=e.clientY,A||d(),_++,e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragOver=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(y=e.clientX,C=e.clientY,A||(d(),_++),null!==L&&(L=null),e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return _--,0>=_&&A?(u(),x=null,s.preventDefault(e)):void 0},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(x){case"move":b=b.contains(F.row,F.column)?{start:F,end:F}:g.moveText(b,F);break;case"copy":b=g.moveText(b,F,!0)}else{var i=t.getData("Text");b={start:F,end:g.session.insert(F,i)},g.focus(),x=null}return u(),s.preventDefault(e)}},s.addListener(B,"dragstart",this.onDragStart.bind(e)),s.addListener(B,"dragend",this.onDragEnd.bind(e)),s.addListener(B,"dragenter",this.onDragEnter.bind(e)),s.addListener(B,"dragover",this.onDragOver.bind(e)),s.addListener(B,"dragleave",this.onDragLeave.bind(e)),s.addListener(B,"drop",this.onDrop.bind(e));var L=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),r=e.domEvent.detail||1;if(1===r&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in o&&(o.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){(i||!r.readyState||"loaded"==r.readyState||"complete"==r.readyState)&&(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var A=g[v];0===A.name.indexOf("data-ace-")&&(s[o(A.name.replace(/^data-ace-/,""))]=A.value)}var y=m.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);y&&(a=y[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var C in s)"undefined"!=typeof s[C]&&t.set(C,s[C])}function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=(e("./lib/oop"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",r=i[i.length-1];if("worker"==t&&"-"==n){var o=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");r=r.replace(o,"")}(!r||r==t)&&i.length>1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(s){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var l=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void a.loadScript(t.moduleUrl(i,o),l):l()}},r(!0),t.init=r}),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/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){document.hasFocus&&document.hasFocus()||window.focus(),e.focus(),e.isFocused()||window.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener(a,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(n.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),n.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),r.isIE&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i))),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",function(t){return e.focus(),n.preventDefault(t)}),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;o.setCursorStyle(!r.isEmpty()&&r.insideStart(n.row,n.column)?"default":"")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session;r.foldWidgets&&r.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session,o=r.getParentFoldRangeData(n,!0),s=o.range||o.firstRange;if(s){n=s.start.row;var a=r.getFoldAt(n,r.getLine(n).length,1);a?r.removeFold(a):(r.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(o&&o.command&&(s="null"==o.command?!0:a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s))););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.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},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.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)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,t===!0?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),r=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(t,i,1);return o?void this.moveCursorTo(o.end.row,o.end.column):((e=this.session.nonTokenRe.exec(r))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((o=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,r=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&r.test(i);)n++;if(1>n)for(o.lastIndex=0;(i=e[n])&&!o.test(i);)if(o.lastIndex=0,n++,r.test(i)){if(n>2){n--;break}for(;(i=e[n])&&r.test(i);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do e++,n=this.doc.getLine(e);while(o>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var i=this.getCursor();return s.fromPoints(t,i)}catch(n){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?c.onMatch=this.$applyToken:c.onMatch=c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;o>r;r++)t[r]&&(n[n.length]={type:i[r],value:t[r]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,r=0,o=n.length;o>r;r++)t[r+1]&&(i[i.length]={type:n[r],value:t[r+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,r={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,o,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==r.stack&&(r.end=l+1,r.stack=-1),i--):o&&(i++,1!=o.length&&(r.stack=i,r.start=l)),e}),null!=r.end&&/^\)*$/.test(e.substr(r.end))&&(e=e.substring(0,r.start)+e.substr(r.end))}return"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",o=this.states[n];o||(n="start",o=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n];a.lastIndex=0;for(var l,c=[],h=0,d=0,u={type:null,value:""};l=a.exec(e);){var f=s.defaultToken,p=null,m=l[0],g=a.lastIndex;if(g-m.length>h){var v=e.substring(h,g-m.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;n>=t;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},m=f+" ",g=function(e,t){(!s||/\S/.test(e))&&(w(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,A=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),y=new RegExp("(?:"+a.escapeRegExp(A)+")\\s*$"),g=function(e,t){v(e,t)||(!s||/\S/.test(e))&&(o.insertInLine({row:t,column:e.length},A),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(y))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;ri&&(c=i),l&&!v(e,t)&&(l=!1)):C>e.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:g)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;u=new c(m,g,m,g+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;to;o++)if("string"==typeof r[o].token)/keyword|support|storage/.test(r[o].token)&&i.push(r[o].regex);else if("object"==typeof r[o].token)for(var a=0,l=r[o].token.length;l>a;a++)if(/keyword|support|storage/.test(r[o].token[a])){var n=r[o].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,i,n){var r=this.$keywordList||this.$createKeywordList();return r.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,r=t.start.column,o=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=o.substring(0,r)+t.lines[0]+o.substring(r);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=o.substring(0,r)+e[n],e[n+t.lines.length-1]+=o.substring(r)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=o.substring(0,r)+o.substring(l):e.splice(n,c-n+1,o.substring(0,r)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var 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 i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$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},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;o>r;r++)if(e-=i[r].length+n,0>e)return{row:r,column:e+i[r].length+n};return{row:o-1,column:i[o-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=0,o=Math.min(e.row,i.length),s=t||0;o>s;++s)r+=i[s].length+n;return r+e.column}}).call(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,r=i.doc,o=t;i.lines[t];)t++;var s=r.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=o&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,r=n.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(e,t,i){for(var n=this.ranges,o=i||0;o0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.call(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;os||(0!=s||i.isEmpty()||n.isEmpty())&&(r(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(o,1),e.push(n),n=i,o--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var r=this.pointIndex({row:t,column:0},n);0>r&&(r=-r-1);for(var o=[],s=n;r>s;s++)o.push(i[s]);return o},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,r=i.row,o=r-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=o,h.end.row+=o}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function r(e,t){n(e.start,t),n(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){o(e.start,t),o(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};l.inherits(c,a),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new c(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);r(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,o=-1;n=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var d=this.getFoldAt(a,l,1),u=this.getFoldAt(c,h,-1);if(d&&u==d)return d.addSubFold(i);d&&!d.range.isStart(a,l)&&this.removeFold(d),u&&!u.range.isEnd(c,h)&&this.removeFold(u);var f=this.getFoldsInRange(i.range);f.length>0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);return n.length?n:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(r>i)return;a=Math.max(r,a)}s+=null!=e?e:o.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var r=this.getFoldLine(e);if(r)return this.getFoldDisplayLine(r,e,t,i,n);var o;return o=this.doc.getLine(e),o.substring(n||0,t||o.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i); -})},this.toggleFold=function(e){var t,i,n=this.selection,r=n.getRange();if(r.isEmpty()){var o=r.start;if(t=this.getFoldAt(o.row,o.column))return void this.expandFold(t);(i=this.findMatchingBracket(o))?1==r.comparePoint(i)?r.end=i:(r.start=i,r.start.column++,r.end.column--):(i=this.findMatchingBracket({row:o.row,column:o.column+1}))?(1==r.comparePoint(i)?r.end=i:r.start=i,r.start.column++):r=this.getCommentFoldRange(o.row,o.column)||r}else{var s=this.getFoldsInRange(r);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(r.start.row,r.start.column)),t&&t.range.toString()==r.toString())return void this.expandFold(t);var a="...";if(!r.isMultiLine()){if(a=this.getTextRange(r),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,r)},this.getCommentFoldRange=function(e,t,i){var n=new a(this,e,t),o=n.getCurrentToken();if(o&&/^comment|string/.test(o.type)){var s=new r,l=new RegExp(o.type.replace(/\..*/,"\\."));if(1!=i){do o=n.stepBackward();while(o&&l.test(o.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do o=n.stepForward();while(o&&l.test(o.type));o=n.stepBackward()}else o=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+o.value.length-2,s}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var r=e;t>r;r++)if(null==n[r]&&(n[r]=this.getFoldWidget(r)),"start"==n[r]){var o=this.getFoldWidgetRange(r);if(o&&o.isMultiLine()&&o.end.row<=t&&o.start.row>=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var r=t.target||t.srcElement;r&&/ace_fold-widget/.test(r.className)&&(r.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return void(t.children||t.all?this.removeFold(o):this.expandFold(o));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1),o&&s.isEqual(o.range)))return void this.removeFold(o);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var d=c.charAt(l);if(d==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else d==e&&(o+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var r=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=n}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/lang"),o=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,d=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,f=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new h(e)),this.setDocument(e),this.selection=new a(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var r=i+n>>1,o=e[r];if(t>o)i=r+1;else{if(!(o>t))return r;n=r-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),r=0;if(null==t)o=n.length-1,r=this.getLine(e).length;else for(var o=0;o=t));o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do o--;while(o>=0&&i.charAt(o).match(r));o++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=o.end.row+1,l>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;n>s&&" "==o.charAt(s);++s);n>s&&" "==o.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var r=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)&&(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var m=h.range.compareInside(n.row,n.column);0==m?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column))):-1==m&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,r=this.doc.getAllLines(),o=this.getTabSize(),s=this.$wrapData,l=this.$wrapLimit,c=e;for(t=Math.min(t,r.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,o){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-A;){var y=c+t-A;if(e[y-1]>=p&&e[y]>=p)o(y);else if(e[y]!=a&&e[y]!=h){for(var C=Math.max(y-(t-(t>>2)),c-1);y>C&&e[y]C&&e[y]C&&e[y]==f;)y--}else for(;y>C&&e[y]C?o(++y):(y=c+t,e[y]==i&&y--,o(y-A))}else{for(y;y!=c-1&&e[y]!=a;y--);if(y>c){o(y);continue}for(y=c+t;yc;c++)s.push(g)}else 32==l?s.push(p):l>39&&48>l||l>57&&64>l?s.push(f):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?2:1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]e)return{row:0,column:0};var i,n,r=0,o=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;e>=s&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,r++,r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(e>=s+a||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){var v=Math.floor(e-s);n=g[v],v>0&&g.length&&(m=g.indent,o=g[v-1]||g[g.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;o=this.getFoldAt(e,t,1),o&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;e>a;){if(a>=f){if(s=u.end.row+1,s>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)n++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:n,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>o&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null; -this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=e("./lib/oop"),o=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var s=e.offset+(r||0);if(n=new o(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,r=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=r.length-c;e:for(var d=a.offset||0;h>=d;d++){for(var u=0;c>u;u++)if(-1==r[d+u].search(a[u]))continue e;var f=r[d],p=r[d+c-1],m=f.length-f.match(a[0])[0].length,g=p.match(a[c-1])[0].length;l&&l.end.row===d&&l.end.column>m||(s.push(l=new o(d,m,d+c-1,g)),c>2&&(d=d+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[u].end.column>C&&s[u].end.row==i.end.row;)u--;for(s=s.slice(v,u+1),v=0,u=s.length;u>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var r=n.exec(e);if(!r||r[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var o=Math.min(e.length,e.length);o--;){var s=e[o];s&&s.toLowerCase()!=s?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var r;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,d=new o(n,l,n+s-1,h);return 1==i.offset?(d.start.row--,d.start.column=Number.MAX_VALUE):a&&(d.start.column+=a),r(d)?!0:void 0}};else if(t.backwards)var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row,r=e.getLine(n).substr(o.column);if(!i(r,n,o.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&(void 0==i&&(i=e.position),e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),r.returnValue===!1?!1:!0},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.removeEventListener("changeCursor",this.$onCursorChange),i.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker), -this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value){do a=r,r=n.stepForward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!r)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new f(l,c,l,c+r.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||o>=n&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&this.selection.setSelectionRange(2==o.selection.length?new f(r.row,c+o.selection[0],r.row,c+o.selection[1]):new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3])),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var o={value:r[0],start:r.index,end:r.index+r[0].length};return o}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),e*=s!==o.end&&s>i?Math.pow(10,o.end-i-1):Math.pow(10,o.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new f(t,o.start,t,o.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(o.start+1,i+c.length-o.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var r=i.start.row;t.duplicateLines(r,r)}else{var o=n?i.start:i.end,s=t.insert(o,t.getTextRange(i),!1);i.start=o,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();i=this.$getSelectedRows(o),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),o.moveBy(n,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var d=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var u=i.first,f=i.last;++hf+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);h>=d;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):t===!1&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0?!0:o.topwindow.innerHeight?!1:null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",o),this.renderer.removeEventListener("afterRender",a),this.renderer.removeEventListener("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(A.prototype),v.defineOptions(A.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=A}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){ -this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g="ace_gutter-cell ";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[m];null==w&&(w=a[m]=t.getFoldWidget(m))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var g="ace_fold-widget ace_"+w;g+="start"==w&&m==s&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);c>=h;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,p,r+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,u>d,u>f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)t.push(this.showInvisibles?""+o.stringRepeat(this.TAB_CHAR,i)+"":o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s?o:!1),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,a=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;i>o&&ni?{type:e[n].type,value:s.substring(0,i-o)}:e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,r=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:r}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;(void 0===t||0===t.length)&&(t=[{cursor:null}]);for(var i=0,r=t.length;r>i;i++){var o=this.getPixelPosition(t[i].cursor,!0);if(!((o.top>e.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e,t){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter,g='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .ace_scroller { position: absolute; overflow: hidden; top: 0; bottom: 0; background-color: inherit; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; cursor: text; } .ace_content { position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .ace_dragging .ace_scroller:before{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; content: \'\'; background: rgba(250, 250, 250, 0.01); z-index: 1000; } .ace_dragging.ace_dark .ace_scroller:before{ background: rgba(0, 0, 0, 0.01); } .ace_selecting, .ace_selecting * { cursor: text !important; } .ace_gutter { position: absolute; overflow : hidden; width: auto; top: 0; bottom: 0; left: 0; cursor: default; z-index: 4; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .ace_gutter-active-line { position: absolute; left: 0; right: 0; } .ace_scroller.ace_scroll-left { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } .ace_gutter-cell { padding-left: 19px; padding-right: 6px; background-repeat: no-repeat; } .ace_gutter-cell.ace_error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: 2px center; } .ace_gutter-cell.ace_warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); background-position: 2px center; } .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); } .ace_scrollbar { position: absolute; right: 0; bottom: 0; z-index: 6; } .ace_scrollbar-inner { position: absolute; cursor: text; left: 0; top: 0; } .ace_scrollbar-v{ overflow-x: hidden; overflow-y: scroll; top: 0; } .ace_scrollbar-h { overflow-x: scroll; overflow-y: hidden; left: 0; } .ace_print-margin { position: absolute; height: 100%; } .ace_text-input { position: absolute; z-index: 0; width: 0.5em; height: 1em; opacity: 0; background: transparent; -moz-appearance: none; appearance: none; border: none; resize: none; outline: none; overflow: hidden; font: inherit; padding: 0 1px; margin: 0 -1px; text-indent: -1em; -ms-user-select: text; -moz-user-select: text; -webkit-user-select: text; user-select: text; white-space: pre!important; } .ace_text-input.ace_composition { background: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; word-wrap: normal; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid; transform: translatez(0); } .ace_slim-cursors .ace_cursor { border-left-width: 1px; } .ace_overwrite-cursors .ace_cursor { border-left-width: 0; border-bottom: 1px solid; } .ace_hidden-cursors .ace_cursor { opacity: 0.2; } .ace_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { position: absolute; z-index: 3; } .ace_marker-layer .ace_selection { position: absolute; z-index: 5; } .ace_marker-layer .ace_bracket { position: absolute; z-index: 6; } .ace_marker-layer .ace_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: 11px; margin-top: -2px; vertical-align: middle; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); background-repeat: no-repeat, repeat-x; background-position: center center, top left; color: transparent; border: 1px solid black; border-radius: 2px; cursor: pointer; pointer-events: auto; } .ace_dark .ace_fold { } .ace_fold:hover{ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); } .ace_tooltip { background-color: #FFF; background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); color: black; max-width: 100%; padding: 3px 4px; position: fixed; z-index: 999999; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; cursor: default; white-space: pre; word-wrap: break-word; line-height: normal; font-style: normal; font-weight: normal; letter-spacing: normal; pointer-events: none; } .ace_folding-enabled > .ace_gutter-cell { padding-right: 13px; } .ace_fold-widget { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -12px 0 1px; display: none; width: 11px; vertical-align: top; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: center; border-radius: 3px; border: 1px solid transparent; cursor: pointer; } .ace_folding-enabled .ace_fold-widget { display: inline-block; } .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); } .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); } .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); } .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } .ace_dark .ace_fold-widget { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); } .ace_dark .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget:hover { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.1); } .ace_dark .ace_fold-widget:active { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; transition: opacity 0.05s ease 0.05s; opacity:1; } .ace_underline { text-decoration: underline; } .ace_bold { font-weight: bold; } .ace_nobold .ace_bold { font-weight: normal; } .ace_italic { font-style: italic; } .ace_error-marker { background-color: rgba(255, 0, 0,0.2); position: absolute; z-index: 9; } .ace_highlight-marker { background-color: rgba(255, 255, 0,0.2); position: absolute; z-index: 8; } .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} .ace_br4 {border-bottom-right-radius: 3px;} .ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} .ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} .ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} .ace_br8 {border-bottom-left-radius : 3px;} .ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} .ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} .ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} '; -r.importCssString(g,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(0>t||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),A=w+v,y=this.lineHeight;w=e.screenToDocumentRow(w,0);var C=e.getFoldLine(w);C&&(w=C.start.row),m=e.documentToScreenRow(w,0),g=e.getRowLength(w)*y,A=Math.min(e.screenToDocumentRow(A,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(A)*y+g,c=this.scrollTop-m*y;var E=0;return this.layerConfig.width!=o&&(E=this.CHANGE_H_SCROLL),(a||p)&&(E=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:m,lastRow:A,lineHeight:y,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/y)),height:this.$size.scrollerHeight},E},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||to?(t&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(ri;++i)r.push(o(i/this.STEPS,e,t-e));return r},this.scrollToLine=function(e,t,i,n){var r=this.$cursorLayer.getPixelPosition({row:e,column:0}),o=r.top;t&&(o-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(o),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var r=this.$scrollAnimation.steps;if(r.length&&(e=r[0],e==i))return}var o=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:o},clearInterval(this.$timer),n.session.setScrollTop(o.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){o.length?(n.session.setScrollTop(o.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(i.cssClass){r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(v.prototype),o.defineOptions(v.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(60),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(f){if(!(f instanceof window.DOMException))throw f;var d=this.$workerBlob(o),p=window.URL||window.webkitURL,m=p.createObjectURL(d);this.$worker=new Worker(m),p.revokeObjectURL(m)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function r(e){var t=e.domEvent,i=t.altKey,r=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,d=e.editor,u=d.selection,f=d.inMultiSelectMode,p=e.getDocumentPosition(),m=u.getCursor(),g=e.inSelection()||u.isEmpty()&&n(p,m),v=e.x,w=e.y,A=function(e){v=e.clientX,w=e.clientY},y=d.session,C=d.renderer.pixelToScreenCoordinates(v,w),E=C;if(d.$mouseHandler.$enableJumpToDef)a&&i||l&&i?h=r?"block":"add":i&&d.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add",!f&&r)return}else i&&d.$blockSelectEnabled&&(h="block");if(h&&s.isMac&&t.ctrlKey&&d.$mouseHandler.cancelContextMenu(),"add"==h){if(!f&&g)return;if(!f){var b=u.toOrientedRange();d.addSelectionMarker(b)}var F=u.rangeList.rangeAtPoint(p);d.$blockScrolling++,d.inVirtualSelectionMode=!0,r&&(F=null,b=u.ranges[0]||b,d.removeSelectionMarker(b)),d.once("mouseup",function(){var e=u.toOrientedRange();F&&e.isEmpty()&&n(F.cursor,e.cursor)?u.substractPoint(e.cursor):(r?u.substractPoint(b.cursor):b&&(d.removeSelectionMarker(b),u.addRange(b)),u.addRange(e)),d.$blockScrolling--,d.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),d.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=d.renderer.pixelToScreenCoordinates(v,w),t=y.screenToDocumentPosition(e.row,e.column);n(E,e)&&n(t,u.lead)||(E=e,d.$blockScrolling++,d.selection.moveToPosition(t),d.renderer.scrollCursorIntoView(),d.removeSelectionMarkers(S),S=u.rectangularRangeBlock(E,C),d.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=d.$mouseHandler.$clickSelection.clone()),S.forEach(d.addSelectionMarker,d),d.updateSelectionMarkers(),d.$blockScrolling--)};d.$blockScrolling++,f&&!l?u.toSingleRange():!f&&l&&(x=u.toOrientedRange(),d.addSelectionMarker(x)),r?C=y.documentToScreenPosition(u.lead):u.moveToPosition(p),d.$blockScrolling--,E={row:-1,column:-1};var D=function(e){clearInterval(B),d.removeSelectionMarkers(S),S.length||(S=[u.toOrientedRange()]),d.$blockScrolling++,x&&(d.removeSelectionMarker(x),u.toSingleRange(x));for(var t=0;t1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;o>d;d++)c.push(this.getLineRange(d,!0));h=this.getLineRange(o,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(n,r);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.columns&&(s=0),0>h&&(h=0),h==d&&(i=!0);for(var u=h;d>=u;u++){var f=l.fromPoints(this.session.screenToDocumentPosition(u,s),this.session.screenToDocumentPosition(u,a));if(f.isEmpty()){if(p&&r(f.end,p))break;var p=f.end}f.cursor=o?f.start:f.end,n.push(f)}if(c&&n.reverse(),!i){for(var m=n.length-1;n[m].isEmpty()&&m>0;)m--;if(m>0)for(var g=0;n[g].isEmpty();)g++;for(var v=m;v>=g;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;ne?a.unshift(a.pop()):a.push(a.shift());for(var r=n.length;r--;){var o=n[r],s=o.clone();t.replace(o,a[r]),o.start.row=s.start.row,o.start.column=s.start.column}},this.selectMore=function(e,t,i){var r=this.session,o=r.multiSelect,s=o.toOrientedRange();if(!s.isEmpty()||(s=r.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!i)){var a=r.getTextRange(s),l=n(r,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,r=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&r.length!=i.length-1){r.forEach(function(e){t.substractPoint(e.cursor)});var o=0,s=1/0,a=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),r=n.substr(i.column).search(/\S/g);return-1==r&&(r=0),i.column>o&&(o=i.column),s>r&&(s=r),r});i.forEach(function(t,i){var n=t.cursor,r=o-n.column,c=a[i]-s;r>c?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,m=this.session.getLength();do p=this.session.getLine(d);while(/[=:]/.test(p)&&++d0);0>h&&(h=0),d>=m&&(d=m-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,f),this.session.insert({row:h,column:0},g.join("\n")+"\n"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=/\S/,o=e.getLine(t),s=o.search(r);if(-1!=s){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++t=d)break;h=t}}if(h>c){var u=e.getLine(h).length;return new n(c,a,h,u)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter { background: #f0f0f0; color: #333; } .ace-tm .ace_print-margin { width: 1px; background: #e8e8e8; } .ace-tm .ace_fold { background-color: #6B72E6; } .ace-tm { background-color: #FFFFFF; color: black; } .ace-tm .ace_cursor { color: black; } .ace-tm .ace_invisible { color: rgb(191, 191, 191); } .ace-tm .ace_storage, .ace-tm .ace_keyword { color: blue; } .ace-tm .ace_constant { color: rgb(197, 6, 11); } .ace-tm .ace_constant.ace_buildin { color: rgb(88, 72, 246); } .ace-tm .ace_constant.ace_language { color: rgb(88, 92, 246); } .ace-tm .ace_constant.ace_library { color: rgb(6, 150, 14); } .ace-tm .ace_invalid { background-color: rgba(255, 0, 0, 0.1); color: red; } .ace-tm .ace_support.ace_function { color: rgb(60, 76, 114); } .ace-tm .ace_support.ace_constant { color: rgb(6, 150, 14); } .ace-tm .ace_support.ace_type, .ace-tm .ace_support.ace_class { color: rgb(109, 121, 222); } .ace-tm .ace_keyword.ace_operator { color: rgb(104, 118, 135); } .ace-tm .ace_string { color: rgb(3, 106, 7); } .ace-tm .ace_comment { color: rgb(76, 136, 107); } .ace-tm .ace_comment.ace_doc { color: rgb(0, 102, 255); } .ace-tm .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191); } .ace-tm .ace_constant.ace_numeric { color: rgb(0, 0, 205); } .ace-tm .ace_variable { color: rgb(49, 132, 149); } .ace-tm .ace_xml-pe { color: rgb(104, 104, 91); } .ace-tm .ace_entity.ace_name.ace_function { color: #0000A2; } .ace-tm .ace_heading { color: rgb(12, 7, 255); } .ace-tm .ace_list { color:rgb(185, 6, 144); } .ace-tm .ace_meta.ace_tag { color:rgb(0, 22, 142); } .ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0) } .ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255); } .ace-tm.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px white; } .ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0); } .ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101); } .ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192); } .ace-tm .ace_marker-layer .ace_active-line { background: rgba(0, 0, 0, 0.07); } .ace-tm .ace_gutter-active-line { background-color : #dcdcdc; } .ace-tm .ace_marker-layer .ace_selected-word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250); } .ace-tm .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; } ';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;o>a;a++)i[a]&&(i[a].hidden=s);i[o]&&(s?i[r]?i[o].hidden=s:i[r]=i[o]:(i[r]==i[o]&&(i[r]=void 0),i[o].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var r=t.splice(i+1,n);r.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var o=new Array(n);o.unshift(i,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var r=1/0,o=0;oa&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;o>=s;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;r>=n;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(0>s))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);0>o&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&0>i&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do s=r[o+=i];while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do l[0>i?"unshift":"push"](s),s=r[o+=i];while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range; -t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=m+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var g=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(u.destroy(),{command:"null"})};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; } ","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),r=e("./lib/event"),o=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new o(new l(e));h.setSession(c);var d={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),r.addListener(window,"resize",d.onResize),h.on("destroy",function(){r.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.2"}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,o=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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(o,r),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),r=i.match(/^(\s*\})/);if(!r)return 0;var o=r[1].length,s=e.findMatchingBracket({row:t,column:o});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var m=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var g="";f.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!g)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var A=w+r.getTabString();return{text:"\n"+A+"\n"+w+g,selection:[1,A.length,1,A.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);var a=r.doc.getLine(o.start.row),l=a.substring(o.end.column,o.end.column+1);if("}"==l)return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(")"==a)return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if("]"==a)return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),m=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var g,v=p&&/string|escape/.test(p.type),w=!m||/string|escape/.test(m.type);if(f==o)g=v!==w;else{if(v&&!w)return null;if(v&&w)return null;var A=n.$mode.tokenRe;A.lastIndex=0;var y=A.test(h);A.lastIndex=0;var C=A.test(h);if(y||C)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;g=!0}return{text:g?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(a==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),r=e("../../range").Range,o=e("./fold_mode").FoldMode,s=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)))};n.inherits(s,o),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,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var r=this._getFoldWidgetBase(e,t,i);return!r&&this.startRegionRe.test(n)?"start":r},this.getFoldWidgetRange=function(e,t,i,n){var r=e.getLine(i);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,i);var o=r.match(this.foldingStartMarker);if(o){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],i,s);var a=e.getCommentFoldRange(i,s+o[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var o=r.match(this.foldingStopMarker);if(o){var s=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),o=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new r(s,n,h,t.length):void 0}}.call(s.prototype)}),ace.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/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var r=t.match(/^.*[\{\(\[]\s*$/);r&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(39),"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(d.prototype),t.Mode=d})},function(e,t,i){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var r=n.createElement("div");r.innerHTML=c,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,i){e.exports={id:"http://json-schema.org/draft-04/schema#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean","default":!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean","default":!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean","default":!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},"default":{}}},function(e,t,i){e.exports=function n(e,t){"use strict";var i,r,o=/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,s=/(^[ ]*|[ ]*$)/g,a=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,l=/^0x[0-9a-f]+$/i,c=/^0/,h=function(e){return n.insensitive&&(""+e).toLowerCase()||""+e},d=h(e).replace(s,"")||"",u=h(t).replace(s,"")||"",f=d.replace(o,"\x00$1\x00").replace(/\0$/,"").replace(/^\0/,"").split("\x00"),p=u.replace(o,"\x00$1\x00").replace(/\0$/,"").replace(/^\0/,"").split("\x00"),m=parseInt(d.match(l),16)||1!==f.length&&d.match(a)&&Date.parse(d),g=parseInt(u.match(l),16)||m&&u.match(a)&&Date.parse(u)||null;if(g){if(g>m)return-1;if(m>g)return 1}for(var v=0,w=Math.max(f.length,p.length);w>v;v++){if(i=!(f[v]||"").match(c)&&parseFloat(f[v])||f[v]||0,r=!(p[v]||"").match(c)&&parseFloat(p[v])||p[v]||0,isNaN(i)!==isNaN(r))return isNaN(i)?1:-1;if(typeof i!=typeof r&&(i+="",r+=""),r>i)return-1;if(i>r)return 1}return 0}},function(e,t,i){"use strict";e.exports=function n(e,t){if(e===t)return!0;var i,r=Array.isArray(e),o=Array.isArray(t);if(r&&o){if(e.length!=t.length)return!1;for(i=0;ir;)i++,t=e.charCodeAt(r++),t>=55296&&56319>=t&&n>r&&(t=e.charCodeAt(r),56320==(64512&t)&&r++);return i}function h(e,t){t+="[^0-9]";var i=e.match(new RegExp(t,"g"));return i?i.length:0}function d(e,t,i){return t+="([^0-9])",i=i.replace(/\$/g,"$$$$"),e.replace(new RegExp(t,"g"),i+"$1")}function u(e){return e.replace(S,"").replace($,"").replace(D,"if (!($1))")}function f(e){var t=e.match(k);return t&&2===t.length?e.replace(B,"").replace(_,L):e}function p(e,t){for(var i in e)if(t[i])return!0}function m(e){return"'"+l(e)+"'"}function g(e,t,i,n){var r=i?"'/' + "+t+(n?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):n?"'[' + "+t+" + ']'":"'[\\'' + "+t+" + '\\']'";return A(e,r)}function v(e,t,i){var n=m(i?"/"+E(t):a(t));return A(e,n)}function w(e,t,i){var n=e.match(R);if(!n)throw new Error("Invalid relative JSON-pointer: "+e);var r=+n[1],o=n[2];if("#"==o){if(r>=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return i[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);for(var s="data"+(t-r||""),l=s,c=o.split("/"),h=0;h",b="result"+r,F=e.opts.v5&&s.$data,x=F?e.util.getData(s.$data,o,e.dataPathArr):s;if(F&&(n+=" var schema"+r+" = "+x+"; ",x="schema"+r),C){var S=e.util.getData(y.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=A,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+A+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; var exclusive"+r+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = exclusive"+r+" ? "+b+" "+E+" 0 : "+b+" "+E+"= 0; } if (!"+d+") var op"+r+" = exclusive"+r+" ? '"+E+"' : '"+E+"=';"}else{var $=y===!0,k=E;$||(k+="=");var D="'"+k+"'";F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+b+" "+E,$||(n+="="),n+=" 0;"}n+=""+p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: ',n+=F?""+x:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+k+' "',n+=F?"' + "+x+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=F?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="}"}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m,g="ifPassed"+e.level;n+="var "+g+";";var v=s;if(v)for(var w,A=-1,y=v.length-1;y>A;){if(w=v[A+=1],A&&!m&&(n+=" if (!"+g+") { ",p+="}"),w["if"]&&e.util.schemaHasRules(w["if"],e.RULES.all)){n+=" var "+u+" = errors; ";var C=e.compositeRule;if(e.compositeRule=f.compositeRule=!0,f.createErrors=!1,f.schema=w["if"],f.schemaPath=a+"["+A+"].if",f.errSchemaPath=l+"/"+A+"/if",n+=" "+e.validate(f)+" ",f.createErrors=!0,e.compositeRule=f.compositeRule=C,n+=" "+g+" = valid"+f.level+"; if ("+g+") { ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+A+"].then",f.errSchemaPath=l+"/"+A+"/then",n+=" "+e.validate(f)+" ";n+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } } "}else if(n+=" "+g+" = true; ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+A+"].then",f.errSchemaPath=l+"/"+A+"/then",n+=" "+e.validate(f)+" ";m=w["continue"]}return n+=""+p+"var "+d+" = valid"+f.level+"; ",n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports={$ref:i(41),allOf:i(42),anyOf:i(43),dependencies:i(44),"enum":i(45),format:i(46),items:i(47),maximum:i(48),minimum:i(48),maxItems:i(49),minItems:i(49),maxLength:i(50),minLength:i(50),maxProperties:i(51),minProperties:i(51),multipleOf:i(52),not:i(53),oneOf:i(54),pattern:i(55),properties:i(56),required:i(57),uniqueItems:i(58),validate:i(37)}},function(e,t,i){"use strict";e.exports=function(e,t){function i(e){for(var t=0;tv;)if(g=m[v+=1],i(g)){if(g.type&&(r+=" if ("+e.util.checkDataType(g.type,l)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==g.type&&e.schema.properties){var A=e.schema.properties,y=Object.keys(A),C=y;if(C)for(var E,b=-1,F=C.length-1;F>b;){E=C[b+=1];var x=A[E];if(void 0!==x["default"]){var S=l+e.util.getProperty(E);r+=" if ("+S+" === undefined) "+S+" = "+e.useDefault(x["default"])+"; "}}}else if("array"==g.type&&Array.isArray(e.schema.items)){var $=e.schema.items;if($)for(var x,D=-1,k=$.length-1;k>D;)if(x=$[D+=1],void 0!==x["default"]){var S=l+"["+D+"]";r+=" if ("+S+" === undefined) "+S+" = "+e.useDefault(x["default"])+"; "}}var B=g.rules;if(B)for(var _,L=-1,R=B.length-1;R>L;)if(_=B[L+=1],n(_)){if(_.custom){var A=e.schema[_.keyword],T=e.useCustomRule(_,A,e.schema,e),P=T.code+".errors",M=e.schemaPath+"."+_.keyword,O=e.errSchemaPath+"/"+_.keyword,N="errs"+s,D="i"+s,I="ruleErr"+s,j=_.definition,W=j.inline,H=j.macro;if(W||H||(r+=""+P+" = null;"),r+="var "+N+" = errors;",W&&j.statements)r+=" "+T.validate;else if(H){var V=e.util.copy(e);V.level++,V.schema=T.validate,V.schemaPath="";var z=e.compositeRule;e.compositeRule=V.compositeRule=!0;var U=e.validate(V).replace(/validate\.schema/g,T.code);e.compositeRule=V.compositeRule=z,r+=" "+U}r+="if (! ",W?r+=j.statements?" valid"+s+" ":" ("+T.validate+") ":H?r+=" valid"+V.level+" ":(r+=" "+T.code+".call(self ",j.compile?r+=" , "+l+" ":(r+=" , validate.schema"+M+" , "+l+" ",T.validate.length>2&&(r+=" , validate.schema"+e.schemaPath+" ")),r+=" ) "),r+=") { ",c=_.keyword;var K=K||[];K.push(r),r="";var K=K||[];K.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(c||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+O+"\" , params: { keyword: '"+_.keyword+"' } ",e.opts.messages!==!1&&(r+=" , message: 'should pass \""+_.keyword+"\" keyword validation' "),e.opts.verbose&&(r+=" , schema: validate.schema"+M+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),r+=" } "):r+=" {} ";var G=r;r=K.pop(),r+=!e.compositeRule&&d?" validate.errors = ["+G+"]; return false; ":" var err = "+G+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var q=r;r=K.pop(),W?j.errors?"full"!=j.errors&&(r+=" for (var "+D+"="+N+"; "+D+"",'"',"`"," ","\r","\n"," "],g=["{","}","|","\\","^","`"].concat(m),v=["'"].concat(g),w=["%","/","?",";","#"].concat(v),A=["/","?","#"],y=255,C=/^[a-z0-9A-Z_-]{0,63}$/,E=/^([a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},F={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=i(64);n.prototype.parse=function(e,t,i){if(!l(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var r=f.exec(n);if(r){r=r[0];var o=r.toLowerCase();this.protocol=o,n=n.substr(r.length)}if(i||r||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var s="//"===n.substr(0,2);!s||r&&F[r]||(n=n.substr(2),this.slashes=!0)}if(!F[r]&&(s||r&&!x[r])){for(var a=-1,c=0;ch)&&(a=h)}var d,p;p=-1===a?n.lastIndexOf("@"):n.lastIndexOf("@",a),-1!==p&&(d=n.slice(0,p),n=n.slice(p+1),this.auth=decodeURIComponent(d)),a=-1;for(var c=0;ch)&&(a=h)}-1===a&&(a=n.length),this.host=n.slice(0,a),n=n.slice(a),this.parseHost(),this.hostname=this.hostname||"";var m="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!m)for(var g=this.hostname.split(/\./),c=0,$=g.length;$>c;c++){var D=g[c];if(D&&!D.match(C)){for(var k="",B=0,_=D.length;_>B;B++)k+=D.charCodeAt(B)>127?"x":D[B];if(!k.match(C)){var L=g.slice(0,c),R=g.slice(c+1),T=D.match(E);T&&(L.push(T[1]),R.unshift(T[2])),R.length&&(n="/"+R.join(".")+n),this.hostname=L.join(".");break}}}if(this.hostname.length>y?this.hostname="":this.hostname=this.hostname.toLowerCase(),!m){for(var P=this.hostname.split("."),M=[],c=0;cc;c++){var j=v[c],W=encodeURIComponent(j);W===j&&(W=escape(j)),n=n.split(j).join(W)}var H=n.indexOf("#");-1!==H&&(this.hash=n.substr(H),n=n.slice(0,H));var V=n.indexOf("?");if(-1!==V?(this.search=n.substr(V),this.query=n.substr(V+1),t&&(this.query=S.parse(this.query)),n=n.slice(0,V)):t&&(this.search="",this.query={}),n&&(this.pathname=n),x[o]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var N=this.pathname||"",O=this.search||"";this.path=N+O}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",i=this.pathname||"",n=this.hash||"",r=!1,o="";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&c(this.query)&&Object.keys(this.query).length&&(o=S.stringify(this.query));var s=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||x[t])&&r!==!1?(r="//"+(r||""),i&&"/"!==i.charAt(0)&&(i="/"+i)):r||(r=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),i=i.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+r+i+s+n},n.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(l(e)){var t=new n;t.parse(e,!1,!0),e=t}var i=new n;if(Object.keys(this).forEach(function(e){i[e]=this[e]},this),i.hash=e.hash,""===e.href)return i.href=i.format(),i;if(e.slashes&&!e.protocol)return Object.keys(e).forEach(function(t){"protocol"!==t&&(i[t]=e[t])}),x[i.protocol]&&i.hostname&&!i.pathname&&(i.path=i.pathname="/"),i.href=i.format(),i;if(e.protocol&&e.protocol!==i.protocol){if(!x[e.protocol])return Object.keys(e).forEach(function(t){i[t]=e[t]}),i.href=i.format(),i;if(i.protocol=e.protocol,e.host||F[e.protocol])i.pathname=e.pathname;else{for(var r=(e.pathname||"").split("/");r.length&&!(e.host=r.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==r[0]&&r.unshift(""),r.length<2&&r.unshift(""),i.pathname=r.join("/")}if(i.search=e.search,i.query=e.query,i.host=e.host||"",i.auth=e.auth,i.hostname=e.hostname||e.host,i.port=e.port,i.pathname||i.search){var o=i.pathname||"",s=i.search||"";i.path=o+s}return i.slashes=i.slashes||e.slashes,i.href=i.format(),i}var a=i.pathname&&"/"===i.pathname.charAt(0),c=e.host||e.pathname&&"/"===e.pathname.charAt(0),u=c||a||i.host&&e.pathname,f=u,p=i.pathname&&i.pathname.split("/")||[],r=e.pathname&&e.pathname.split("/")||[],m=i.protocol&&!x[i.protocol];if(m&&(i.hostname="",i.port=null,i.host&&(""===p[0]?p[0]=i.host:p.unshift(i.host)),i.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===r[0]?r[0]=e.host:r.unshift(e.host)),e.host=null),u=u&&(""===r[0]||""===p[0])),c)i.host=e.host||""===e.host?e.host:i.host,i.hostname=e.hostname||""===e.hostname?e.hostname:i.hostname,i.search=e.search,i.query=e.query,p=r;else if(r.length)p||(p=[]),p.pop(),p=p.concat(r),i.search=e.search,i.query=e.query;else if(!d(e.search)){if(m){i.hostname=i.host=p.shift();var g=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;g&&(i.auth=g.shift(),i.host=i.hostname=g.shift())}return i.search=e.search,i.query=e.query,h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!p.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var v=p.slice(-1)[0],w=(i.host||e.host)&&("."===v||".."===v)||""===v,A=0,y=p.length;y>=0;y--)v=p[y],"."==v?p.splice(y,1):".."===v?(p.splice(y,1),A++):A&&(p.splice(y,1),A--);if(!u&&!f)for(;A--;A)p.unshift("..");!u||""===p[0]||p[0]&&"/"===p[0].charAt(0)||p.unshift(""),w&&"/"!==p.join("/").substr(-1)&&p.push("");var C=""===p[0]||p[0]&&"/"===p[0].charAt(0);if(m){i.hostname=i.host=C?"":p.length?p.shift():"";var g=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;g&&(i.auth=g.shift(),i.host=i.hostname=g.shift())}return u=u||i.host&&p.length,u&&!C&&p.unshift(""),p.length?i.pathname=p.join("/"):(i.pathname=null,i.path=null),h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=p.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,i){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; -},function(e,t,i){t.parse=i(62),t.stringify=i(63)},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.dataLevel,o=e.schema[t],s=e.errSchemaPath+"/"+t,a=!e.opts.allErrors,l="data"+(r||"");if("#"==o||"#/"==o)e.isRoot?(n+=" if (! validate("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = validate.errors; else vErrors = vErrors.concat(validate.errors); errors = vErrors.length; } ",a&&(n+=" else { ")):(n+=" if (! root.refVal[0]("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = root.refVal[0].errors; else vErrors = vErrors.concat(root.refVal[0].errors); errors = vErrors.length; } ",a&&(n+=" else { "));else{var c=e.resolveRef(e.baseId,o,e.isRoot);if(void 0===c){var h="can't resolve reference "+o+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(h);var d=d||[];d.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+s+"\" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(n+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var u=n;n=d.pop(),n+=!e.compositeRule&&a?" validate.errors = ["+u+"]; return false; ":" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a&&(n+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var f=new Error(h);throw f.missingRef=e.resolve.url(e.baseId,o),f.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(f.missingRef)),f}console.log(h),a&&(n+=" if (true) { ")}}else if("string"==typeof c)n+=" if (! "+c+"("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = "+c+".errors; else vErrors = vErrors.concat("+c+".errors); errors = vErrors.length; } ",a&&(n+=" else { ");else{var p=e.util.copy(e);p.level++,p.schema=c.schema,p.schemaPath="",p.errSchemaPath=o;var m=e.validate(p).replace(/validate\.schema/g,c.code);n+=" "+m+" ",a&&(n+=" if (valid"+p.level+") { ")}}return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+"."+t,o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c=n;if(c)for(var h,d=-1,u=c.length-1;u>d;)h=c[d+=1],e.util.schemaHasRules(h,e.RULES.all)&&(a.schema=h,a.schemaPath=r+"["+d+"]",a.errSchemaPath=o+"/"+d,i+=" "+e.validate(a)+" ",s&&(i+=" if (valid"+a.level+") { ",l+="}"));return s&&(i+=" "+l.slice(0,-1)),i=e.util.cleanUpCode(i)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=s.every(function(t){return e.util.schemaHasRules(t,e.RULES.all)});if(m){n+=" var "+u+" = errors; var "+d+" = false; ";var g=e.compositeRule;e.compositeRule=f.compositeRule=!0;var v=s;if(v)for(var w,A=-1,y=v.length-1;y>A;)w=v[A+=1],f.schema=w,f.schemaPath=a+"["+A+"]",f.errSchemaPath=l+"/"+A,n+=" "+e.validate(f)+" "+d+" = "+d+" || valid"+f.level+"; if (!"+d+") { ",p+="}";e.compositeRule=f.compositeRule=g,n+=" "+p+" if (!"+d+") { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"anyOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } "),n=e.util.cleanUpCode(n)}else c&&(n+=" if (true) { ");return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e),f="";u.level++;var p={},m={};for(A in s){var g=s[A],v=Array.isArray(g)?m:p;v[A]=g}n+="var "+d+" = errors;";var w=e.errorPath;n+="var missing"+r+";";for(var A in m){v=m[A],n+=" if ("+h+e.util.getProperty(A)+" !== undefined && ( ";var y=v;if(y)for(var C,E=-1,b=y.length-1;b>E;){C=y[E+=1],E&&(n+=" || ");var F=e.util.getProperty(C);n+=" ( "+h+F+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?C:F)+") ) "}n+=")) { ";var x="missing"+r,S="' + "+x+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,x,!0):w+" + "+x);var $=$||[];$.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(A)+"', missingProperty: '"+S+"', depsCount: "+v.length+", deps: '"+e.util.escapeQuotes(1==v.length?v[0]:v.join(", "))+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have ",n+=1==v.length?"property "+e.util.escapeQuotes(v[0]):"properties "+e.util.escapeQuotes(v.join(", ")),n+=" when property "+e.util.escapeQuotes(A)+" is present' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var D=n;n=$.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+D+"]; return false; ":" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(f+="}",n+=" else { ")}e.errorPath=w;for(var A in p){var g=p[A];e.util.schemaHasRules(g,e.RULES.all)&&(n+=" valid"+u.level+" = true; if ("+h+"['"+A+"'] !== undefined) { ",u.schema=g,u.schemaPath=a+e.util.getProperty(A),u.errSchemaPath=l+"/"+e.util.escapeFragment(A),n+=" "+e.validate(u)+" } ",c&&(n+=" if (valid"+u.level+") { ",f+="}"))}return c&&(n+=" "+f+" if ("+d+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r);var p="i"+r;u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+";",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=""+d+" = false;for (var "+p+"=0; "+p+"b;)if(E=C[b+=1],e.util.schemaHasRules(E,e.RULES.all)){n+=" valid"+f.level+" = true; if ("+h+".length > "+b+") { ";var x=h+"["+b+"]";f.schema=E,f.schemaPath=a+"["+b+"]",f.errSchemaPath=l+"/"+b,f.errorPath=e.util.getPathExpr(e.errorPath,b,e.opts.jsonPointers,!0),e.opts.v5&&(f.dataPathArr[m]=b);var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}if("object"==typeof v&&e.util.schemaHasRules(v,e.RULES.all)){f.schema=v,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" valid"+f.level+" = true; if ("+h+".length > "+s.length+") { for (var i"+r+" = "+s.length+"; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";e.opts.v5&&(f.dataPathArr[m]="i"+r);var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}else if(e.util.schemaHasRules(s,e.RULES.all)){f.schema=s,f.schemaPath=a,f.errSchemaPath=l,n+=" for (var i"+r+" = 0; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";e.opts.v5&&(f.dataPathArr[m]="i"+r);var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],g=e.opts.v5&&m&&m.$data,v=f?"<":">",w=f?">":"<";if(g){var A=e.util.getData(m.$data,o,e.dataPathArr),y="exclusive"+r,C="op"+r,E="' + "+C+" + '";n+=" var schemaExcl"+r+" = "+A+"; ",A="schemaExcl"+r,n+=" var exclusive"+r+"; if (typeof "+A+" != 'boolean' && typeof "+A+" != 'undefined') { ";var i=p,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;n=b.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" ((exclusive"+r+" = "+A+" === true) ? "+h+" "+w+"= "+u+" : "+h+" "+w+" "+u+")) { var op"+r+" = exclusive"+r+" ? '"+v+"' : '"+v+"=';"}else{var y=m===!0,E=v;y||(E+="=");var C="'"+E+"'";n+=" if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+" "+w,y&&(n+="="),n+=" "+u+") {"}var i=t,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+C+", limit: "+u+", exclusive: "+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+E+" ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;return n=b.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxItems"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+".length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxLength"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=e.opts.unicode===!1?" "+h+".length ":" ucs2length("+h+") ",n+=" "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxProperties"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" Object.keys("+h+").length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r),n+="var division"+r+";if (",d&&(n+=" "+u+" !== undefined && ( typeof "+u+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+u+", ",n+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var f=f||[];f.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { multipleOf: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;return n=f.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e);if(u.level++,e.util.schemaHasRules(s,e.RULES.all)){u.schema=s,u.schemaPath=a,u.errSchemaPath=l,n+=" var "+d+" = errors; ";var f=e.compositeRule;e.compositeRule=u.compositeRule=!0,u.createErrors=!1,n+=" "+e.validate(u)+" ",u.createErrors=!0,e.compositeRule=u.compositeRule=f,n+=" if (valid"+u.level+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++,n+="var "+u+" = errors;var prevValid"+r+" = false;var "+d+" = false; ";var m=e.compositeRule;e.compositeRule=f.compositeRule=!0;var g=s;if(g)for(var v,w=-1,A=g.length-1;A>w;)v=g[w+=1],e.util.schemaHasRules(v,e.RULES.all)?(f.schema=v,f.schemaPath=a+"["+w+"]",f.errSchemaPath=l+"/"+w,n+=" "+e.validate(f)+" "):n+=" var valid"+f.level+" = true; ",w&&(n+=" if (valid"+f.level+" && prevValid"+r+") "+d+" = false; else { ",p+="}"),n+=" if (valid"+f.level+") "+d+" = prevValid"+r+" = true;";e.compositeRule=f.compositeRule=m,n+=""+p+"if (!"+d+") { ";var y=y||[];y.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"oneOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var C=n;return n=y.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+C+"]; return false; ":" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f=d?"(new RegExp("+u+"))":e.usePattern(s);n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'string') || "),n+=" !"+f+".test("+h+") ) { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"pattern")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { pattern: ',n+=d?""+u:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should match pattern \"",n+=d?"' + "+u+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=f.dataLevel=e.dataLevel+1,g="data"+m,v=Object.keys(s||{}),w=e.schema.patternProperties||{},A=Object.keys(w),y=e.schema.additionalProperties,C=v.length||A.length,E=y===!1,b="object"==typeof y&&Object.keys(y).length,F=e.opts.removeAdditional,x=E||b||F,S=e.schema.required;if(S&&(!e.opts.v5||!S.$data)&&S.length5)n+=" || validate.schema"+a+"[key"+r+"] ";else{var B=v;if(B)for(var _,L=-1,R=B.length-1;R>L;)_=B[L+=1],n+=" || key"+r+" == "+e.util.toQuotedString(_)+" "}if(A.length){var T=A;if(T)for(var P,M=-1,O=T.length-1;O>M;)P=T[M+=1],n+=" || "+e.usePattern(P)+".test(key"+r+") "}if(e.opts.v5&&k&&k.length){var N=k;if(N)for(var I,M=-1,j=N.length-1;j>M;)I=N[M+=1],n+=" || "+e.usePattern(I)+".test(key"+r+") "}n+=" ); if (isAdditional"+r+") { "}if("all"==F)n+=" delete "+h+"[key"+r+"]; ";else{var W=e.errorPath,H="' + key"+r+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers)),E)if(F)n+=" delete "+h+"[key"+r+"]; ";else{n+=" valid"+f.level+" = false; ";var V=l;l=e.errSchemaPath+"/additionalProperties";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"additionalProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { additionalProperty: '"+H+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,c&&(n+=" break; ")}else if(b)if("failing"==F){n+=" var "+u+" = errors; ";var K=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=y,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,g)<2?" "+e.util.varReplace(q,g,G)+" ":" var "+g+" = "+G+"; "+q+" ",n+=" if (!valid"+f.level+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+h+"[key"+r+"]; } ",e.compositeRule=f.compositeRule=K}else{f.schema=y,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,g)<2?" "+e.util.varReplace(q,g,G)+" ":" var "+g+" = "+G+"; "+q+" ",c&&(n+=" if (!valid"+f.level+") break; ")}e.errorPath=W}C&&(n+=" } "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}var Q=e.opts.useDefaults&&!e.compositeRule;if(v.length){var Y=v;if(Y)for(var _,J=-1,X=Y.length-1;X>J;){_=Y[J+=1];var Z=s[_];if(e.util.schemaHasRules(Z,e.RULES.all)){var ee=e.util.getProperty(_),G=h+ee,te=Q&&void 0!==Z["default"];f.schema=Z,f.schemaPath=a+ee,f.errSchemaPath=l+"/"+e.util.escapeFragment(_),f.errorPath=e.util.getPath(e.errorPath,_,e.opts.jsonPointers),e.opts.v5&&(f.dataPathArr[m]=e.util.toQuotedString(_));var q=e.validate(f);if(e.util.varOccurences(q,g)<2){q=e.util.varReplace(q,g,G);var ie=G}else{var ie=g;n+=" var "+g+" = "+G+"; "}if(te)n+=" "+q+" ";else{if($&&$[_]){n+=" if ("+ie+" === undefined) { valid"+f.level+" = false; ";var W=e.errorPath,V=l,ne=e.util.escapeQuotes(_);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(W,_,e.opts.jsonPointers)),l=e.errSchemaPath+"/required";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+ne+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ne+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=W,n+=" } else { "}else n+=c?" if ("+ie+" === undefined) { valid"+f.level+" = true; } else { ":" if ("+ie+" !== undefined) { ";n+=" "+q+" } "}}c&&(n+=" if (valid"+f.level+") { ",p+="}")}}var re=A;if(re)for(var P,oe=-1,se=re.length-1;se>oe;){P=re[oe+=1];var Z=w[P];if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(P),f.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(P),n+=" for (var key"+r+" in "+h+") { if ("+e.usePattern(P)+".test(key"+r+")) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,g)<2?" "+e.util.varReplace(q,g,G)+" ":" var "+g+" = "+G+"; "+q+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}if(e.opts.v5){var ae=k;if(ae)for(var I,le=-1,ce=ae.length-1;ce>le;){I=ae[le+=1];var he=D[I],Z=he.schema;if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(I)+".schema",f.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(I)+"/schema",n+=" var pgPropCount"+r+" = 0; for (var key"+r+" in "+h+") { if ("+e.usePattern(I)+".test(key"+r+")) { pgPropCount"+r+"++; ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,g)<2?" "+e.util.varReplace(q,g,G)+" ":" var "+g+" = "+G+"; "+q+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}");var de=he.minimum,ue=he.maximum;if(void 0!==de||void 0!==ue){n+=" var "+d+" = true; ";var V=l;if(void 0!==de){var fe=de,pe="minimum",me="less";n+=" "+d+" = pgPropCount"+r+" >= "+de+"; ",l=e.errSchemaPath+"/patternGroups/minimum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",void 0!==ue&&(n+=" else ")}if(void 0!==ue){var fe=ue,pe="maximum",me="more";n+=" "+d+" = pgPropCount"+r+" <= "+ue+"; ",l=e.errSchemaPath+"/patternGroups/maximum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", -n+=" } "}l=V,c&&(n+=" if ("+d+") { ",p+="}")}}}}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),!u)if(s.lengthv;){g=m[v+=1];var A=e.schema.properties[g];A&&e.util.schemaHasRules(A,e.RULES.all)||(p[p.length]=g)}}else var p=s;if(u||p.length){var y=e.errorPath,C=u||p.length>=e.opts.loopRequired;if(c)if(n+=" var missing"+r+"; ",C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,b,e.opts.jsonPointers)),n+=" var "+d+" = true; ",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { "+d+" = "+h+"[schema"+r+"["+E+"]] !== undefined; if (!"+d+") break; } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var $=p;if($)for(var D,E=-1,k=$.length-1;k>E;){D=$[E+=1],E&&(n+=" || ");var B=e.util.getProperty(D);n+=" ( "+h+B+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:B)+") ) "}n+=") { ";var b="missing"+r,F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(y,b,!0):y+" + "+b);var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else if(C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,b,e.opts.jsonPointers)),u&&(n+=" if (schema"+r+" && !Array.isArray(schema"+r+")) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema"+r+" !== undefined) { "),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { if ("+h+"[schema"+r+"["+E+"]] === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",u&&(n+=" } ")}else{var _=p;if(_)for(var g,E=-1,L=_.length-1;L>E;){g=_[E+=1];var B=e.util.getProperty(g),F=e.util.escapeQuotes(g);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(y,g,e.opts.jsonPointers)),n+=" if ("+h+B+" === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=y}else c&&(n+=" if (true) {");return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),(s||u)&&e.opts.uniqueItems!==!1){u&&(n+=" var "+d+"; if ("+f+" === false || "+f+" === undefined) "+d+" = true; else if (typeof "+f+" != 'boolean') "+d+" = false; else { "),n+=" var "+d+" = true; if ("+h+".length > 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { i: i, j: j } ',e.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},function(e,t,i){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,i){(function(t){function i(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var i=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(e,t){var n=new i,r=t.endings,o=t.type;if(r)for(var s=0,a=e.length;a>s;++s)n.append(e[s],r);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return o?n.getBlob(o):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())},function(e,t,i){var n;(function(e,r){!function(o){function s(e){throw RangeError(L[e])}function a(e,t){for(var i=e.length,n=[];i--;)n[i]=t(e[i]);return n}function l(e,t){var i=e.split("@"),n="";i.length>1&&(n=i[0]+"@",e=i[1]),e=e.replace(_,".");var r=e.split("."),o=a(r,t).join(".");return n+o}function c(e){for(var t,i,n=[],r=0,o=e.length;o>r;)t=e.charCodeAt(r++),t>=55296&&56319>=t&&o>r?(i=e.charCodeAt(r++),56320==(64512&i)?n.push(((1023&t)<<10)+(1023&i)+65536):(n.push(t),r--)):n.push(t);return n}function h(e){return a(e,function(e){var t="";return e>65535&&(e-=65536,t+=P(e>>>10&1023|55296),e=56320|1023&e),t+=P(e)}).join("")}function d(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:C}function u(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function f(e,t,i){var n=0;for(e=i?T(e/x):e>>1,e+=T(e/t);e>R*b>>1;n+=C)e=T(e/R);return T(n+(R+1)*e/(e+F))}function p(e){var t,i,n,r,o,a,l,c,u,p,m=[],g=e.length,v=0,w=$,A=S;for(i=e.lastIndexOf(D),0>i&&(i=0),n=0;i>n;++n)e.charCodeAt(n)>=128&&s("not-basic"),m.push(e.charCodeAt(n));for(r=i>0?i+1:0;g>r;){for(o=v,a=1,l=C;r>=g&&s("invalid-input"),c=d(e.charCodeAt(r++)),(c>=C||c>T((y-v)/a))&&s("overflow"),v+=c*a,u=A>=l?E:l>=A+b?b:l-A,!(u>c);l+=C)p=C-u,a>T(y/p)&&s("overflow"),a*=p;t=m.length+1,A=f(v-o,t,0==o),T(v/t)>y-w&&s("overflow"),w+=T(v/t),v%=t,m.splice(v++,0,w)}return h(m)}function m(e){var t,i,n,r,o,a,l,h,d,p,m,g,v,w,A,F=[];for(e=c(e),g=e.length,t=$,i=0,o=S,a=0;g>a;++a)m=e[a],128>m&&F.push(P(m));for(n=r=F.length,r&&F.push(D);g>n;){for(l=y,a=0;g>a;++a)m=e[a],m>=t&&l>m&&(l=m);for(v=n+1,l-t>T((y-i)/v)&&s("overflow"),i+=(l-t)*v,t=l,a=0;g>a;++a)if(m=e[a],t>m&&++i>y&&s("overflow"),m==t){for(h=i,d=C;p=o>=d?E:d>=o+b?b:d-o,!(p>h);d+=C)A=h-p,w=C-p,F.push(P(u(p+A%w,0))),h=T(A/w);F.push(P(u(h,0))),o=f(i,v,n==r),i=0,++n}++i,++t}return F.join("")}function g(e){return l(e,function(e){return k.test(e)?p(e.slice(4).toLowerCase()):e})}function v(e){return l(e,function(e){return B.test(e)?"xn--"+m(e):e})}var w=("object"==typeof t&&t&&!t.nodeType&&t,"object"==typeof e&&e&&!e.nodeType&&e,"object"==typeof r&&r);(w.global===w||w.window===w||w.self===w)&&(o=w);var A,y=2147483647,C=36,E=1,b=26,F=38,x=700,S=72,$=128,D="-",k=/^xn--/,B=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=C-E,T=Math.floor,P=String.fromCharCode;A={version:"1.3.2",ucs2:{decode:c,encode:h},decode:p,encode:m,toASCII:v,toUnicode:g},n=function(){return A}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))}(this)}).call(t,i(65)(e),function(){return this}())},function(e,t,i){var n,r,o,s,a={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "},l=function(e){throw{name:"SyntaxError",message:e,at:n,text:o}},c=function(e){return e&&e!==r&&l("Expected '"+e+"' instead of '"+r+"'"),r=o.charAt(n),n+=1,r},h=function(){var e,t="";for("-"===r&&(t="-",c("-"));r>="0"&&"9">=r;)t+=r,c();if("."===r)for(t+=".";c()&&r>="0"&&"9">=r;)t+=r;if("e"===r||"E"===r)for(t+=r,c(),("-"===r||"+"===r)&&(t+=r,c());r>="0"&&"9">=r;)t+=r,c();return e=+t,isFinite(e)?e:void l("Bad number")},d=function(){var e,t,i,n="";if('"'===r)for(;c();){if('"'===r)return c(),n;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;4>t&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof a[r])break;n+=a[r]}else n+=r}l("Bad string")},u=function(){for(;r&&" ">=r;)c()},f=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+r+"'")},p=function(){var e=[];if("["===r){if(c("["),u(),"]"===r)return c("]"),e;for(;r;){if(e.push(s()),u(),"]"===r)return c("]"),e;c(","),u()}}l("Bad array")},m=function(){var e,t={};if("{"===r){if(c("{"),u(),"}"===r)return c("}"),t;for(;r;){if(e=d(),u(),c(":"),Object.hasOwnProperty.call(t,e)&&l('Duplicate key "'+e+'"'),t[e]=s(),u(),"}"===r)return c("}"),t;c(","),u()}}l("Bad object")};s=function(){switch(u(),r){case"{":return m();case"[":return p();case'"':return d();case"-":return h();default:return r>="0"&&"9">=r?h():f()}},e.exports=function(e,t){var i;return o=e,n=0,r=" ",i=s(),u(),r&&l("Syntax error"),"function"==typeof t?function a(e,i){var n,r,o=e[i];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=a(o,n),void 0!==r?o[n]=r:delete o[n]);return t.call(e,i,o)}({"":i},""):i}},function(e,t,i){function n(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var t=c[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function r(e,t){var i,l,c,h,d,u=o,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof a&&(f=a.call(t,e,f)),typeof f){case"string":return n(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(o+=s,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,i=0;h>i;i+=1)d[i]=r(i,f)||"null";return c=0===d.length?"[]":o?"[\n"+o+d.join(",\n"+o)+"\n"+u+"]":"["+d.join(",")+"]",o=u,c}if(a&&"object"==typeof a)for(h=a.length,i=0;h>i;i+=1)l=a[i],"string"==typeof l&&(c=r(l,f),c&&d.push(n(l)+(o?": ":":")+c));else for(l in f)Object.prototype.hasOwnProperty.call(f,l)&&(c=r(l,f),c&&d.push(n(l)+(o?": ":":")+c));return c=0===d.length?"{}":o?"{\n"+o+d.join(",\n"+o)+"\n"+u+"}":"{"+d.join(",")+"}",o=u,c}}var o,s,a,l=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,c={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};e.exports=function(e,t,i){var n;if(o="",s="","number"==typeof i)for(n=0;i>n;n+=1)s+=" ";else"string"==typeof i&&(s=i);if(a=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return r("",{"":e})}},function(e,t,i){"use strict";t.decode=t.parse=i(66),t.encode=t.stringify=i(67)},function(e,t,i){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,i){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,i,r){t=t||"&",i=i||"=";var o={};if("string"!=typeof e||0===e.length)return o;var s=/\+/g;e=e.split(t);var a=1e3;r&&"number"==typeof r.maxKeys&&(a=r.maxKeys);var l=e.length;a>0&&l>a&&(l=a);for(var c=0;l>c;++c){var h,d,u,f,p=e[c].replace(s,"%20"),m=p.indexOf(i);m>=0?(h=p.substr(0,m),d=p.substr(m+1)):(h=p,d=""),u=decodeURIComponent(h),f=decodeURIComponent(d),n(o,u)?Array.isArray(o[u])?o[u].push(f):o[u]=[o[u],f]:o[u]=f}return o}},function(e,t,i){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,i,r){return t=t||"&",i=i||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(r){var o=encodeURIComponent(n(r))+i;return Array.isArray(e[r])?e[r].map(function(e){return o+encodeURIComponent(n(e))}).join(t):o+encodeURIComponent(n(e[r]))}).join(t):r?encodeURIComponent(n(r))+i+encodeURIComponent(n(e)):""}}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=l.getInternetExplorerVersion();if(-1!=r&&9>r)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(1)}catch(o){}var s=i(51),a=i(62),l=i(54);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=l.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=l.extend({},this.options),s=o.mode;o.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==a.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),l.clear(this),l.extend(this,a.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(h){console.error(h)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(i){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},n.prototype.validate=function(){},n.registerMode=function(e){var t,i;if(l.isArray(e))for(t=0;t",'"',"`"," ","\r","\n"," "],g=["{","}","|","\\","^","`"].concat(m),v=["'"].concat(g),w=["%","/","?",";","#"].concat(v),y=["/","?","#"],A=255,C=/^[a-z0-9A-Z_-]{0,63}$/,E=/^([a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},F={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=i(7);n.prototype.parse=function(e,t,i){if(!l(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var r=f.exec(n);if(r){r=r[0];var o=r.toLowerCase();this.protocol=o,n=n.substr(r.length)}if(i||r||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var s="//"===n.substr(0,2);!s||r&&F[r]||(n=n.substr(2),this.slashes=!0)}if(!F[r]&&(s||r&&!x[r])){for(var a=-1,c=0;ch)&&(a=h)}var d,p;p=-1===a?n.lastIndexOf("@"):n.lastIndexOf("@",a),-1!==p&&(d=n.slice(0,p),n=n.slice(p+1),this.auth=decodeURIComponent(d)),a=-1;for(var c=0;ch)&&(a=h)}-1===a&&(a=n.length),this.host=n.slice(0,a),n=n.slice(a),this.parseHost(),this.hostname=this.hostname||"";var m="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!m)for(var g=this.hostname.split(/\./),c=0,$=g.length;$>c;c++){var D=g[c];if(D&&!D.match(C)){for(var k="",B=0,_=D.length;_>B;B++)k+=D.charCodeAt(B)>127?"x":D[B];if(!k.match(C)){var L=g.slice(0,c),R=g.slice(c+1),T=D.match(E);T&&(L.push(T[1]),R.unshift(T[2])),R.length&&(n="/"+R.join(".")+n),this.hostname=L.join(".");break}}}if(this.hostname.length>A?this.hostname="":this.hostname=this.hostname.toLowerCase(),!m){for(var P=this.hostname.split("."),M=[],c=0;cc;c++){var j=v[c],W=encodeURIComponent(j);W===j&&(W=escape(j)),n=n.split(j).join(W)}var H=n.indexOf("#");-1!==H&&(this.hash=n.substr(H),n=n.slice(0,H));var V=n.indexOf("?");if(-1!==V?(this.search=n.substr(V),this.query=n.substr(V+1),t&&(this.query=S.parse(this.query)),n=n.slice(0,V)):t&&(this.search="",this.query={}),n&&(this.pathname=n),x[o]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var N=this.pathname||"",O=this.search||"";this.path=N+O}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",i=this.pathname||"",n=this.hash||"",r=!1,o="";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&c(this.query)&&Object.keys(this.query).length&&(o=S.stringify(this.query));var s=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||x[t])&&r!==!1?(r="//"+(r||""),i&&"/"!==i.charAt(0)&&(i="/"+i)):r||(r=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),i=i.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+r+i+s+n},n.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(l(e)){var t=new n;t.parse(e,!1,!0),e=t}var i=new n;if(Object.keys(this).forEach(function(e){i[e]=this[e]},this),i.hash=e.hash,""===e.href)return i.href=i.format(),i;if(e.slashes&&!e.protocol)return Object.keys(e).forEach(function(t){"protocol"!==t&&(i[t]=e[t])}),x[i.protocol]&&i.hostname&&!i.pathname&&(i.path=i.pathname="/"),i.href=i.format(),i;if(e.protocol&&e.protocol!==i.protocol){if(!x[e.protocol])return Object.keys(e).forEach(function(t){i[t]=e[t]}),i.href=i.format(),i;if(i.protocol=e.protocol,e.host||F[e.protocol])i.pathname=e.pathname;else{for(var r=(e.pathname||"").split("/");r.length&&!(e.host=r.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==r[0]&&r.unshift(""),r.length<2&&r.unshift(""),i.pathname=r.join("/")}if(i.search=e.search,i.query=e.query,i.host=e.host||"",i.auth=e.auth,i.hostname=e.hostname||e.host,i.port=e.port,i.pathname||i.search){var o=i.pathname||"",s=i.search||"";i.path=o+s}return i.slashes=i.slashes||e.slashes,i.href=i.format(),i}var a=i.pathname&&"/"===i.pathname.charAt(0),c=e.host||e.pathname&&"/"===e.pathname.charAt(0),u=c||a||i.host&&e.pathname,f=u,p=i.pathname&&i.pathname.split("/")||[],r=e.pathname&&e.pathname.split("/")||[],m=i.protocol&&!x[i.protocol];if(m&&(i.hostname="",i.port=null,i.host&&(""===p[0]?p[0]=i.host:p.unshift(i.host)),i.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===r[0]?r[0]=e.host:r.unshift(e.host)),e.host=null),u=u&&(""===r[0]||""===p[0])),c)i.host=e.host||""===e.host?e.host:i.host,i.hostname=e.hostname||""===e.hostname?e.hostname:i.hostname,i.search=e.search,i.query=e.query,p=r;else if(r.length)p||(p=[]),p.pop(),p=p.concat(r),i.search=e.search,i.query=e.query;else if(!d(e.search)){if(m){i.hostname=i.host=p.shift();var g=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;g&&(i.auth=g.shift(),i.host=i.hostname=g.shift())}return i.search=e.search,i.query=e.query,h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!p.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var v=p.slice(-1)[0],w=(i.host||e.host)&&("."===v||".."===v)||""===v,y=0,A=p.length;A>=0;A--)v=p[A],"."==v?p.splice(A,1):".."===v?(p.splice(A,1),y++):y&&(p.splice(A,1),y--);if(!u&&!f)for(;y--;y)p.unshift("..");!u||""===p[0]||p[0]&&"/"===p[0].charAt(0)||p.unshift(""),w&&"/"!==p.join("/").substr(-1)&&p.push("");var C=""===p[0]||p[0]&&"/"===p[0].charAt(0);if(m){i.hostname=i.host=C?"":p.length?p.shift():"";var g=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;g&&(i.auth=g.shift(),i.host=i.hostname=g.shift())}return u=u||i.host&&p.length,u&&!C&&p.unshift(""),p.length?i.pathname=p.join("/"):(i.pathname=null,i.path=null),h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=p.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,i){var n;(function(e,r){!function(o){function s(e){throw RangeError(L[e])}function a(e,t){for(var i=e.length,n=[];i--;)n[i]=t(e[i]);return n}function l(e,t){var i=e.split("@"),n="";i.length>1&&(n=i[0]+"@",e=i[1]),e=e.replace(_,".");var r=e.split("."),o=a(r,t).join(".");return n+o}function c(e){for(var t,i,n=[],r=0,o=e.length;o>r;)t=e.charCodeAt(r++),t>=55296&&56319>=t&&o>r?(i=e.charCodeAt(r++),56320==(64512&i)?n.push(((1023&t)<<10)+(1023&i)+65536):(n.push(t),r--)):n.push(t);return n}function h(e){return a(e,function(e){var t="";return e>65535&&(e-=65536,t+=P(e>>>10&1023|55296),e=56320|1023&e),t+=P(e)}).join("")}function d(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:C}function u(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function f(e,t,i){var n=0;for(e=i?T(e/x):e>>1,e+=T(e/t);e>R*b>>1;n+=C)e=T(e/R);return T(n+(R+1)*e/(e+F))}function p(e){var t,i,n,r,o,a,l,c,u,p,m=[],g=e.length,v=0,w=$,y=S;for(i=e.lastIndexOf(D),0>i&&(i=0),n=0;i>n;++n)e.charCodeAt(n)>=128&&s("not-basic"),m.push(e.charCodeAt(n));for(r=i>0?i+1:0;g>r;){for(o=v,a=1,l=C;r>=g&&s("invalid-input"),c=d(e.charCodeAt(r++)),(c>=C||c>T((A-v)/a))&&s("overflow"),v+=c*a,u=y>=l?E:l>=y+b?b:l-y,!(u>c);l+=C)p=C-u,a>T(A/p)&&s("overflow"),a*=p;t=m.length+1,y=f(v-o,t,0==o),T(v/t)>A-w&&s("overflow"),w+=T(v/t),v%=t,m.splice(v++,0,w)}return h(m)}function m(e){var t,i,n,r,o,a,l,h,d,p,m,g,v,w,y,F=[];for(e=c(e),g=e.length,t=$,i=0,o=S,a=0;g>a;++a)m=e[a],128>m&&F.push(P(m));for(n=r=F.length,r&&F.push(D);g>n;){for(l=A,a=0;g>a;++a)m=e[a],m>=t&&l>m&&(l=m);for(v=n+1,l-t>T((A-i)/v)&&s("overflow"),i+=(l-t)*v,t=l,a=0;g>a;++a)if(m=e[a],t>m&&++i>A&&s("overflow"),m==t){for(h=i,d=C;p=o>=d?E:d>=o+b?b:d-o,!(p>h);d+=C)y=h-p,w=C-p,F.push(P(u(p+y%w,0))),h=T(y/w);F.push(P(u(h,0))),o=f(i,v,n==r),i=0,++n}++i,++t}return F.join("")}function g(e){return l(e,function(e){return k.test(e)?p(e.slice(4).toLowerCase()):e})}function v(e){return l(e,function(e){return B.test(e)?"xn--"+m(e):e})}var w=("object"==typeof t&&t&&!t.nodeType&&t,"object"==typeof e&&e&&!e.nodeType&&e,"object"==typeof r&&r);w.global!==w&&w.window!==w&&w.self!==w||(o=w);var y,A=2147483647,C=36,E=1,b=26,F=38,x=700,S=72,$=128,D="-",k=/^xn--/,B=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=C-E,T=Math.floor,P=String.fromCharCode;y={version:"1.3.2",ucs2:{decode:c,encode:h},decode:p,encode:m,toASCII:v,toUnicode:g},n=function(){return y}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))}(this)}).call(t,i(6)(e),function(){return this}())},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,i){"use strict";t.decode=t.parse=i(8),t.encode=t.stringify=i(9)},function(e,t){"use strict";function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,r){t=t||"&",n=n||"=";var o={};if("string"!=typeof e||0===e.length)return o;var s=/\+/g;e=e.split(t);var a=1e3;r&&"number"==typeof r.maxKeys&&(a=r.maxKeys);var l=e.length;a>0&&l>a&&(l=a);for(var c=0;l>c;++c){var h,d,u,f,p=e[c].replace(s,"%20"),m=p.indexOf(n);m>=0?(h=p.substr(0,m),d=p.substr(m+1)):(h=p,d=""),u=decodeURIComponent(h),f=decodeURIComponent(d),i(o,u)?Array.isArray(o[u])?o[u].push(f):o[u]=[o[u],f]:o[u]=f}return o}},function(e,t){"use strict";var i=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,r){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(r){var o=encodeURIComponent(i(r))+n;return Array.isArray(e[r])?e[r].map(function(e){return o+encodeURIComponent(i(e))}).join(t):o+encodeURIComponent(i(e[r]))}).join(t):r?encodeURIComponent(i(r))+n+encodeURIComponent(i(e)):""}},function(e,t){"use strict";e.exports=function i(e,t){if(e===t)return!0;var n,r=Array.isArray(e),o=Array.isArray(t);if(r&&o){if(e.length!=t.length)return!1;for(n=0;nr;)i++,t=e.charCodeAt(r++),t>=55296&&56319>=t&&n>r&&(t=e.charCodeAt(r),56320==(64512&t)&&r++);return i}function d(e,t){t+="[^0-9]";var i=e.match(new RegExp(t,"g"));return i?i.length:0}function u(e,t,i){return t+="([^0-9])",i=i.replace(/\$/g,"$$$$"),e.replace(new RegExp(t,"g"),i+"$1")}function f(e){return e.replace(D,"").replace(k,"").replace(B,"if (!($1))")}function p(e,t){var i=e.match(_);return i&&2===i.length?t?e.replace(R,"").replace(M,O):e.replace(L,"").replace(T,P):e}function m(e,t){for(var i in e)if(t[i])return!0}function g(e){return"'"+c(e)+"'"}function v(e,t,i,n){var r=i?"'/' + "+t+(n?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):n?"'[' + "+t+" + ']'":"'[\\'' + "+t+" + '\\']'";return A(e,r)}function w(e,t,i){var n=g(i?"/"+b(t):l(t));return A(e,n)}function y(e,t,i){var n=e.match(N);if(!n)throw new Error("Invalid relative JSON-pointer: "+e);var r=+n[1],o=n[2];if("#"==o){if(r>=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return i[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);var s="data"+(t-r||"");if(!o)return s;for(var a=s,c=o.split("/"),h=0;h="0"&&"9">=n;)t+=n,l();if("."===n)for(t+=".";l()&&n>="0"&&"9">=n;)t+=n; +if("e"===n||"E"===n)for(t+=n,l(),"-"!==n&&"+"!==n||(t+=n,l());n>="0"&&"9">=n;)t+=n,l();return e=+t,isFinite(e)?e:void a("Bad number")},h=function(){var e,t,i,r="";if('"'===n)for(;l();){if('"'===n)return l(),r;if("\\"===n)if(l(),"u"===n){for(i=0,t=0;4>t&&(e=parseInt(l(),16),isFinite(e));t+=1)i=16*i+e;r+=String.fromCharCode(i)}else{if("string"!=typeof s[n])break;r+=s[n]}else r+=n}a("Bad string")},d=function(){for(;n&&" ">=n;)l()},u=function(){switch(n){case"t":return l("t"),l("r"),l("u"),l("e"),!0;case"f":return l("f"),l("a"),l("l"),l("s"),l("e"),!1;case"n":return l("n"),l("u"),l("l"),l("l"),null}a("Unexpected '"+n+"'")},f=function(){var e=[];if("["===n){if(l("["),d(),"]"===n)return l("]"),e;for(;n;){if(e.push(o()),d(),"]"===n)return l("]"),e;l(","),d()}}a("Bad array")},p=function(){var e,t={};if("{"===n){if(l("{"),d(),"}"===n)return l("}"),t;for(;n;){if(e=h(),d(),l(":"),Object.hasOwnProperty.call(t,e)&&a('Duplicate key "'+e+'"'),t[e]=o(),d(),"}"===n)return l("}"),t;l(","),d()}}a("Bad object")};o=function(){switch(d(),n){case"{":return p();case"[":return f();case'"':return h();case"-":return c();default:return n>="0"&&"9">=n?c():u()}},e.exports=function(e,t){var s;return r=e,i=0,n=" ",s=o(),d(),n&&a("Syntax error"),"function"==typeof t?function l(e,i){var n,r,o=e[i];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=l(o,n),void 0!==r?o[n]=r:delete o[n]);return t.call(e,i,o)}({"":s},""):s}},function(e,t){function i(e){return a.lastIndex=0,a.test(e)?'"'+e.replace(a,function(e){var t=l[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function n(e,t){var a,l,c,h,d,u=r,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof s&&(f=s.call(t,e,f)),typeof f){case"string":return i(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(r+=o,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,a=0;h>a;a+=1)d[a]=n(a,f)||"null";return c=0===d.length?"[]":r?"[\n"+r+d.join(",\n"+r)+"\n"+u+"]":"["+d.join(",")+"]",r=u,c}if(s&&"object"==typeof s)for(h=s.length,a=0;h>a;a+=1)l=s[a],"string"==typeof l&&(c=n(l,f),c&&d.push(i(l)+(r?": ":":")+c));else for(l in f)Object.prototype.hasOwnProperty.call(f,l)&&(c=n(l,f),c&&d.push(i(l)+(r?": ":":")+c));return c=0===d.length?"{}":r?"{\n"+r+d.join(",\n"+r)+"\n"+u+"}":"{"+d.join(",")+"}",r=u,c}}var r,o,s,a=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};e.exports=function(e,t,i){var a;if(r="",o="","number"==typeof i)for(a=0;i>a;a+=1)o+=" ";else"string"==typeof i&&(o=i);if(s=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return n("",{"":e})}},function(e,t,i){"use strict";function n(e){r.copy(e,this)}var r=i(11);e.exports=n},function(module,exports,__webpack_require__){"use strict";function setupAsync(e,t){t!==!1&&(t=!0);var i,n=e.async,r=e.transpile;switch(typeof r){case"string":var o=TRANSPILE[r];if(!o)throw new Error("bad transpiler: "+r);return e._transpileFunc=o(e,t);case"undefined":case"boolean":if("string"==typeof n){if(i=ASYNC[n],!i)throw new Error("bad async mode: "+n);return e.transpile=i(e,t)}for(var s=0;s$;)S=x[$+=1],$&&(r+=" if ("+b+" === undefined) { ",F+="}"),"string"==S?r+=" if ("+E+" == 'number' || "+E+" == 'boolean') "+b+" = '' + "+c+"; else if ("+c+" === null) "+b+" = ''; ":"number"==S||"integer"==S?(r+=" if ("+E+" == 'boolean' || "+c+" === null || ("+E+" == 'string' && "+c+" && "+c+" == +"+c+" ","integer"==S&&(r+=" && !("+c+" % 1)"),r+=")) "+b+" = +"+c+"; "):"boolean"==S?r+=" if ("+c+" === 'false' || "+c+" === 0 || "+c+" === null) "+b+" = false; else if ("+c+" === 'true' || "+c+" === 1) "+b+" = true; ":"null"==S&&(r+=" if ("+c+" === '' || "+c+" === 0 || "+c+" === false) "+b+" = null; ");r+=" "+F+" if ("+b+" === undefined) { ";var k=k||[];k.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(d||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+A+"\" , params: { type: '",r+=v?""+g.join(","):""+g,r+="' } ",e.opts.messages!==!1&&(r+=" , message: 'should be ",r+=v?""+g.join(","):""+g,r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+y+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),r+=" } "):r+=" {} ";var B=r;if(r=k.pop(),r+=!e.compositeRule&&f?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",l){var _="data"+(l-1||""),L=e.dataPathArr[l];r+=" "+c+" = "+_+"["+L+"] = "+b+"; "}else r+=" data = "+b+"; if (parentData !== undefined) parentData[parentDataProperty] = "+b+"; ";r+=" } } "}}var R=e.RULES;if(R)for(var T,P=-1,M=R.length-1;M>P;)if(T=R[P+=1],i(T)){if(T.type&&(r+=" if ("+e.util.checkDataType(T.type,c)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==T.type&&e.schema.properties){var O=e.schema.properties,N=Object.keys(O),I=N;if(I)for(var j,W=-1,H=I.length-1;H>W;){j=I[W+=1];var V=O[j];if(void 0!==V["default"]){var z=c+e.util.getProperty(j);r+=" if ("+z+" === undefined) "+z+" = ",r+="clone"==e.opts.useDefaults?" "+JSON.stringify(V["default"])+" ":" "+e.useDefault(V["default"])+" ",r+="; "}}}else if("array"==T.type&&Array.isArray(e.schema.items)){var U=e.schema.items;if(U)for(var V,$=-1,K=U.length-1;K>$;)if(V=U[$+=1],void 0!==V["default"]){var z=c+"["+$+"]";r+=" if ("+z+" === undefined) "+z+" = ",r+="clone"==e.opts.useDefaults?" "+JSON.stringify(V["default"])+" ":" "+e.useDefault(V["default"])+" ",r+="; "}}var q=T.rules;if(q)for(var G,Y=-1,Q=q.length-1;Q>Y;)if(G=q[Y+=1],n(G)){if(G.custom){var O=e.schema[G.keyword],J=e.useCustomRule(G,O,e.schema,e),X=J.code+".errors",y=e.schemaPath+"."+G.keyword,A=e.errSchemaPath+"/"+G.keyword,Z="errs"+a,$="i"+a,ee="ruleErr"+a,te=G.definition,ie=te.async,ne=te.inline,re=te.macro;if(ie&&!e.async)throw new Error("async keyword in sync schema");if(ne||re||(r+=""+X+" = null;"),r+="var "+Z+" = errors;var valid"+a+";",ne&&te.statements)r+=" "+J.validate;else if(re){var oe=e.util.copy(e);oe.level++,oe.schema=J.validate,oe.schemaPath="";var se=e.compositeRule;e.compositeRule=oe.compositeRule=!0;var ae=e.validate(oe).replace(/validate\.schema/g,J.code);e.compositeRule=oe.compositeRule=se,r+=" "+ae}else if(te.compile||te.validate){var k=k||[];k.push(r),r="",r+=" "+J.code+".call( ",r+=e.opts.passContext?"this":"self";J.validate.length;r+=te.compile||te.schema===!1?" , "+c+" ":" , validate.schema"+y+" , "+c+" , validate.schema"+e.schemaPath+" ",r+=" , (dataPath || '')",'""'!=e.errorPath&&(r+=" + "+e.errorPath),r+=l?" , data"+(l-1||"")+" , "+e.dataPathArr[l]+" ":" , parentData , parentDataProperty ",r+=" ) ";var le=r;r=k.pop(),te.errors!==!1&&(ie?(X="customErrors"+a,r+=" var "+X+" = null; try { valid"+a+" = "+e.yieldAwait+le+"; } catch (e) { valid"+a+" = false; if (e instanceof ValidationError) "+X+" = e.errors; else throw e; } "):r+=" "+J.code+".errors = null; ")}r+="if (! ",r+=ne?te.statements?" valid"+a+" ":" ("+J.validate+") ":re?" valid"+oe.level+" ":ie?te.errors===!1?" ("+e.yieldAwait+le+") ":" valid"+a+" ":" "+le+" ",r+=") { ",d=G.keyword;var k=k||[];k.push(r),r="";var k=k||[];k.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(d||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+A+"\" , params: { keyword: '"+G.keyword+"' } ",e.opts.messages!==!1&&(r+=" , message: 'should pass \""+G.keyword+"\" keyword validation' "),e.opts.verbose&&(r+=" , schema: validate.schema"+y+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),r+=" } "):r+=" {} ";var B=r;r=k.pop(),r+=!e.compositeRule&&f?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var ce=r;r=k.pop(),ne?te.errors?"full"!=te.errors&&(r+=" for (var "+$+"="+Z+"; "+$+"2&&(t=d.call(arguments,1)),void i(t))})})}function o(e){return Promise.all(e.map(n,this))}function s(e){function t(e,t){i[t]=void 0,o.push(e.then(function(e){i[t]=e}))}for(var i=new e.constructor,r=Object.keys(e),o=[],s=0;s=1&&12>=i&&n>=1&&n<=m[i]}function o(e,t){var i=e.match(g);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return 23>=n&&59>=r&&59>=o&&(!t||s)}function s(e){var t=e.split(E);return r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return b.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(t){return!1}}function h(e,t){return e&&t?e>t?1:t>e?-1:e===t?0:void 0:void 0}function d(e,t){return e&&t&&(e=e.match(g),t=t.match(g),e&&t)?(e=e[1]+e[2]+e[3]+(e[4]||""),t=t[1]+t[2]+t[3]+(t[4]||""),e>t?1:t>e?-1:e===t?0:void 0):void 0}function u(e,t){if(e&&t){e=e.split(E),t=t.split(E);var i=h(e[0],t[0]);if(void 0!==i)return i||d(e[1],t[1])}}var f=i(11),p=/^\d\d\d\d-(\d\d)-(\d\d)$/,m=[0,31,29,31,30,31,30,31,31,30,31,30,31],g=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,v=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,w=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i,y=/^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,A=/^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i,C=/^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/;e.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:v,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:y,"json-pointer":A,"relative-json-pointer":C},n.full={date:r,time:o,"date-time":s,uri:l,email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:a,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:y,"json-pointer":A,"relative-json-pointer":C},n.compare={date:h,time:d,"date-time":u};var E=/t|\s/i,b=/\/|\:/},function(e,t,i){"use strict";var n=i(24),r=i(11);e.exports=function(){var e=[{type:"number",rules:["maximum","minimum","multipleOf"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","properties"]},{rules:["$ref","enum","not","anyOf","oneOf","allOf"]}];return e.all=["type","additionalProperties","patternProperties"],e.keywords=["additionalItems","$schema","id","title","description","default"],e.types=["number","integer","string","array","object","boolean","null"],e.forEach(function(t){t.rules=t.rules.map(function(t){return e.all.push(t),{keyword:t,code:n[t]}})}),e.keywords=r.toHash(e.all.concat(e.keywords)),e.all=r.toHash(e.all),e.types=r.toHash(e.types),e}},function(e,t,i){"use strict";e.exports={$ref:i(25),allOf:i(26),anyOf:i(27),dependencies:i(28),"enum":i(29),format:i(30),items:i(31),maximum:i(32),minimum:i(32),maxItems:i(33),minItems:i(33),maxLength:i(34),minLength:i(34),maxProperties:i(35),minProperties:i(35),multipleOf:i(36),not:i(37),oneOf:i(38),pattern:i(39),properties:i(40),required:i(41),uniqueItems:i(42),validate:i(18)}},function(e,t){"use strict";e.exports=function(e,t){var i,n,r,o=" ",s=e.level,a=e.dataLevel,l=e.schema[t],c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(a||""),u="valid"+s;if("#"==l||"#/"==l)e.isRoot?(n=e.async,r="validate"):(n=e.root.schema.$async===!0,r="root.refVal[0]");else{var f=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===f){var p="can't resolve reference "+l+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(p);var m=m||[];m.push(o),o="",e.createErrors!==!1?(o+=" { keyword: '"+(i||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+c+"\" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",e.opts.messages!==!1&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var g=o;o=m.pop(),o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var v=new Error(p);throw v.missingRef=e.resolve.url(e.baseId,l),v.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(v.missingRef)),v}console.log(p),h&&(o+=" if (true) { ")}}else if(f.inline){var w=e.util.copy(e);w.level++,w.schema=f.schema,w.schemaPath="",w.errSchemaPath=l;var y=e.validate(w).replace(/validate\.schema/g,f.code);o+=" "+y+" ",h&&(o+=" if (valid"+w.level+") { ")}else n=f.async,r=f.code}if(r){var m=m||[];m.push(o),o="",o+=e.opts.passContext?" "+r+".call(this, ":" "+r+"( ",o+=" "+d+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath),o+=a?" , data"+(a-1||"")+" , "+e.dataPathArr[a]+" ":" , parentData , parentDataProperty ",o+=") ";var A=o;if(o=m.pop(),n){if(!e.async)throw new Error("async schema referenced by sync schema");o+=" try { ",h&&(o+="var "+u+" ="),o+=" "+e.yieldAwait+" "+A+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",h&&(o+=" if ("+u+") { ")}else o+=" if (!"+A+") { if (vErrors === null) vErrors = "+r+".errors; else vErrors = vErrors.concat("+r+".errors); errors = vErrors.length; } ",h&&(o+=" else { ")}return o}},function(e,t){"use strict";e.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+"."+t,o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c=n;if(c)for(var h,d=-1,u=c.length-1;u>d;)h=c[d+=1],e.util.schemaHasRules(h,e.RULES.all)&&(a.schema=h,a.schemaPath=r+"["+d+"]",a.errSchemaPath=o+"/"+d,i+=" "+e.validate(a)+" ",s&&(i+=" if (valid"+a.level+") { ",l+="}"));return s&&(i+=" "+l.slice(0,-1)),i=e.util.cleanUpCode(i)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=s.every(function(t){return e.util.schemaHasRules(t,e.RULES.all)});if(m){n+=" var "+u+" = errors; var "+d+" = false; ";var g=e.compositeRule;e.compositeRule=f.compositeRule=!0;var v=s;if(v)for(var w,y=-1,A=v.length-1;A>y;)w=v[y+=1],f.schema=w,f.schemaPath=a+"["+y+"]",f.errSchemaPath=l+"/"+y,n+=" "+e.validate(f)+" "+d+" = "+d+" || valid"+f.level+"; if (!"+d+") { ",p+="}";e.compositeRule=f.compositeRule=g,n+=" "+p+" if (!"+d+") { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"anyOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } "),n=e.util.cleanUpCode(n)}else c&&(n+=" if (true) { ");return n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e),f="";u.level++;var p={},m={};for(y in s){var g=s[y],v=Array.isArray(g)?m:p;v[y]=g}n+="var "+d+" = errors;";var w=e.errorPath;n+="var missing"+r+";";for(var y in m){v=m[y],n+=" if ("+h+e.util.getProperty(y)+" !== undefined && ( ";var A=v;if(A)for(var C,E=-1,b=A.length-1;b>E;){C=A[E+=1],E&&(n+=" || ");var F=e.util.getProperty(C);n+=" ( "+h+F+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?C:F)+") ) "}n+=")) { ";var x="missing"+r,S="' + "+x+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,x,!0):w+" + "+x);var $=$||[];$.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(y)+"', missingProperty: '"+S+"', depsCount: "+v.length+", deps: '"+e.util.escapeQuotes(1==v.length?v[0]:v.join(", "))+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have ",n+=1==v.length?"property "+e.util.escapeQuotes(v[0]):"properties "+e.util.escapeQuotes(v.join(", ")),n+=" when property "+e.util.escapeQuotes(y)+" is present' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var D=n;n=$.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+D+"]); ":" validate.errors = ["+D+"]; return false; ":" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(f+="}",n+=" else { ")}e.errorPath=w;for(var y in p){var g=p[y];e.util.schemaHasRules(g,e.RULES.all)&&(n+=" valid"+u.level+" = true; if ("+h+"['"+y+"'] !== undefined) { ",u.schema=g,u.schemaPath=a+e.util.getProperty(y),u.errSchemaPath=l+"/"+e.util.escapeFragment(y),n+=" "+e.validate(u)+" } ",c&&(n+=" if (valid"+u.level+") { ",f+="}"))}return c&&(n+=" "+f+" if ("+d+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s; +u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r);var p="i"+r;u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+";",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=""+d+" = false;for (var "+p+"=0; "+p+"b;)if(E=C[b+=1],e.util.schemaHasRules(E,e.RULES.all)){n+=" valid"+f.level+" = true; if ("+h+".length > "+b+") { ";var x=h+"["+b+"]";f.schema=E,f.schemaPath=a+"["+b+"]",f.errSchemaPath=l+"/"+b,f.errorPath=e.util.getPathExpr(e.errorPath,b,e.opts.jsonPointers,!0),f.dataPathArr[m]=b;var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}if("object"==typeof v&&e.util.schemaHasRules(v,e.RULES.all)){f.schema=v,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" valid"+f.level+" = true; if ("+h+".length > "+s.length+") { for (var i"+r+" = "+s.length+"; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";f.dataPathArr[m]="i"+r;var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}else if(e.util.schemaHasRules(s,e.RULES.all)){f.schema=s,f.schemaPath=a,f.errSchemaPath=l,n+=" for (var i"+r+" = 0; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";f.dataPathArr[m]="i"+r;var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],g=e.opts.v5&&m&&m.$data,v=f?"<":">",w=f?">":"<";if(g){var y=e.util.getData(m.$data,o,e.dataPathArr),A="exclusive"+r,C="op"+r,E="' + "+C+" + '";n+=" var schemaExcl"+r+" = "+y+"; ",y="schemaExcl"+r,n+=" var exclusive"+r+"; if (typeof "+y+" != 'boolean' && typeof "+y+" != 'undefined') { ";var i=p,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;n=b.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" ((exclusive"+r+" = "+y+" === true) ? "+h+" "+w+"= "+u+" : "+h+" "+w+" "+u+")) { var op"+r+" = exclusive"+r+" ? '"+v+"' : '"+v+"=';"}else{var A=m===!0,E=v;A||(E+="=");var C="'"+E+"'";n+=" if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+" "+w,A&&(n+="="),n+=" "+u+") {"}var i=t,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+C+", limit: "+u+", exclusive: "+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+E+" ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;return n=b.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxItems"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+".length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxLength"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=e.opts.unicode===!1?" "+h+".length ":" ucs2length("+h+") ",n+=" "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxProperties"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" Object.keys("+h+").length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r),n+="var division"+r+";if (",d&&(n+=" "+u+" !== undefined && ( typeof "+u+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+u+", ",n+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var f=f||[];f.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { multipleOf: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;return n=f.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e);if(u.level++,e.util.schemaHasRules(s,e.RULES.all)){u.schema=s,u.schemaPath=a,u.errSchemaPath=l,n+=" var "+d+" = errors; ";var f=e.compositeRule;e.compositeRule=u.compositeRule=!0,u.createErrors=!1;var p;u.opts.allErrors&&(p=u.opts.allErrors,u.opts.allErrors=!1),n+=" "+e.validate(u)+" ",u.createErrors=!0,p&&(u.opts.allErrors=p),e.compositeRule=u.compositeRule=f,n+=" if (valid"+u.level+") { ";var m=m||[];m.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;n=m.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++,n+="var "+u+" = errors;var prevValid"+r+" = false;var "+d+" = false; ";var m=e.compositeRule;e.compositeRule=f.compositeRule=!0;var g=s;if(g)for(var v,w=-1,y=g.length-1;y>w;)v=g[w+=1],e.util.schemaHasRules(v,e.RULES.all)?(f.schema=v,f.schemaPath=a+"["+w+"]",f.errSchemaPath=l+"/"+w,n+=" "+e.validate(f)+" "):n+=" var valid"+f.level+" = true; ",w&&(n+=" if (valid"+f.level+" && prevValid"+r+") "+d+" = false; else { ",p+="}"),n+=" if (valid"+f.level+") "+d+" = prevValid"+r+" = true;";e.compositeRule=f.compositeRule=m,n+=""+p+"if (!"+d+") { ";var A=A||[];A.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"oneOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var C=n;return n=A.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+C+"]); ":" validate.errors = ["+C+"]; return false; ":" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f=d?"(new RegExp("+u+"))":e.usePattern(s);n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'string') || "),n+=" !"+f+".test("+h+") ) { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"pattern")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { pattern: ',n+=d?""+u:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should match pattern \"",n+=d?"' + "+u+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=f.dataLevel=e.dataLevel+1,g="data"+m,v=Object.keys(s||{}),w=e.schema.patternProperties||{},y=Object.keys(w),A=e.schema.additionalProperties,C=v.length||y.length,E=A===!1,b="object"==typeof A&&Object.keys(A).length,F=e.opts.removeAdditional,x=E||b||F,S=e.schema.required;if(S&&(!e.opts.v5||!S.$data)&&S.length5)n+=" || validate.schema"+a+"[key"+r+"] ";else{var B=v;if(B)for(var _,L=-1,R=B.length-1;R>L;)_=B[L+=1],n+=" || key"+r+" == "+e.util.toQuotedString(_)+" "}if(y.length){var T=y;if(T)for(var P,M=-1,O=T.length-1;O>M;)P=T[M+=1],n+=" || "+e.usePattern(P)+".test(key"+r+") "}if(e.opts.v5&&k&&k.length){var N=k;if(N)for(var I,M=-1,j=N.length-1;j>M;)I=N[M+=1],n+=" || "+e.usePattern(I)+".test(key"+r+") "}n+=" ); if (isAdditional"+r+") { "}if("all"==F)n+=" delete "+h+"[key"+r+"]; ";else{var W=e.errorPath,H="' + key"+r+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers)),E)if(F)n+=" delete "+h+"[key"+r+"]; ";else{n+=" valid"+f.level+" = false; ";var V=l;l=e.errSchemaPath+"/additionalProperties";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"additionalProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { additionalProperty: '"+H+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,c&&(n+=" break; ")}else if(b)if("failing"==F){n+=" var "+u+" = errors; ";var K=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=A,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",n+=" if (!valid"+f.level+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+h+"[key"+r+"]; } ",e.compositeRule=f.compositeRule=K}else{f.schema=A,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; ")}e.errorPath=W}C&&(n+=" } "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}var Y=e.opts.useDefaults&&!e.compositeRule;if(v.length){var Q=v;if(Q)for(var _,J=-1,X=Q.length-1;X>J;){_=Q[J+=1];var Z=s[_];if(e.util.schemaHasRules(Z,e.RULES.all)){var ee=e.util.getProperty(_),q=h+ee,te=Y&&void 0!==Z["default"];f.schema=Z,f.schemaPath=a+ee,f.errSchemaPath=l+"/"+e.util.escapeFragment(_),f.errorPath=e.util.getPath(e.errorPath,_,e.opts.jsonPointers),f.dataPathArr[m]=e.util.toQuotedString(_);var G=e.validate(f);if(e.util.varOccurences(G,g)<2){G=e.util.varReplace(G,g,q);var ie=q}else{var ie=g;n+=" var "+g+" = "+q+"; "}if(te)n+=" "+G+" ";else{if($&&$[_]){n+=" if ("+ie+" === undefined) { valid"+f.level+" = false; ";var W=e.errorPath,V=l,ne=e.util.escapeQuotes(_);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(W,_,e.opts.jsonPointers)),l=e.errSchemaPath+"/required";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+ne+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ne+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=W,n+=" } else { "}else n+=c?" if ("+ie+" === undefined) { valid"+f.level+" = true; } else { ":" if ("+ie+" !== undefined) { ";n+=" "+G+" } "}}c&&(n+=" if (valid"+f.level+") { ",p+="}")}}var re=y;if(re)for(var P,oe=-1,se=re.length-1;se>oe;){P=re[oe+=1];var Z=w[P];if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(P),f.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(P),n+=" for (var key"+r+" in "+h+") { if ("+e.usePattern(P)+".test(key"+r+")) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}if(e.opts.v5){var ae=k;if(ae)for(var I,le=-1,ce=ae.length-1;ce>le;){I=ae[le+=1];var he=D[I],Z=he.schema;if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(I)+".schema",f.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(I)+"/schema",n+=" var pgPropCount"+r+" = 0; for (var key"+r+" in "+h+") { if ("+e.usePattern(I)+".test(key"+r+")) { pgPropCount"+r+"++; ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";f.dataPathArr[m]="key"+r;var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}");var de=he.minimum,ue=he.maximum;if(void 0!==de||void 0!==ue){n+=" var "+d+" = true; ";var V=l;if(void 0!==de){var fe=de,pe="minimum",me="less";n+=" "+d+" = pgPropCount"+r+" >= "+de+"; ",l=e.errSchemaPath+"/patternGroups/minimum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",void 0!==ue&&(n+=" else ")}if(void 0!==ue){var fe=ue,pe="maximum",me="more";n+=" "+d+" = pgPropCount"+r+" <= "+ue+"; ",l=e.errSchemaPath+"/patternGroups/maximum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } "}l=V,c&&(n+=" if ("+d+") { ",p+="}")}}}}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),!u)if(s.lengthv;){g=m[v+=1];var y=e.schema.properties[g];y&&e.util.schemaHasRules(y,e.RULES.all)||(p[p.length]=g)}}else var p=s;if(u||p.length){var A=e.errorPath,C=u||p.length>=e.opts.loopRequired;if(c)if(n+=" var missing"+r+"; ",C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(A,b,e.opts.jsonPointers)),n+=" var "+d+" = true; ",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { "+d+" = "+h+"[schema"+r+"["+E+"]] !== undefined; if (!"+d+") break; } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var $=p;if($)for(var D,E=-1,k=$.length-1;k>E;){D=$[E+=1],E&&(n+=" || ");var B=e.util.getProperty(D);n+=" ( "+h+B+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:B)+") ) "}n+=") { ";var b="missing"+r,F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(A,b,!0):A+" + "+b);var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else if(C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(A,b,e.opts.jsonPointers)),u&&(n+=" if (schema"+r+" && !Array.isArray(schema"+r+")) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema"+r+" !== undefined) { "),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { if ("+h+"[schema"+r+"["+E+"]] === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",u&&(n+=" } ")}else{var _=p;if(_)for(var g,E=-1,L=_.length-1;L>E;){g=_[E+=1];var B=e.util.getProperty(g),F=e.util.escapeQuotes(g);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(A,g,e.opts.jsonPointers)),n+=" if ("+h+B+" === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'", +n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=A}else c&&(n+=" if (true) {");return n}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),(s||u)&&e.opts.uniqueItems!==!1){u&&(n+=" var "+d+"; if ("+f+" === false || "+f+" === undefined) "+d+" = true; else if (typeof "+f+" != 'boolean') "+d+" = false; else { "),n+=" var "+d+" = true; if ("+h+".length > 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { i: i, j: j } ',e.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},function(e,t,i){"use strict";function n(e){function t(t,i,r){var o={inline:r||n[t],statements:!0,errors:"full"};i&&(o.type=i),e.addKeyword(t,o)}var n={"switch":i(44),constant:i(45),_formatLimit:i(46),patternRequired:i(47)};if(e._opts.meta!==!1){var s=i(48);e.addMetaSchema(s,o)}t("constant"),e.addKeyword("contains",{type:"array",macro:r}),t("formatMaximum","string",n._formatLimit),t("formatMinimum","string",n._formatLimit),e.addKeyword("exclusiveFormatMaximum"),e.addKeyword("exclusiveFormatMinimum"),e.addKeyword("patternGroups"),t("patternRequired","object"),t("switch")}function r(e){return{not:{items:{not:e}}}}var o="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";e.exports={enable:n,META_SCHEMA_ID:o}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m,g="ifPassed"+e.level;n+="var "+g+";";var v=s;if(v)for(var w,y=-1,A=v.length-1;A>y;){if(w=v[y+=1],y&&!m&&(n+=" if (!"+g+") { ",p+="}"),w["if"]&&e.util.schemaHasRules(w["if"],e.RULES.all)){n+=" var "+u+" = errors; ";var C=e.compositeRule;if(e.compositeRule=f.compositeRule=!0,f.createErrors=!1,f.schema=w["if"],f.schemaPath=a+"["+y+"].if",f.errSchemaPath=l+"/"+y+"/if",n+=" "+e.validate(f)+" ",f.createErrors=!0,e.compositeRule=f.compositeRule=C,n+=" "+g+" = valid"+f.level+"; if ("+g+") { ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+y+"].then",f.errSchemaPath=l+"/"+y+"/then",n+=" "+e.validate(f)+" ";n+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } } "}else if(n+=" "+g+" = true; ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+y+"].then",f.errSchemaPath=l+"/"+y+"/then",n+=" "+e.validate(f)+" ";m=w["continue"]}return n+=""+p+"var "+d+" = valid"+f.level+"; ",n=e.util.cleanUpCode(n)}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+" = equal("+h+", schema"+r+"); if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"constant")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should be equal to constant' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }"}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r;if(n+="var "+d+" = undefined;",e.opts.format===!1)return n+=" "+d+" = true; ";var u=e.schema.format,f=e.opts.v5&&u.$data,p="";if(f){var m=e.util.getData(u.$data,o,e.dataPathArr),g="format"+r,v="compare"+r;n+=" var "+g+" = formats["+m+"] , "+v+" = "+g+" && "+g+".compare;"}else{var g=e.formats[u];if(!g||!g.compare)return n+=" "+d+" = true; ";var v="formats"+e.util.getProperty(u)+".compare"}var w="formatMaximum"==t,y="exclusiveFormat"+(w?"Maximum":"Minimum"),A=e.schema[y],C=e.opts.v5&&A&&A.$data,E=w?"<":">",b="result"+r,F=e.opts.v5&&s.$data,x=F?e.util.getData(s.$data,o,e.dataPathArr):s;if(F&&(n+=" var schema"+r+" = "+x+"; ",x="schema"+r),C){var S=e.util.getData(A.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=y,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+y+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; var exclusive"+r+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = exclusive"+r+" ? "+b+" "+E+" 0 : "+b+" "+E+"= 0; } if (!"+d+") var op"+r+" = exclusive"+r+" ? '"+E+"' : '"+E+"=';"}else{var $=A===!0,k=E;$||(k+="=");var D="'"+k+"'";F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+b+" "+E,$||(n+="="),n+=" 0;"}n+=""+p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: ',n+=F?""+x:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+k+' "',n+=F?"' + "+x+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=F?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),n+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="}"}},function(e,t){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="key"+r,f="patternMatched"+r,p="";n+="var "+d+" = true;";var m=s;if(m)for(var g,v=-1,w=m.length-1;w>v;){g=m[v+=1],n+=" var "+f+" = false; for (var "+u+" in "+h+") { "+f+" = "+e.usePattern(g)+".test("+u+"); if ("+f+") break; } ";var y=e.util.escapeQuotes(g);n+=" if (!"+f+") { "+d+" = false; var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternRequired")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingPattern: '"+y+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have property matching pattern \\'"+y+"\\'' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ",c&&(p+="}",n+=" else { ")}return n+=""+p}},function(e,t){e.exports={id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema (v5 proposals)",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0},$data:{type:"object",required:["$data"],properties:{$data:{type:"string",format:"relative-json-pointer"}},additionalProperties:!1}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{anyOf:[{type:"number",minimum:0,exclusiveMinimum:!0},{$ref:"#/definitions/$data"}]},maximum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxLength:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minLength:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},pattern:{anyOf:[{type:"string",format:"regex"},{$ref:"#/definitions/$data"}]},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minItems:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},uniqueItems:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxProperties:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minProperties:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},required:{anyOf:[{$ref:"#/definitions/stringArray"},{$ref:"#/definitions/$data"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{anyOf:[{type:"array",minItems:1,uniqueItems:!0},{$ref:"#/definitions/$data"}]},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"},format:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMaximum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMinimum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},exclusiveFormatMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},exclusiveFormatMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},constant:{anyOf:[{},{$ref:"#/definitions/$data"}]},contains:{$ref:"#"},patternGroups:{type:"object",additionalProperties:{type:"object",required:["schema"],properties:{maximum:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},schema:{$ref:"#"}},additionalProperties:!1},"default":{}},"switch":{type:"array",items:{required:["then"],properties:{"if":{$ref:"#"},then:{anyOf:[{type:"boolean"},{$ref:"#"}]},"continue":{type:"boolean"}},additionalProperties:!1,dependencies:{"continue":["if"]}}}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"],formatMaximum:["format"],formatMinimum:["format"],exclusiveFormatMaximum:["formatMaximum"],exclusiveFormatMinimum:["formatMinimum"]},"default":{}}},function(e,t){"use strict";var i=/^[a-z_$][a-z0-9_$]*$/i;e.exports=function(e,t){function n(e,t,i){for(var n,r=0;ra;a++)r(s[a]);for(a=0;l>a;a++)n(e,s[a],t)}else s&&r(s),n(e,s,t)}this.RULES.keywords[e]=!0,this.RULES.all[e]=!0}},function(e,t){e.exports={id:"http://json-schema.org/draft-04/schema#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean","default":!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean","default":!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean","default":!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},"default":{}}},function(e,t,i){"use strict";var n=i(52),r=i(53),o=i(56),s=i(57),a=i(58),l=i(61),c=i(54),h={};h.create=function(e,t){if(!e)throw new Error("No container element provided.");this.container=e,this.dom={},this.highlighter=new n,this.selection=void 0,this.multiselection={nodes:[]},this.validateSchema=null,this.errorNodes=[],this.node=null,this.focusTarget=null,this._setOptions(t),this.options.history&&"view"!==this.options.mode&&(this.history=new r(this)),this._createFrame(),this._createTable()},h.destroy=function(){this.frame&&this.container&&this.frame.parentNode==this.container&&(this.container.removeChild(this.frame),this.frame=null),this.container=null,this.dom=null,this.clear(),this.node=null,this.focusTarget=null,this.selection=null,this.multiselection=null,this.errorNodes=null,this.validateSchema=null,this._debouncedValidate=null,this.history&&(this.history.destroy(),this.history=null),this.searchBox&&(this.searchBox.destroy(),this.searchBox=null),this.modeSwitcher&&(this.modeSwitcher.destroy(),this.modeSwitcher=null)},h._setOptions=function(e){if(this.options={search:!0,history:!0,mode:"tree",name:void 0,schema:null},e)for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.setSchema(this.options.schema),this._debouncedValidate=c.debounce(this.validate.bind(this),this.DEBOUNCE_INTERVAL)},h.set=function(e,t){if(t&&(console.warn('Second parameter "name" is deprecated. Use setName(name) instead.'),this.options.name=t),e instanceof Function||void 0===e)this.clear();else{this.content.removeChild(this.table);var i={field:this.options.name,value:e},n=new a(this,i);this._setRoot(n),this.validate();var r=!1;this.node.expand(r),this.content.appendChild(this.table)}this.history&&this.history.clear(),this.searchBox&&this.searchBox.clear()},h.get=function(){if(this.focusTarget){var e=a.getNodeFromTarget(this.focusTarget);e&&e.blur()}return this.node?this.node.getValue():void 0},h.getText=function(){return JSON.stringify(this.get())},h.setText=function(e){this.set(c.parse(e))},h.setName=function(e){this.options.name=e,this.node&&this.node.updateField(this.options.name)},h.getName=function(){return this.options.name},h.focus=function(){var e=this.content.querySelector("[contenteditable=true]");e?e.focus():this.node.dom.expand?this.node.dom.expand.focus():this.node.dom.menu?this.node.dom.menu.focus():(e=this.frame.querySelector("button"),e&&e.focus())},h.clear=function(){this.node&&(this.node.collapse(),this.tbody.removeChild(this.node.getDom()),delete this.node)},h._setRoot=function(e){this.clear(),this.node=e,this.tbody.appendChild(e.getDom())},h.search=function(e){var t;return this.node?(this.content.removeChild(this.table),t=this.node.search(e),this.content.appendChild(this.table)):t=[],t},h.expandAll=function(){this.node&&(this.content.removeChild(this.table),this.node.expand(),this.content.appendChild(this.table))},h.collapseAll=function(){this.node&&(this.content.removeChild(this.table),this.node.collapse(),this.content.appendChild(this.table))},h._onAction=function(e,t){this.history&&this.history.add(e,t),this._onChange()},h._onChange=function(){if(this._debouncedValidate(),this.options.onChange)try{this.options.onChange()}catch(e){console.error("Error in onChange callback: ",e)}},h.validate=function(){this.errorNodes&&this.errorNodes.forEach(function(e){e.setError(null)});var e=this.node;if(e){var t=e.validate(),i=[];if(this.validateSchema){var n=this.validateSchema(e.getValue());n||(i=this.validateSchema.errors.map(function(e){return c.improveSchemaError(e)}).map(function(t){return{node:e.findNode(t.dataPath),error:t}}).filter(function(e){return null!=e.node}))}this.errorNodes=t.concat(i).reduce(function(e,t){return t.node.findParents().map(function(e){return{node:e,child:t.node,error:{message:"object"===e.type?"Contains invalid properties":"Contains invalid items"}}}).concat(e,[t])},[]).map(function(e){return e.node.setError(e.error,e.child),e.node})}},h.startAutoScroll=function(e){var t=this,i=this.content,n=c.getAbsoluteTop(i),r=i.clientHeight,o=n+r,s=24,a=50;n+s>e&&i.scrollTop>0?this.autoScrollStep=(n+s-e)/3:e>o-s&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),r=0;r=0},n.prototype.canRedo=function(){return this.index=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function o(){for(h+=2;hn;n++){var o=i[n];o.style&&o.removeAttribute("style");var s=o.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var r=e.childNodes,o="",s=0,a=r.length;a>s;s++){var l=r[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=r[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(o+="\n",i.flush()),o+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(o+=i.flush(),i.set("\n")):o+=t.getInnerText(l,i)}return o}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==o){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}o=e}return o},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var o=-1;t.addEventListener=function(e,i,n,r){if(e.addEventListener)return void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,r),n;if(e.attachEvent){var o=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,o),o}},t.removeEventListener=function(e,i,n,r){e.removeEventListener?(void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,r)):e.detachEvent&&e.detachEvent("on"+i,n)},t.parsePath=function s(e){var t,i;if(0===e.length)return[];var n=e.match(/^\.(\w+)/);if(n)t=n[1],i=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var r=e.indexOf("]");if(-1===r)throw new SyntaxError("Character ] expected in path");if(1===r)throw new SyntaxError("Index expected after [");var o=e.substring(1,r);t="*"===o?o:JSON.parse(o),i=e.substr(r+1)}return[t].concat(s(i))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&i>n;)n++;for(;t.charAt(o-1)===e.charAt(r-1)&&o>n&&r>0;)o--,r--;return{start:n,end:o}}},function(e,t,i){var n=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,r,o,s){var a=o.length-1;switch(r){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g,"\x0B").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=o[a-1];case 13:this.$={};break;case 14:this.$=o[a-1];break;case 15:this.$=[o[a-2],o[a]];break;case 16:this.$={},this.$[o[a][0]]=o[a][1];break;case 17:this.$=o[a-2],o[a-2][o[a][0]]=o[a][1];break;case 18:this.$=[];break;case 19:this.$=o[a-1];break;case 20:this.$=[o[a]];break;case 21:this.$=o[a-2],o[a-2].push(o[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(e){r.length=r.length-2*e,o.length=o.length-e,s.length=s.length-e}function i(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],o=[null],s=[],a=this.table,l="",c=0,h=0,d=0,u=2,f=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var m,g,v,w,y,A,C,E,b,F={};;){if(v=r[r.length-1],this.defaultActions[v]?w=this.defaultActions[v]:(null==m&&(m=i()),w=a[v]&&a[v][m]),"undefined"==typeof w||!w.length||!w[0]){if(!d){b=[];for(A in a[v])this.terminals_[A]&&A>2&&b.push("'"+this.terminals_[A]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+b.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:p,expected:b})}if(3==d){if(m==f)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,m=i()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=r[r.length-1]}g=m,m=u,v=r[r.length-1],w=a[v]&&a[v][u],d=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(w[0]){case 1:r.push(m),o.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),m=null,g?(m=g,g=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[w[1]][1],F.$=o[o.length-C],F._$={first_line:s[s.length-(C||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(C||1)].first_column,last_column:s[s.length-1].last_column},y=this.performAction.call(F,l,h,c,this.yy,w[1],o,s),"undefined"!=typeof y)return y;C&&(r=r.slice(0,-1*C*2),o=o.slice(0,-1*C),s=s.slice(0,-1*C)),r.push(this.productions_[w[1]][0]),o.push(F.$),s.push(F._$),E=a[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t){"use strict";function i(e,t){var i=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var n=document.createElement("table");this.dom.table=n,n.className="jsoneditor-search",t.appendChild(n);var r=document.createElement("tbody");this.dom.tbody=r,n.appendChild(r);var o=document.createElement("tr");r.appendChild(o);var s=document.createElement("td");o.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),o.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var h=document.createElement("tbody");c.appendChild(h),o=document.createElement("tr"),h.appendChild(o);var d=document.createElement("button");d.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(d),o.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){i._onDelayedSearch(e)},u.onchange=function(e){i._onSearch()},u.onkeydown=function(e){i._onKeyDown(e)},u.onkeyup=function(e){i._onKeyUp(e)},d.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),o.appendChild(s);var f=document.createElement("button");f.title="Next result (Enter)",f.className="jsoneditor-next",f.onclick=function(){i.next()},s=document.createElement("td"),s.appendChild(f),o.appendChild(s);var p=document.createElement("button");p.title="Previous result (Shift+Enter)",p.className="jsoneditor-previous",p.onclick=function(){i.previous()},s=document.createElement("td"),s.appendChild(p),o.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var r=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?r.searchFieldActive=!0:r.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],r.updateDom(),r.scrollTo(function(){t&&r.focus(o)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,i){"use strict";function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(e){e.preventDefault(),n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(54);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){t.expandedItem==e&&(o.style.height=24*o.childNodes.length+"px",o.style.padding="5px 10px")},0),r.addClassName(o.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,o,s=e.target,a=e.which,l=!1;27==a?(this.selection&&r.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&o.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&(o=t[i+2]),o||(o=t[0]),o&&(o.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){"use strict";function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var r=i(59),o=i(57),s=i(60),a=i(54);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getPath=function(){for(var e=this,t=[];e;){var i=e.parent&&"array"==e.parent.type?e.index:e.field;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=a.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)i=e[s],void 0===i||i instanceof Function||(r=new n(this.editor,{value:i}),this.appendChild(r));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(r=new n(this.editor,{field:l,value:i}),this.appendChild(r)));this.value="",this.editor.options.sortObjectKeys===!0&&this.sort("asc")}else this.childs=void 0,this.value=e;this.previousValue=this.value},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.getNodePath=function(){var e=this.parent?this.parent.getNodePath():[];return e.push(this),e},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),r=t.nextSibling;r?i.insertBefore(n,r):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({ +recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof l?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),r=t.getDom(),o=r?r.parentNode:void 0;r&&o&&o.insertBefore(n,r),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var r=String(this.field).toLowerCase();t=r.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var o=[];this.childs.forEach(function(t){o=o.concat(t.search(e))}),i=i.concat(o)}if(void 0!=n){var s=!1;0==o.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),a.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),a.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){a.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return i.parent=null,this.updateDom({updateIndexes:!0}),i}}},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var r=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),"string"!=t&&"auto"!=t||(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),"string"!=t&&"auto"!=t||(this.expanded=!0)):this.expanded=!1,n&&(r?n.insertBefore(this.getDom(),r):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;"auto"!=e&&"string"!=e||("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=a.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(n){if(this.value=void 0,e!==!0)throw n}},n.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=a.textDiff(String(this.previousValue),String(this.value));i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:i}),this.previousValue=this.value},n.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=a.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=a.textDiff(this.previousField,this.field);i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:i}),this.previousField=this.field},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],i=this.value,n="auto"==this.type?a.type(i):this.type,r="string"==n&&a.isUrl(i);t.push("jsoneditor-"+n),r&&t.push("jsoneditor-url");var o=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(o&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==n||"object"==n){var s=this.childs?this.childs.length:0;e.title=this.type+" containing "+s+" items"}else r&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===n&&this.editable.value?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),a.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?a.addClassName(e,"jsoneditor-empty"):a.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?a.addClassName(e,"jsoneditor-highlight-active"):a.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?a.addClassName(e,"jsoneditor-highlight"):a.removeClassName(e,"jsoneditor-highlight"),a.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=a.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(i){if(this.field=void 0,e!==!0)throw i}},n.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},i=[],n=0;n0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),s=r._nextSibling(),l=i.editor,c=a.getAbsoluteTop(o.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,s,c,h,d,u,f,p,m,g,v,w,y=e[0].editor,A=t.pageY-y.drag.offsetY,C=t.pageX,E=!1,b=e[0];if(i=b.dom.tr,f=a.getAbsoluteTop(i),g=i.offsetHeight,f>A){r=i;do r=r.previousSibling,d=n.getNodeFromTarget(r),p=r?a.getAbsoluteTop(r):0;while(r&&p>A);d&&!d.parent&&(d=void 0),d||(h=i.parentNode.firstChild,r=h?h.nextSibling:void 0,d=n.getNodeFromTarget(r),d==b&&(d=void 0)),d&&(r=d.dom.tr,p=r?a.getAbsoluteTop(r):0,A>p+g&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),E=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),o=s;do u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?a.getAbsoluteTop(o.nextSibling):0,w=o?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling;while(o&&A>f+w);if(u&&u.parent){var x=C-y.drag.mouseX,S=Math.round(x/24/2),$=y.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;$>D&&r;){d=n.getNodeFromTarget(r);var k=e.some(function(e){return e===d||d._isChildOf(e)});if(k);else{if(!(d instanceof l))break;var B=d.parent.childs;if(B.length==e.length&&B[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),E=!0)}}}E&&(y.drag.mouseX=C,y.drag.level=b.getLevel()),y.startAutoScroll(A),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,s=o.childs.indexOf(i),l=o.childs[s+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(a.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(a.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&a.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var r=document.createElement("td");r.className="jsoneditor-tree",n.appendChild(r),e.expand=this._createDomExpandButton(),r.appendChild(e.expand),e.tdExpand=r;var o=document.createElement("td");o.className="jsoneditor-tree",n.appendChild(o),e.field=this._createDomField(),o.appendChild(e.field),e.tdField=o;var s=document.createElement("td");s.className="jsoneditor-tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,r=this,o=this._hasChilds();if(i!=n.drag&&i!=n.menu||("mouseover"==t?this.editor.highlighter.highlight(this):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=r.editor.highlighter;s.highlight(r),s.lock(),a.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){a.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}if("click"==t&&(i==n.expand||("view"===r.editor.options.mode||"form"===r.editor.options.mode)&&"DIV"===i.nodeName)&&o){var l=e.ctrlKey;this._onExpand(l)}"change"==t&&i==n.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var c=n.value;if(i==c)switch(t){case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(c.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":!e.ctrlKey&&this.editable.value||a.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var h=n.field;if(i==h)switch(t){case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(h.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var d=n.tree;if(i==d.parentNode&&"click"==t&&!e.hasMoved){var u=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],A=y[0],C=y[y.length-1];if(13==u){if(f==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var E=this._hasChilds();if(E){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(y),v=!0);else if(69==u)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(y),v=!0);else if(45==u&&w)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(g){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&w){if(C.expanded){var $=C.getAppend();r=$?$.nextSibling:void 0}else{var D=C.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o),i&&i instanceof l&&1!=C.parent.childs.length&&_&&_.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):g&&m&&w&&(t=A._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(g&&m&&w){D=A.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B),t&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(g&&m&&w){i=C.expanded?C.append?C.append._nextNode():void 0:C._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(s=this.editor.getSelection(),c=C._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,o=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*r(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:o,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,r=t.getIndex();i.childs[r+e.length]?i.childs[r+e.length].focus():i.childs[r-1]?i.childs[r-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do i=i.previousSibling,e=n.getNodeFromTarget(i);while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do i=i.nextSibling,e=n.getNodeFromTarget(i);while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.showContextMenu=function(e,t){var i=this,r=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:r.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:r.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:r.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:r.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;i==l[l.length-1]&&s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onAppend("","","string")}}]}),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onInsertBefore("","","string")}}]}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}var c=new o(s,{close:t});c.show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t?!0:"false"==t?!1:isNaN(i)||isNaN(n)?e:i},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e.trim())+'"',i=a.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;im)return-1;if(m>g)return 1}for(var v=0,w=Math.max(f.length,p.length);w>v;v++){if(n=!(f[v]||"").match(c)&&parseFloat(f[v])||f[v]||0,r=!(p[v]||"").match(c)&&parseFloat(p[v])||p[v]||0,isNaN(n)!==isNaN(r))return isNaN(n)?1:-1;if(typeof n!=typeof r&&(n+="",r+=""),r>n)return-1;if(n>r)return 1}return 0}},function(e,t,i){"use strict";function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}]}],a=new o(s,{close:i});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,o=n.menu;if(i==o&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(54),o=i(57);e.exports=n},function(e,t,i){"use strict";function n(e,t,i,n){for(var o={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a0){var o=i.length>l;if(o){i=i.slice(0,l);var a=this.validateSchema.errors.length-l;i.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+i.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var h=c.clientHeight;this.content.style.marginBottom=-h+"px",this.content.style.paddingBottom=h+"px"}if(this.aceEditor){var d=!1;this.aceEditor.resize(d)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(64);i(67),i(69),i(70),e.exports=n},function(e,t,i){!function(){function e(e){var t=i;e&&(i[e]||(i[e]={}),t=i[e]),t.define&&t.define.packaged||(n.original=t.define,t.define=n,t.define.packaged=!0),t.acequire&&t.acequire.packaged||(o.original=t.acequire,t.acequire=o,t.acequire.packaged=!0)}var t="ace",i=function(){return this}();if(i||"undefined"==typeof window||(i=window),t||"undefined"==typeof acequirejs){var n=function(e,t,i){return"string"!=typeof e?void(n.original?n.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())):(2==arguments.length&&(i=t),void(n.modules[e]||(n.payloads[e]=i,n.modules[e]=null)))};n.modules={},n.payloads={};var r=function(e,t,i){if("string"==typeof t){var n=a(e,t);if(void 0!=n)return i&&i(),n}else if("[object Array]"===Object.prototype.toString.call(t)){for(var r=[],s=0,l=t.length;l>s;++s){var c=a(e,t[s]);if(void 0==c&&o.original)return;r.push(c)}return i&&i.apply(null,r)||!0}},o=function(e,t){var i=r("",e,t);return void 0==i&&o.original?o.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&r!=t;){var r=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var o={},a={id:t,uri:"",exports:o,packaged:!0},l=function(e,i){return r(t,e,i)},c=i(l,o,a);o=c||a.exports,n.modules[t]=o,delete n.payloads[t]}i=n.modules[t]=o||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function r(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,m=d.bind(f.toString),g=d.bind(f.hasOwnProperty);if((h=g(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),r=p.call(arguments,2),o=r.length;if(e===i)o&&this.push.apply(this,r);else{var s=Math.min(t,i-e),a=e+s,l=a+o-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;o>d;++d)this[e+d]=r[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==m(e)});var w=Object("a"),y="a"!=w[0]||!(0 in w);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=arguments[1],r=-1,o=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(r[s]=e.call(o,i[s],s,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=M(this),n=y&&"[object String]"==m(this)?this.split(""):i,r=n.length>>>0,o=[],s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;r>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&o.push(t));return o}),Array.prototype.every||(Array.prototype.every=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&!e.call(r,i[o],o,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&e.call(r,i[o],o,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>o;o++)o in i&&(r=e.call(void 0,r,i[o],o,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=M(this),i=y&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do o in this&&(r=e.call(void 0,r,i[o],o,t));while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=y&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=y&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){var A="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(A+e);if(g(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var C;C=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=C();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),b="undefined"==typeof document||r(document.createElement("div"));if(!E||!b)var F=Object.defineProperty}if(!Object.defineProperty||F){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(F)try{return F.call(Object,e,t,i)}catch(n){}if(g(i,"value"))if(h&&(l(e,t)||c(e,t))){var r=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=r}else e[t]=i.value;else{if(!h)throw new TypeError($);g(i,"get")&&s(e,t,i.get),g(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(D){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var k=!0,B=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],_=B.length;for(var L in{toString:null})k=!1;Object.keys=function O(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var O=[];for(var t in e)g(e,t)&&O.push(t);if(k)for(var i=0,n=_;n>i;i++){var r=B[i];g(e,r)&&O.push(r)}return O}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),P=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(P,"")}}var M=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||n,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var r=i.indexOf(t);if(-1==r)break;n=!1,i.splice(r,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1),!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS?e(t,n,i):!1}function r(){a=Object.create(null),a.count=0,a.lastT=0}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,o=e.changedTouches[0];e.wheelX=-(o.clientX-n)/t,e.wheelY=-(o.clientY-r)/t,n=o.clientX,r=o.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){function o(e){if(0!==t.getButton(e)?d=0:e.detail>1?(d++,d>4&&(d=1)):d=1,s.isIE){var o=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;h&&!o||(d=1),h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),1==d&&(l=e.clientX,c=e.clientY)}if(e._clicks=d,n[r]("mousedown",e),d>4)d=0;else if(d>1)return n[r](u[d],e)}function a(e){d=2,h&&clearTimeout(h), +h=setTimeout(function(){h=null},i[d-1]||600),n[r]("mousedown",e),n[r](u[d],e)}var l,c,h,d=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",o),s.isOldIE&&t.addListener(e,"dblclick",a)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&r(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var o=n(i,e,t);return c=e.defaultPrevented,o}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):r(),91!=t&&92!=t||(a.OSKey=!1),a[t]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function r(o){o.data==n&&(t.stopPropagation(o),t.removeListener(i,"message",r),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"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){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function o(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,(s||1==r)&&n.selection.moveToPosition(i),n.$blockScrolling--,void(2==r&&n.textInput.onContextMenu(e.domEvent))}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,r.end.row==n.row&&r.end.column==n.column||(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,r.start.row==n.row&&r.start.column==n.column||(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();var o=s.session.getLength();if(t==o){var a=s.renderer.pixelToScreenCoordinates(0,d.y).row,h=d.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var f=d.domEvent.target,p=f.getBoundingClientRect(),m=c.getElement().style;m.left=p.right+"px",m.top=p.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,r=s.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(u&&e.$tooltipFollowsMouse&&n(r),d=r,void(h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!D||n||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,D=i,k={x:A,y:C};else{var s=r(k.x,k.y,A,C);s>h?D=null:i-D>=c&&(g.renderer.scrollCursorIntoView(),D=null)}}function i(e,t){var i=Date.now(),n=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:A-o.left,right:o.right-A},y:{top:C-o.top,bottom:o.bottom-C}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=a/r&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&g.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){var e=F;F=g.renderer.screenToTextCoordinates(A,C),t(F,e),i(F,e)}function d(){b=g.selection.toOrientedRange(),y=g.session.addMarker(b,"ace_selection",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),_=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),g.session.removeMarker(y),y=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(b),g.$blockScrolling-=1,g.isFocused()&&!S&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),b=null,F=null,_=0,$=null,D=null,s.removeListener(document,"mousemove",f)}function f(){null==L&&(L=setTimeout(function(){null!=L&&y&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function m(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var g=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var w=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];w.forEach(function(t){e[t]=this[t]},this),g.addEventListener("mousedown",this.onMouseDown.bind(e));var y,A,C,E,b,F,x,S,$,D,k,B=g.container,_=0;this.onDragStart=function(e){if(this.cancelDrag||!B.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}b=g.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=g.getReadOnly()?"copy":"copyMove",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),i.clearData(),i.setData("Text",g.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(B.draggable=!1,S=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(A=e.clientX,C=e.clientY,y||d(),_++,e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragOver=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(A=e.clientX,C=e.clientY,y||(d(),_++),null!==L&&(L=null),e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return _--,0>=_&&y?(u(),x=null,s.preventDefault(e)):void 0},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(x){case"move":b=b.contains(F.row,F.column)?{start:F,end:F}:g.moveText(b,F);break;case"copy":b=g.moveText(b,F,!0)}else{var i=t.getData("Text");b={start:F,end:g.session.insert(F,i)},g.focus(),x=null}return u(),s.preventDefault(e)}},s.addListener(B,"dragstart",this.onDragStart.bind(e)),s.addListener(B,"dragend",this.onDragEnd.bind(e)),s.addListener(B,"dragenter",this.onDragEnter.bind(e)),s.addListener(B,"dragover",this.onDragOver.bind(e)),s.addListener(B,"dragleave",this.onDragLeave.bind(e)),s.addListener(B,"drop",this.onDrop.bind(e));var L=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),r=e.domEvent.detail||1;if(1===r&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in o&&(o.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){!i&&r.readyState&&"loaded"!=r.readyState&&"complete"!=r.readyState||(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var y=g[v];0===y.name.indexOf("data-ace-")&&(s[o(y.name.replace(/^data-ace-/,""))]=y.value)}var A=m.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);A&&(a=A[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var C in s)"undefined"!=typeof s[C]&&t.set(C,s[C])}}function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=(e("./lib/oop"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js", +$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",r=i[i.length-1];if("worker"==t&&"-"==n){var o=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");r=r.replace(o,"")}(!r||r==t)&&i.length>1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(s){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var l=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void a.loadScript(t.moduleUrl(i,o),l):l()}},r(!0),t.init=r}),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/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){var i=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());i&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",i),r.isIE&&e.renderer.scrollBarV&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i)),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;!r.isEmpty()&&r.insideStart(n.row,n.column)?o.setCursorStyle("default"):o.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session;r.foldWidgets&&r.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session,o=r.getParentFoldRangeData(n,!0),s=o.range||o.firstRange;if(s){n=s.start.row;var a=r.getFoldAt(n,r.getLine(n).length,1);a?r.removeFold(a):(r.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(o&&o.command&&(s="null"==o.command?!0:a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s))););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.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},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?!this.isEnd(e,t)&&!this.isStart(e,t):!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?!this.isEnd(e,t):!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?!this.isStart(e,t):!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.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)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,t===!0?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),r=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(t,i,1);return o?void this.moveCursorTo(o.end.row,o.end.column):((e=this.session.nonTokenRe.exec(r))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((o=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,r=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&r.test(i);)n++;if(1>n)for(o.lastIndex=0;(i=e[n])&&!o.test(i);)if(o.lastIndex=0,n++,r.test(i)){if(n>2){n--;break}for(;(i=e[n])&&r.test(i);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do e++,n=this.doc.getLine(e);while(o>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var i=this.getCursor();return s.fromPoints(t,i)}catch(n){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?c.onMatch=this.$applyToken:c.onMatch=c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;o>r;r++)t[r]&&(n[n.length]={type:i[r],value:t[r]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,r=0,o=n.length;o>r;r++)t[r+1]&&(i[i.length]={type:n[r],value:t[r+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,r={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,o,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==r.stack&&(r.end=l+1,r.stack=-1),i--):o&&(i++,1!=o.length&&(r.stack=i,r.start=l)),e}),null!=r.end&&/^\)*$/.test(e.substr(r.end))&&(e=e.substring(0,r.start)+e.substr(r.end))}return"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",o=this.states[n];o||(n="start",o=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n];a.lastIndex=0;for(var l,c=[],h=0,d=0,u={type:null,value:""};l=a.exec(e);){var f=s.defaultToken,p=null,m=l[0],g=a.lastIndex;if(g-m.length>h){var v=e.substring(h,g-m.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;n>=t;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},m=f+" ",g=function(e,t){s&&!/\S/.test(e)||(w(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,y=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),A=new RegExp("(?:"+a.escapeRegExp(y)+")\\s*$"),g=function(e,t){v(e,t)||s&&!/\S/.test(e)||(o.insertInLine({row:t,column:e.length},y),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(A))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;ri&&(c=i),l&&!v(e,t)&&(l=!1)):C>e.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:g)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;u=new c(m,g,m,g+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;to;o++)if("string"==typeof r[o].token)/keyword|support|storage/.test(r[o].token)&&i.push(r[o].regex);else if("object"==typeof r[o].token)for(var a=0,l=r[o].token.length;l>a;a++)if(/keyword|support|storage/.test(r[o].token[a])){var n=r[o].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,i,n){var r=this.$keywordList||this.$createKeywordList();return r.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,r=t.start.column,o=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=o.substring(0,r)+t.lines[0]+o.substring(r);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=o.substring(0,r)+e[n],e[n+t.lines.length-1]+=o.substring(r)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=o.substring(0,r)+o.substring(l):e.splice(n,c-n+1,o.substring(0,r)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){ +this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var 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 i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$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},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;o>r;r++)if(e-=i[r].length+n,0>e)return{row:r,column:e+i[r].length+n};return{row:o-1,column:i[o-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=0,o=Math.min(e.row,i.length),s=t||0;o>s;++s)r+=i[s].length+n;return r+e.column}}).call(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,r=i.doc,o=t;i.lines[t];)t++;var s=r.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=o&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,r=n.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(e,t,i){for(var n=this.ranges,o=i||0;o0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.apply(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;os||(0!=s||i.isEmpty()||n.isEmpty())&&(r(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(o,1),e.push(n),n=i,o--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var r=this.pointIndex({row:t,column:0},n);0>r&&(r=-r-1);for(var o=[],s=n;r>s;s++)o.push(i[s]);return o},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,r=i.row,o=r-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=o,h.end.row+=o}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function r(e,t){n(e.start,t),n(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){o(e.start,t),o(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};l.inherits(c,a),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new c(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);r(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,o=-1;n=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var d=this.getFoldAt(a,l,1),u=this.getFoldAt(c,h,-1);if(d&&u==d)return d.addSubFold(i);d&&!d.range.isStart(a,l)&&this.removeFold(d),u&&!u.range.isEnd(c,h)&&this.removeFold(u);var f=this.getFoldsInRange(i.range);f.length>0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);return n.length?n:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(r>i)return;a=Math.max(r,a)}s+=null!=e?e:o.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var r=this.getFoldLine(e);if(r)return this.getFoldDisplayLine(r,e,t,i,n);var o;return o=this.doc.getLine(e),o.substring(n||0,t||o.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i)})},this.toggleFold=function(e){var t,i,n=this.selection,r=n.getRange();if(r.isEmpty()){var o=r.start;if(t=this.getFoldAt(o.row,o.column))return void this.expandFold(t);(i=this.findMatchingBracket(o))?1==r.comparePoint(i)?r.end=i:(r.start=i,r.start.column++,r.end.column--):(i=this.findMatchingBracket({row:o.row,column:o.column+1}))?(1==r.comparePoint(i)?r.end=i:r.start=i,r.start.column++):r=this.getCommentFoldRange(o.row,o.column)||r}else{var s=this.getFoldsInRange(r);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(r.start.row,r.start.column)),t&&t.range.toString()==r.toString())return void this.expandFold(t);var a="...";if(!r.isMultiLine()){if(a=this.getTextRange(r),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,r)},this.getCommentFoldRange=function(e,t,i){var n=new a(this,e,t),o=n.getCurrentToken();if(o&&/^comment|string/.test(o.type)){var s=new r,l=new RegExp(o.type.replace(/\..*/,"\\."));if(1!=i){do o=n.stepBackward();while(o&&l.test(o.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do o=n.stepForward();while(o&&l.test(o.type));o=n.stepBackward()}else o=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+o.value.length-2,s}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var r=e;t>r;r++)if(null==n[r]&&(n[r]=this.getFoldWidget(r)),"start"==n[r]){var o=this.getFoldWidgetRange(r);if(o&&o.isMultiLine()&&o.end.row<=t&&o.start.row>=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var r=t.target||t.srcElement;r&&/ace_fold-widget/.test(r.className)&&(r.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return void(t.children||t.all?this.removeFold(o):this.expandFold(o));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1),o&&s.isEqual(o.range)))return void this.removeFold(o);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var d=c.charAt(l);if(d==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else d==e&&(o+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var r=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=n}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/lang"),o=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,d=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,f=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new h(e)),this.setDocument(e),this.selection=new a(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var r=i+n>>1,o=e[r]; +if(t>o)i=r+1;else{if(!(o>t))return r;n=r-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),r=0;if(null==t)o=n.length-1,r=this.getLine(e).length;else for(var o=0;o=t));o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do o--;while(o>=0&&i.charAt(o).match(r));o++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=o.end.row+1,l>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;n>s&&" "==o.charAt(s);++s);n>s&&" "==o.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var r=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var m=h.range.compareInside(n.row,n.column);0==m?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column))):-1==m&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,r=this.doc.getAllLines(),o=this.getTabSize(),s=this.$wrapData,l=this.$wrapLimit,c=e;for(t=Math.min(t,r.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,o){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-y;){var A=c+t-y;if(e[A-1]>=p&&e[A]>=p)o(A);else if(e[A]!=a&&e[A]!=h){for(var C=Math.max(A-(t-(t>>2)),c-1);A>C&&e[A]C&&e[A]C&&e[A]==f;)A--}else for(;A>C&&e[A]C?o(++A):(A=c+t,e[A]==i&&A--,o(A-y))}else{for(A;A!=c-1&&e[A]!=a;A--);if(A>c){o(A);continue}for(A=c+t;Ac;c++)s.push(g)}else 32==l?s.push(p):l>39&&48>l||l>57&&64>l?s.push(f):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?2:1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]e)return{row:0,column:0};var i,n,r=0,o=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;e>=s&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,r++,r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(e>=s+a||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){var v=Math.floor(e-s);n=g[v],v>0&&g.length&&(m=g.indent,o=g[v-1]||g[g.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;o=this.getFoldAt(e,t,1),o&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;e>a;){if(a>=f){if(s=u.end.row+1,s>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)n++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:n,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>o&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=e("./lib/oop"),o=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var s=e.offset+(r||0);if(n=new o(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,r=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=r.length-c;e:for(var d=a.offset||0;h>=d;d++){for(var u=0;c>u;u++)if(-1==r[d+u].search(a[u]))continue e;var f=r[d],p=r[d+c-1],m=f.length-f.match(a[0])[0].length,g=p.match(a[c-1])[0].length;l&&l.end.row===d&&l.end.column>m||(s.push(l=new o(d,m,d+c-1,g)),c>2&&(d=d+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[u].end.column>C&&s[u].end.row==i.end.row;)u--;for(s=s.slice(v,u+1),v=0,u=s.length;u>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var r=n.exec(e);if(!r||r[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var o=Math.min(e.length,e.length);o--;){var s=e[o];s&&s.toLowerCase()!=s?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var r;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,d=new o(n,l,n+s-1,h);return 1==i.offset?(d.start.row--,d.start.column=Number.MAX_VALUE):a&&(d.start.column+=a),r(d)?!0:void 0}};else if(t.backwards)var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row,r=e.getLine(n).substr(o.column);if(!i(r,n,o.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&e&&(void 0==i&&(i=e.position),e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),r.returnValue!==!1},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro), +this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.off("changeCursor",this.$onCursorChange),i.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value){do a=r,r=n.stepForward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!r)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new f(l,c,l,c+r.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||o>=n&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new f(r.row,c+o.selection[0],r.row,c+o.selection[1])):this.selection.setSelectionRange(new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3]))),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i); +},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var o={value:r[0],start:r.index,end:r.index+r[0].length};return o}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),e*=s!==o.end&&s>i?Math.pow(10,o.end-i-1):Math.pow(10,o.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new f(t,o.start,t,o.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(o.start+1,i+c.length-o.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var r=i.start.row;t.duplicateLines(r,r)}else{var o=n?i.start:i.end,s=t.insert(o,t.getTextRange(i),!1);i.start=o,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();i=this.$getSelectedRows(o),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),o.moveBy(n,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var d=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var u=i.first,f=i.last;++hf+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);h>=d;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):t===!1&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0?!0:o.topwindow.innerHeight?!1:null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(y.prototype),v.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g="ace_gutter-cell ";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[m];null==w&&(w=a[m]=t.getFoldWidget(m))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var g="ace_fold-widget ace_"+w;g+="start"==w&&m==s&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);c>=h;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,p,r+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,u>d,u>f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)this.showInvisibles?t.push(""+o.stringRepeat(this.TAB_CHAR,i)+""):t.push(o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a; +this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s?o:!1),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,a=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;i>o&&ni?r.push({type:e[n].type,value:s.substring(0,i-o)}):r.push(e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,r=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:r}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var i=0,r=t.length;r>i;i++){var o=this.getPixelPosition(t[i].cursor,!0);if(!((o.top>e.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter,g='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .ace_scroller { position: absolute; overflow: hidden; top: 0; bottom: 0; background-color: inherit; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; cursor: text; } .ace_content { position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .ace_dragging .ace_scroller:before{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; content: \'\'; background: rgba(250, 250, 250, 0.01); z-index: 1000; } .ace_dragging.ace_dark .ace_scroller:before{ background: rgba(0, 0, 0, 0.01); } .ace_selecting, .ace_selecting * { cursor: text !important; } .ace_gutter { position: absolute; overflow : hidden; width: auto; top: 0; bottom: 0; left: 0; cursor: default; z-index: 4; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .ace_gutter-active-line { position: absolute; left: 0; right: 0; } .ace_scroller.ace_scroll-left { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } .ace_gutter-cell { padding-left: 19px; padding-right: 6px; background-repeat: no-repeat; } .ace_gutter-cell.ace_error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: 2px center; } .ace_gutter-cell.ace_warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); background-position: 2px center; } .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); } .ace_scrollbar { position: absolute; right: 0; bottom: 0; z-index: 6; } .ace_scrollbar-inner { position: absolute; cursor: text; left: 0; top: 0; } .ace_scrollbar-v{ overflow-x: hidden; overflow-y: scroll; top: 0; } .ace_scrollbar-h { overflow-x: scroll; overflow-y: hidden; left: 0; } .ace_print-margin { position: absolute; height: 100%; } .ace_text-input { position: absolute; z-index: 0; width: 0.5em; height: 1em; opacity: 0; background: transparent; -moz-appearance: none; appearance: none; border: none; resize: none; outline: none; overflow: hidden; font: inherit; padding: 0 1px; margin: 0 -1px; text-indent: -1em; -ms-user-select: text; -moz-user-select: text; -webkit-user-select: text; user-select: text; white-space: pre!important; } .ace_text-input.ace_composition { background: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; word-wrap: normal; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid; transform: translatez(0); } .ace_slim-cursors .ace_cursor { border-left-width: 1px; } .ace_overwrite-cursors .ace_cursor { border-left-width: 0; border-bottom: 1px solid; } .ace_hidden-cursors .ace_cursor { opacity: 0.2; } .ace_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { position: absolute; z-index: 3; } .ace_marker-layer .ace_selection { position: absolute; z-index: 5; } .ace_marker-layer .ace_bracket { position: absolute; z-index: 6; } .ace_marker-layer .ace_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: 11px; margin-top: -2px; vertical-align: middle; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); background-repeat: no-repeat, repeat-x; background-position: center center, top left; color: transparent; border: 1px solid black; border-radius: 2px; cursor: pointer; pointer-events: auto; } .ace_dark .ace_fold { } .ace_fold:hover{ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); } .ace_tooltip { background-color: #FFF; background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); color: black; max-width: 100%; padding: 3px 4px; position: fixed; z-index: 999999; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; cursor: default; white-space: pre; word-wrap: break-word; line-height: normal; font-style: normal; font-weight: normal; letter-spacing: normal; pointer-events: none; } .ace_folding-enabled > .ace_gutter-cell { padding-right: 13px; } .ace_fold-widget { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -12px 0 1px; display: none; width: 11px; vertical-align: top; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: center; border-radius: 3px; border: 1px solid transparent; cursor: pointer; } .ace_folding-enabled .ace_fold-widget { display: inline-block; } .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); } .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); } .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); } .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } .ace_dark .ace_fold-widget { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); } .ace_dark .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget:hover { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.1); } .ace_dark .ace_fold-widget:active { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; transition: opacity 0.05s ease 0.05s; opacity:1; } .ace_underline { text-decoration: underline; } .ace_bold { font-weight: bold; } .ace_nobold .ace_bold { font-weight: normal; } .ace_italic { font-style: italic; } .ace_error-marker { background-color: rgba(255, 0, 0,0.2); position: absolute; z-index: 9; } .ace_highlight-marker { background-color: rgba(255, 255, 0,0.2); position: absolute; z-index: 8; } .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} .ace_br4 {border-bottom-right-radius: 3px;} .ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} .ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} .ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} .ace_br8 {border-bottom-left-radius : 3px;} .ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} .ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} .ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} ';r.importCssString(g,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top), +this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(0>t||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,i=this.session.documentToScreenRow(t,0)*e.lineHeight;return i-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),y=w+v,A=this.lineHeight;w=e.screenToDocumentRow(w,0);var C=e.getFoldLine(w);C&&(w=C.start.row),m=e.documentToScreenRow(w,0),g=e.getRowLength(w)*A,y=Math.min(e.screenToDocumentRow(y,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(y)*A+g,c=this.scrollTop-m*A;var E=0;return this.layerConfig.width!=o&&(E=this.CHANGE_H_SCROLL),(a||p)&&(E=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:m,lastRow:y,lineHeight:A,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/A)),height:this.$size.scrollerHeight},E},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||to?(t&&l+s>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(ri;++i)r.push(o(i/this.STEPS,e,t-e));return r},this.scrollToLine=function(e,t,i,n){var r=this.$cursorLayer.getPixelPosition({row:e,column:0}),o=r.top;t&&(o-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(o),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var r=this.$scrollAnimation.steps;if(r.length&&(e=r[0],e==i))return}var o=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:o},clearInterval(this.$timer),n.session.setScrollTop(o.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){o.length?(n.session.setScrollTop(o.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(i.cssClass){r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(v.prototype),o.defineOptions(v.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(66),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(f){if(!(f instanceof window.DOMException))throw f;var d=this.$workerBlob(o),p=window.URL||window.webkitURL,m=p.createObjectURL(d);this.$worker=new Worker(m),p.revokeObjectURL(m)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function r(e){var t=e.domEvent,i=t.altKey,r=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,d=e.editor,u=d.selection,f=d.inMultiSelectMode,p=e.getDocumentPosition(),m=u.getCursor(),g=e.inSelection()||u.isEmpty()&&n(p,m),v=e.x,w=e.y,y=function(e){v=e.clientX,w=e.clientY},A=d.session,C=d.renderer.pixelToScreenCoordinates(v,w),E=C;if(d.$mouseHandler.$enableJumpToDef)a&&i||l&&i?h=r?"block":"add":i&&d.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add", +!f&&r)return}else i&&d.$blockSelectEnabled&&(h="block");if(h&&s.isMac&&t.ctrlKey&&d.$mouseHandler.cancelContextMenu(),"add"==h){if(!f&&g)return;if(!f){var b=u.toOrientedRange();d.addSelectionMarker(b)}var F=u.rangeList.rangeAtPoint(p);d.$blockScrolling++,d.inVirtualSelectionMode=!0,r&&(F=null,b=u.ranges[0]||b,d.removeSelectionMarker(b)),d.once("mouseup",function(){var e=u.toOrientedRange();F&&e.isEmpty()&&n(F.cursor,e.cursor)?u.substractPoint(e.cursor):(r?u.substractPoint(b.cursor):b&&(d.removeSelectionMarker(b),u.addRange(b)),u.addRange(e)),d.$blockScrolling--,d.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),d.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=d.renderer.pixelToScreenCoordinates(v,w),t=A.screenToDocumentPosition(e.row,e.column);n(E,e)&&n(t,u.lead)||(E=e,d.$blockScrolling++,d.selection.moveToPosition(t),d.renderer.scrollCursorIntoView(),d.removeSelectionMarkers(S),S=u.rectangularRangeBlock(E,C),d.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=d.$mouseHandler.$clickSelection.clone()),S.forEach(d.addSelectionMarker,d),d.updateSelectionMarkers(),d.$blockScrolling--)};d.$blockScrolling++,f&&!l?u.toSingleRange():!f&&l&&(x=u.toOrientedRange(),d.addSelectionMarker(x)),r?C=A.documentToScreenPosition(u.lead):u.moveToPosition(p),d.$blockScrolling--,E={row:-1,column:-1};var D=function(e){clearInterval(B),d.removeSelectionMarkers(S),S.length||(S=[u.toOrientedRange()]),d.$blockScrolling++,x&&(d.removeSelectionMarker(x),u.toSingleRange(x));for(var t=0;t1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;o>d;d++)c.push(this.getLineRange(d,!0));h=this.getLineRange(o,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(n,r);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.columns&&(s=0),0>h&&(h=0),h==d&&(i=!0);for(var u=h;d>=u;u++){var f=l.fromPoints(this.session.screenToDocumentPosition(u,s),this.session.screenToDocumentPosition(u,a));if(f.isEmpty()){if(p&&r(f.end,p))break;var p=f.end}f.cursor=o?f.start:f.end,n.push(f)}if(c&&n.reverse(),!i){for(var m=n.length-1;n[m].isEmpty()&&m>0;)m--;if(m>0)for(var g=0;n[g].isEmpty();)g++;for(var v=m;v>=g;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;ne?a.unshift(a.pop()):a.push(a.shift());for(var r=n.length;r--;){var o=n[r],s=o.clone();t.replace(o,a[r]),o.start.row=s.start.row,o.start.column=s.start.column}},this.selectMore=function(e,t,i){var r=this.session,o=r.multiSelect,s=o.toOrientedRange();if(!s.isEmpty()||(s=r.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!i)){var a=r.getTextRange(s),l=n(r,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,r=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&r.length!=i.length-1){r.forEach(function(e){t.substractPoint(e.cursor)});var o=0,s=1/0,a=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),r=n.substr(i.column).search(/\S/g);return-1==r&&(r=0),i.column>o&&(o=i.column),s>r&&(s=r),r});i.forEach(function(t,i){var n=t.cursor,r=o-n.column,c=a[i]-s;r>c?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,m=this.session.getLength();do p=this.session.getLine(d);while(/[=:]/.test(p)&&++d0);0>h&&(h=0),d>=m&&(d=m-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,f),this.session.insert({row:h,column:0},g.join("\n")+"\n"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=/\S/,o=e.getLine(t),s=o.search(r);if(-1!=s){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++t=d)break;h=t}}if(h>c){var u=e.getLine(h).length;return new n(c,a,h,u)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter { background: #f0f0f0; color: #333; } .ace-tm .ace_print-margin { width: 1px; background: #e8e8e8; } .ace-tm .ace_fold { background-color: #6B72E6; } .ace-tm { background-color: #FFFFFF; color: black; } .ace-tm .ace_cursor { color: black; } .ace-tm .ace_invisible { color: rgb(191, 191, 191); } .ace-tm .ace_storage, .ace-tm .ace_keyword { color: blue; } .ace-tm .ace_constant { color: rgb(197, 6, 11); } .ace-tm .ace_constant.ace_buildin { color: rgb(88, 72, 246); } .ace-tm .ace_constant.ace_language { color: rgb(88, 92, 246); } .ace-tm .ace_constant.ace_library { color: rgb(6, 150, 14); } .ace-tm .ace_invalid { background-color: rgba(255, 0, 0, 0.1); color: red; } .ace-tm .ace_support.ace_function { color: rgb(60, 76, 114); } .ace-tm .ace_support.ace_constant { color: rgb(6, 150, 14); } .ace-tm .ace_support.ace_type, .ace-tm .ace_support.ace_class { color: rgb(109, 121, 222); } .ace-tm .ace_keyword.ace_operator { color: rgb(104, 118, 135); } .ace-tm .ace_string { color: rgb(3, 106, 7); } .ace-tm .ace_comment { color: rgb(76, 136, 107); } .ace-tm .ace_comment.ace_doc { color: rgb(0, 102, 255); } .ace-tm .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191); } .ace-tm .ace_constant.ace_numeric { color: rgb(0, 0, 205); } .ace-tm .ace_variable { color: rgb(49, 132, 149); } .ace-tm .ace_xml-pe { color: rgb(104, 104, 91); } .ace-tm .ace_entity.ace_name.ace_function { color: #0000A2; } .ace-tm .ace_heading { color: rgb(12, 7, 255); } .ace-tm .ace_list { color:rgb(185, 6, 144); } .ace-tm .ace_meta.ace_tag { color:rgb(0, 22, 142); } .ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0) } .ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255); } .ace-tm.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px white; } .ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0); } .ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101); } .ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192); } .ace-tm .ace_marker-layer .ace_active-line { background: rgba(0, 0, 0, 0.07); } .ace-tm .ace_gutter-active-line { background-color : #dcdcdc; } .ace-tm .ace_marker-layer .ace_selected-word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250); } .ace-tm .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; } ';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;o>a;a++)i[a]&&(i[a].hidden=s);i[o]&&(s?i[r]?i[o].hidden=s:i[r]=i[o]:(i[r]==i[o]&&(i[r]=void 0),i[o].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var r=t.splice(i+1,n);r.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var o=new Array(n);o.unshift(i,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var r=1/0,o=0;oa&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;o>=s;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;r>=n;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(0>s))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);0>o&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&0>i&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do s=r[o+=i];while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do l[0>i?"unshift":"push"](s),s=r[o+=i];while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=m+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var g=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(u.destroy(),{command:"null"})};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; } ","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,i){ +"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),r=e("./lib/event"),o=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new o(new l(e));h.setSession(c);var d={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),r.addListener(window,"resize",d.onResize),h.on("destroy",function(){r.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.3"}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t){(function(t){function i(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var i=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(e,t){var n=new i,r=t.endings,o=t.type;if(r)for(var s=0,a=e.length;a>s;++s)n.append(e[s],r);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return o?n.getBlob(o):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,o=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:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",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:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(o,r),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),r=i.match(/^(\s*\})/);if(!r)return 0;var o=r[1].length,s=e.findMatchingBracket({row:t,column:o});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var m=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var g="";f.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!g)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var y=w+r.getTabString();return{text:"\n"+y+"\n"+w+g,selection:[1,y.length,1,y.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);var a=r.doc.getLine(o.start.row),l=a.substring(o.end.column,o.end.column+1);if("}"==l)return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(")"==a)return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if("]"==a)return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),m=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var g,v=p&&/string|escape/.test(p.type),w=!m||/string|escape/.test(m.type);if(f==o)g=v!==w;else{if(v&&!w)return null;if(v&&w)return null;var y=n.$mode.tokenRe;y.lastIndex=0;var A=y.test(h);y.lastIndex=0;var C=y.test(h);if(A||C)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;g=!0}return{text:g?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(a==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),r=e("../../range").Range,o=e("./fold_mode").FoldMode,s=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)))};n.inherits(s,o),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,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var r=this._getFoldWidgetBase(e,t,i);return!r&&this.startRegionRe.test(n)?"start":r},this.getFoldWidgetRange=function(e,t,i,n){var r=e.getLine(i);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,i);var o=r.match(this.foldingStartMarker);if(o){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],i,s);var a=e.getCommentFoldRange(i,s+o[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var o=r.match(this.foldingStopMarker);if(o){var s=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),o=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new r(s,n,h,t.length):void 0}}.call(s.prototype)}),ace.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/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var r=t.match(/^.*[\{\(\[]\s*$/);r&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(68),"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(d.prototype),t.Mode=d})},function(e,t){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n\x0B\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; +},function(e,t){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var r=n.createElement("div");r.innerHTML=c,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)})}])}); //# sourceMappingURL=jsoneditor.map \ No newline at end of file diff --git a/package.json b/package.json index 67c9ae1..ab3bced 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "5.3.0", + "version": "5.4.0", "main": "./index", "description": "A web-based tool to view, edit, format, and validate JSON", "tags": [